OpenClaw原生的记忆组件基于本地存储,不支持跨设备同步和跨会话记忆。通过集成Agentic Memory API作为云端记忆后端,可以为OpenClaw提供持久化的长记忆能力、语义检索和技能管理功能。
简介
@alicloud-ai-search/openclaw-memory是Agentic Memory针对OpenClaw设计的记忆插件,通过REST API实现语义记忆的存储、检索、更新和遗忘,同时支持技能的搜索、获取和上传。插件本身是一个轻量级HTTP客户端,所有事实提取、向量化和相似度检索均在服务端完成,无需本地安装原生依赖。
方案对比
维度 | OpenClaw原生方案 | Agentic Memory方案 |
存储后端 | 本地SQLite/LanceDB | Agentic Memory API云端服务 |
数据持久化 | 本地文件 | 云端持久化 |
跨设备同步 | 不支持 | 支持 |
跨会话记忆 | 不支持 | 支持 |
事实提取 | 需本地LLM处理 | 服务端自动提取 |
向量化与检索 | 需本地嵌入模型 | 服务端自动完成 |
技能管理 | 不支持 | 支持搜索、获取、上传、更新 |
异步存储 | 不支持 | 支持异步任务,可查询状态 |
本地依赖 | 需要原生依赖 | 仅需Node.js内置fetch |
方案架构
整体架构包含以下核心流程:
自动召回(Auto-Recall):用户发起新请求时,插件自动将用户输入作为查询发送到Agentic Memory API,检索相关记忆和技能,注入到Agent上下文中。
自动捕获(Auto-Capture):Agent执行完成后,插件自动提取对话中的用户和助手消息,发送到Agentic Memory API进行事实提取和存储。
主动工具调用(Agent Tools):Agent可通过五个内置工具(
memory_recall、memory_store、memory_update、memory_forget、memory_get)主动管理记忆。技能管理(Skill Management):支持搜索、获取、上传和更新可复用技能,技能文件可导出到本地供Agent使用。
用户输入
│
├──[Auto-Recall]──→ POST {prefix}/search ──→ Agentic Memory API ──→ 注入相关记忆到上下文
│
▼
Agent 执行
├── memory_recall ──→ POST {prefix}/search ──→ Agentic Memory API
├── memory_store ──→ POST {prefix}/memories ──→ Agentic Memory API (异步)
├── memory_update ──→ PUT {prefix}/memories/:id ──→ Agentic Memory API
├── memory_forget ──→ DELETE {prefix}/:id ──→ Agentic Memory API
└── memory_get ──→ GET {prefix}/:id ──→ Agentic Memory API
│
▼
Agent 完成
└──[Auto-Capture]──→ POST {prefix}/memories ──→ Agentic Memory API ──→ 提取并存储对话事实{prefix} = {baseUrl}/v3/openapi/workspaces/{workspace_name}/memory/{serviceId}
操作步骤
步骤一:开通Agentic Memory API服务并获取连接信息
登录AI搜索开放平台控制台,开通Agentic Memory API服务(开通AI搜索开放平台时自动开通)。
在控制台左侧导航栏选择智能问答 > API Key管理,获取以下信息:
API服务地址(baseUrl):格式为
http://<workspace-id>.platform-cn-shanghai.opensearch.aliyuncs.com,其中<workspace-id>为工作空间标识符(如default-xxx),可在控制台的API Key管理页面查看。API Key:用于接口认证的Bearer Token。
通过健康检查接口验证服务状态:
curl http://<baseUrl>/v3/openapi/workspaces/<workspace_name>/memory/agentic-memory/health预期返回:
{ "request_id": "...", "latency": 0, "status": "OK", "result": { "status": "healthy" } }
步骤二:安装插件
运行以下命令安装OpenClaw记忆插件。需要已安装OpenClaw且Node.js版本 >= 18(需支持内置fetch())。
openclaw plugins install @alicloud-ai-search/openclaw-memory该命令从npm公共注册表下载并安装插件。如果默认npm registry不是公共注册表(如使用了内部私有registry),可先手动下载插件包再本地安装:
npm pack @alicloud-ai-search/openclaw-memory --registry https://registry.npmjs.org
openclaw plugins install ./alicloud-ai-search-openclaw-memory-0.1.0.tgz步骤三:配置插件参数
编辑~/.openclaw/openclaw.json,在plugins.entries下添加openclaw-memory配置:
{
"plugins": {
"entries": {
"openclaw-memory": {
"enabled": true,
"config": {
"baseUrl": "http://<workspace-id>.platform-cn-shanghai.opensearch.aliyuncs.com",
"workspaceName": "default",
"apiKey": "YOUR_API_KEY_HERE"
}
}
}
}
}将<workspace-id>替换为步骤一中获取的工作空间标识符,workspaceName、YOUR_API_KEY_HERE替换为实际使用的空间名称和API Key。
配置参数说明:
参数 | 类型 | 默认值 | 是否必填 | 说明 |
| string | 是 | Agentic Memory API服务地址,从AI搜索开放平台控制台获取 | |
| string | 是 | 工作空间名称 | |
| string | 是 | API Key,用于接口认证 | |
| string |
| 否 | 记忆服务的Service ID |
| string | 如果不配置,将自动生成一个uuid,保存到:~/.openclaw/autogen-userid.txt。配置后自动生成的userid值被覆盖。 | 否 | 用户标识,用于区分不同用户的记忆 |
| string |
| 否 | Agent标识,用于将记忆和技能关联到特定Agent |
| boolean |
| 否 | 是否在Agent执行前自动召回相关记忆 |
| boolean |
| 否 | 是否在Agent执行后自动捕获对话并存储为记忆 |
| boolean |
| 否 | 是否在自动召回时同时检索技能 |
| boolean |
| 否 | 是否自动从对话中捕获技能(即将推出) |
| number |
| 否 | 每次自动召回的最大记忆数量 |
步骤四:启动或重启Gateway
配置完成后,需要启动(或重启)OpenClaw Gateway使配置生效。
如果Gateway已经在运行,执行重启命令:
openclaw gateway restart如果是首次配置Gateway(未启动过),需要先设置Gateway模式再启动:
openclaw config set gateway.mode local
openclaw gateway --port 18789启动成功后,日志中出现以下信息表示插件注册成功:
[openclaw-memory] Plugin registered (autoRecallMemory=true, autoCaptureMemory=true, autoRecallSkill=false, autoCaptureSkill=false, ...)验证记忆功能
对话测试
在OpenClaw中发送消息测试长记忆功能:
发送:
我叫小明,帮我记一下,我下周一早上十点有个会。等待回复,确认消息已处理。
发送新消息:
请介绍一下我。验证OpenClaw是否能回忆起名字和会议信息。
CLI命令
使用CLI命令直接与记忆服务交互:
# 搜索记忆
openclaw mem search "项目架构"
# 搜索记忆并包含技能结果
openclaw mem search "项目架构" --limit 10 --skill
# 根据ID获取记忆详情
openclaw mem get <memory_id>
# 删除指定记忆
openclaw mem forget <memory_id>
# 查询异步存储任务状态
openclaw mem task <task_id>Agent工具
在对话中可以直接触发Agent的记忆管理工具:
memory_recall(搜索记忆):发送
帮我搜索一下之前关于项目部署的记忆memory_store(存储记忆):发送
请记住:我的服务器IP是192.168.1.100,部署目录是/opt/appmemory_get(获取记忆详情):发送
帮我获取记忆 <memory_id> 的详细内容
工作原理
自动召回流程
当autoRecallMemory启用时,插件在before_agent_start事件中自动执行以下操作:
获取用户输入作为搜索查询。
向Agentic Memory API发送搜索请求,检索最多
recallLimit条相关记忆。如果autoRecallSkill启用,同时检索相关技能。将检索结果以XML格式注入到Agent上下文前部:
<relevant-memories> Relevant facts from long-term memory: - 用户名为小明 - 用户下周一早上十点有会议 Relevant skills: - skill-name: description of the skill </relevant-memories>
临时会话(session key以temp:开头)和启动提示会被自动跳过。
自动捕获流程
当autoCaptureMemory启用时,插件在agent_end事件中自动执行以下操作:
提取对话中的用户和助手消息。
过滤掉以下内容:
长度少于50字符的短消息
包含
<relevant-memories>的消息(防止反馈循环)启动提示(以
A new session was started via开头)临时会话的消息
将过滤后的消息发送到Agentic Memory API进行事实提取和异步存储。
REST API接口
插件通过以下REST接口与Agentic Memory API通信:
方法 | 路径 | 说明 |
GET |
| 健康检查 |
POST |
| 搜索记忆和技能 |
POST |
| 存储记忆(异步) |
PUT |
| 更新记忆 |
GET |
| 根据ID获取记忆或技能 |
DELETE |
| 删除记忆或技能 |
GET |
| 查询异步任务状态 |
PUT |
| 更新技能 |
{prefix} = {baseUrl}/v3/openapi/workspaces/{workspace_name}/memory/{serviceId}
常见问题
插件注册后日志无输出
检查~/.openclaw/openclaw.json中的plugins.slots.memory是否正确指向openclaw-memory,并确认enabled为true。plugins.slots.memory通常在安装插件时自动设置,如果缺失可手动添加:
{
"plugins": {
"slots": {
"memory": "openclaw-memory"
}
}
}搜索返回空结果
确认Agentic Memory API服务正常运行(通过健康检查接口验证)。
确认已有记忆被存储(通过
autoCaptureMemory自动捕获或memory_store工具手动存储)。查看OpenClaw日志中以
[openclaw-memory]开头的条目,其中包含所有API请求日志。
记忆存储后无法立即检索
记忆存储是异步操作,存储请求提交后会返回task_id。通过openclaw mem task <task_id>查询任务状态,确认存储任务已完成后再进行检索。
自动召回未触发
确认
autoRecallMemory设置为true。确认当前会话不是临时会话(session key不以
temp:开头)。确认用户输入不为空。
首次启动Gateway失败
如果执行openclaw gateway restart返回"Gateway service not loaded"错误,说明Gateway尚未初始化。按以下步骤操作:
openclaw config set gateway.mode local
openclaw gateway --port 18789