OpenClaw接入Agent Memory服务

更新时间:
复制为 MD 格式

本文介绍如何在 OpenClaw 中安装 @mem0/openclaw-mem0 插件,并通过 Mem0 兼容协议接入 AMS(Agent Memory Service)。接入后,OpenClaw 可以在对话前召回 AMS 中的记忆,也可以在对话后把有价值的会话内容写入 AMS。

前提条件

接入前需满足以下条件:

  • 已在 AMS 控制台添加 Agent 身份,并复制该 Agent 对应的 API Key。

  • 已在 AMS 控制台创建接入点,并获取接入点别名。

  • OpenClaw 已安装,Gateway 可正常启动。

  • 本地已安装 OpenClaw CLI,可执行 openclaw --version

  • OpenClaw 版本与 openclaw-mem0 插件版本匹配。不同版本的配置差异见版本兼容说明。

AMS Mem0 兼容地址按以下格式配置:

http://<接入点别名>:1995/mem0

其中 1995 为固定端口,/mem0 为 Mem0 兼容协议前缀。

接入信息说明

配置项

来源

说明

apiKey

AMS 控制台 Agent 身份管理页的 API Key

API Key 已绑定 Agent 身份,OpenClaw 配置中不需要再传 agent_id

baseUrl

AMS 接入点别名

格式为 http://<接入点别名>:1995/mem0

userId

业务侧自定义

记忆主体 ID。通常使用业务用户 ID、账号名或稳定的 OpenClaw 用户标识。

session

OpenClaw 会话

用于区分不同对话。验证自动采集时,建议固定一个 session。

版本兼容说明

  • 推荐版本:OpenClaw v2026.4.24 及以上版本,@mem0/openclaw-mem0 1.0.11

  • 旧版 OpenClaw 如 v2026.3.23 可使用 @mem0/openclaw-mem0 1.0.6 做兼容接入,具体见常见问题旧版 OpenClaw 如何接入

步骤一:安装插件

执行以下命令安装 OpenClaw Mem0 插件:

openclaw plugins install @mem0/openclaw-mem0

安装完成后查看插件信息:

openclaw plugins inspect openclaw-mem0

如需确认 OpenClaw 版本:

openclaw --version

步骤二:配置插件

在 OpenClaw 配置文件中启用 openclaw-mem0。配置文件通常位于:

~/.openclaw/openclaw.json

自动采集 session 对话时,建议使用 autoCaptureautoRecall。较新的 OpenClaw 版本需要在插件条目中加入 hooks.allowConversationAccess

{
  "plugins": {
    "slots": {
      "memory": "openclaw-mem0"
    },
    "entries": {
      "openclaw-mem0": {
        "enabled": true,
        "config": {
          "mode": "platform",
          "apiKey": "${MEM0_API_KEY}",
          "baseUrl": "http://<接入点别名>:1995/mem0",
          "userId": "openclaw-user",
          "autoCapture": true,
          "autoRecall": true,
          "topK": 5
        },
        "hooks": {
          "allowConversationAccess": true
        }
      }
    }
  }
}

配置说明:

参数

必填

说明

plugins.slots.memory

指定 OpenClaw 的记忆插件为 openclaw-mem0

mode

固定为 platform,通过 Mem0 兼容协议访问 AMS。

apiKey

AMS 控制台获取的 API Key。支持 ${MEM0_API_KEY} 形式引用环境变量。

baseUrl

AMS Mem0 兼容地址,必须包含固定端口 1995/mem0

userId

记忆主体 ID。相同 userId 下的记忆会被一起召回。

autoCapture

是否在 Agent 回复后采集对话内容。默认开启。

autoRecall

是否在 Agent 回复前召回相关记忆。默认开启。

topK

每次自动召回的最大记忆条数。

hooks.allowConversationAccess

允许插件读取当前 session 会话,用于自动采集。

环境变量示例:

export MEM0_API_KEY="<AMS API Key>"

步骤三:重启 Gateway

修改配置后,重启 OpenClaw Gateway:

openclaw gateway restart

验证配置文件格式:

openclaw config validate

查看插件连接状态:

openclaw mem0 status --json

返回结果中 connectedtrue,表示插件已连通 AMS:

{
  "ok": true,
  "mode": "platform",
  "connected": true,
  "userId": "openclaw-user"
}

步骤四:验证接入

验证 OpenClaw session 自动采集时,建议固定一个 session。全程使用同一个 session 对话,再用 /reset 触发当前 session 结束。

如果全程在 WebUI 中对话,可打开以下地址:

http://localhost:18789/chat?session=ams-openclaw-demo

如果使用 CLI 对话,再到 WebUI 中输入 /reset,需打开 CLI explicit session 对应的地址:

http://localhost:18789/chat?session=agent%3Amain%3Aexplicit%3Aams-openclaw-demo

其中 agent:main:explicit:ams-openclaw-demo 对应 CLI 的 --session-id ams-openclaw-demo

CLI 对话示例:

  openclaw agent --session-id ams-openclaw-demo \
  --message "最近在写 OpenClaw 接 AMS 的接入文档,里面有个小例子叫「南屏茶歇0527」。我想把步骤写得像平时聊天。" \
  --thinking off

自动采集使用 openclaw.json 中的 config.userId,本文示例为 openclaw-user

示例对话:

最近在写 OpenClaw 接 AMS 的接入文档,里面有个小例子叫「南屏茶歇0527」。我想把步骤写得像平时聊天:先聊几句,再打 /reset,然后看看记忆是不是进去了。
在同一个 session 中输入 /reset,选择 Reset the current session。不要通过新建 session 代替 /reset,新建 session 不会结束当前 session。
再补一句,这个例子里我想强调:baseUrl 用 AMS 控制台拿到的接入点别名,Mem0 地址后面带上 :1995/mem0,别写成本地测试地址。

在同一个 session 中输入 /reset,选择 Reset the current session。不要通过新建 session 代替 /reset,新建 session 不会结束当前 session。

随后在同一个 session 中换一个话题:

换个轻松点的话题。我周末可能就在西溪附近待半天,想找一个能喝咖啡、慢慢走路、但别太网红的地方。最好树多一点,人少一点,适合下午三四点过去。
刚才想了一下,周末半天我就定「花坞慢走0527」这个小计划:下午三点从西溪花坞入口进去,沿水边慢慢走,找家安静小店喝杯冰美式。我不想赶景点,树荫多、人少就好。
换个话题,周末计划先放一边。我晚上准备把 AMS QuickStart 里的 curl 示例再过一遍,主要看看 baseUrl 有没有写成控制台接入点别名加 :1995/mem0。

查看后台事件:

openclaw mem0 event list --json

事件状态为 SUCCEEDED,且 payload.messages 中包含本次 session 的对话内容,表示 autoCapture 已将会话发送到 AMS:

{
  "ok": true,
  "events": [
    {
      "event_type": "ADD",
      "status": "SUCCEEDED",
      "payload": {
        "user_id": "openclaw-user",
        "run_id": "<user_id_hash>_group"
      }
    }
  ]
}

如需确认长期记忆已经生成,可在事件成功后等待后台处理完成,再搜索对话中的稳定关键词:

openclaw mem0 search "花坞慢走0527" --user-id openclaw-user --top-k 5 --json

返回结果中包含对应关键词,表示 AMS 已完成记忆提取和检索索引写入:

[
  {
    "scope": "long-term",
    "categories": ["travel"],
    "memory": "用户选定「花坞慢走0527」计划..."
  }
]

插件提供的能力

自动能力

能力

说明

autoRecall

Agent 回复前,插件按当前输入从 AMS 召回相关记忆,并注入上下文。

autoCapture

Agent 回复后,插件把当前 session 中的对话内容发送到 AMS,由 AMS 处理是否生成记忆。

Agent 工具

插件会为 Agent 注册以下记忆工具:

工具

说明

memory_search

按自然语言搜索记忆。

memory_add

主动写入事实、偏好、决策等内容。

memory_get

按 ID 获取单条记忆。

memory_list

列出记忆。

memory_update

更新记忆文本。

memory_delete

删除记忆。

memory_event_list

查看平台模式下的后台事件。

memory_event_status

查看单个后台事件状态。

记忆写入工具与 autoCapture 的关系见常见问题对话后没有自动采集事件

CLI 命令

常用 CLI 命令如下:

# 检查连接
openclaw mem0 status --json

# 查看后台事件
openclaw mem0 event list --json
openclaw mem0 event status <event_id> --json

# 列出记忆
openclaw mem0 list --user-id openclaw-user --top-k 10 --json

# 搜索记忆
openclaw mem0 search "用户偏好" --user-id openclaw-user --top-k 5 --json

# 手动写入一条记忆
openclaw mem0 add "用户偏好:技术文档使用中文,并保持阿里云帮助中心风格。" --user-id openclaw-user --json

CLI 手动写入与 OpenClaw session 的关系见常见问题为什么 group_id 与 OpenClaw session 不一致

常见问题

API Key、userId 和 Agent ID 是什么关系

AMS 侧的 Agent 身份由 API Key 标识。OpenClaw 配置中不需要再传 agent_id

userId 用于区分记忆主体,通常使用业务用户 ID、账号名或稳定的 OpenClaw 用户标识。它不等同于 AMS 控制台里的 Agent ID。

插件连接状态为 false

检查以下配置:

  • apiKey 是否来自 AMS 控制台目标 Agent 身份。

  • baseUrl 是否为 http://<接入点别名>:1995/mem0

  • 接入点状态是否为运行中。

  • 当前网络是否能访问该接入点。

对话后没有自动采集事件

按以下顺序检查:

  • hooks.allowConversationAccess 是否已配置为 true

  • 不要开启 openclaw-mem0 skills 模式。

  • 验证时是否使用固定 WebUI session。CLI 对话配合浏览器 /reset 时,需使用 explicit session URL。

如果当前轮对话中 Agent 调用了 memory_addmemory_updatememory_delete,插件会跳过该轮 autoCapture,避免同一轮内容重复写入。此时 event list 中看到的可能是工具写入事件,不能用来判断 session 自动采集是否生效。

event list 有成功事件,但 listsearch 为空

event list 表示写入请求已进入 AMS 处理流程。listsearch 依赖最终生成的 memory。

常见原因有两类:

  • 对话还没有形成边界。可在同一 session 中换一个明显不同的话题,再发一轮普通对话。

  • 后台提取还未完成。边界触发后,AMS 仍需完成记忆提取、聚类和索引写入,通常等待几十秒后再检索。

先看 event list 是否有 ADD 且状态为 SUCCEEDED,再结合换主题后的检索结果判断是否生成了长期记忆。

为什么 group_id 与 OpenClaw session 不一致

AMS 使用 run_id/group_id 标识会话分组。未显式传入 run_id 时,AMS 会自动生成形如 <user_id_hash>_group 的会话分组。

验证 OpenClaw session 自动采集时,以 event list 中的 payload.messages 和事件状态为准。手动 openclaw mem0 add 适合验证 API 连通性,不适合判断 session 自动采集是否生效。

旧版 OpenClaw 如何接入

旧版 OpenClaw,如 v2026.3.23 可配合 @mem0/openclaw-mem@1.0.6 使用。该插件版本运行时代码支持 baseUrl,但 manifest 的 configSchema 未声明 baseUrl,配置前需要修改已安装插件的 manifest。

优先从插件市场安装:

openclaw plugins install @mem0/openclaw-mem0@1.0.6

插件市场限流或下载失败时,可先通过 npm 安装,再从本地目录安装:

npm install -g @mem0/openclaw-mem0@1.0.6
npm root -g
openclaw plugins install /path/to/node_modules/@mem0/openclaw-mem0

安装后修改以下文件:

~/.openclaw/extensions/openclaw-mem0/openclaw.plugin.json

configSchema.additionalProperties 改为 true,使 baseUrl 能通过 OpenClaw 配置校验。

OpenClaw v2026.3.23 尚未提供 hooks.allowConversationAccess 配置,配置中省略该字段。配置如下:

{
  "plugins": {
    "slots": {
      "memory": "openclaw-mem0"
    },
    "entries": {
      "openclaw-mem0": {
        "enabled": true,
        "config": {
          "mode": "platform",
          "baseUrl": "http://<接入点别名>:1995/mem0",
          "apiKey": "<AMS API Key>",
          "userId": "openclaw"
        }
      }
    }
  }
}