OpenClaw集成长记忆服务
OpenClaw是一款支持本地部署的多渠道AI助手框架,可接入WhatsApp、Telegram、飞书、iMessage等20+消息渠道,并通过插件机制扩展记忆、技能、工具能力。
本文介绍如何在OpenClaw中将AnalyticDB for PostgreSQL长记忆服务作为OpenClaw的持久化记忆后端,使Agent具备跨会话、跨设备的长期记忆能力。
应用场景
多渠道统一记忆:用户在Telegram上告知偏好,切换到飞书或iMessage后助手依然记得,所有渠道共享同一份长期记忆。
轻量端侧部署:客户端无需部署向量数据库或Embedding模型,事实提取、向量化、语义检索均由长记忆服务完成,OpenClaw实例资源占用更低。
多Agent记忆隔离:在OpenClaw的多Agent场景下,可为每个Agent配置独立的记忆命名空间,不同Agent之间互不串扰。
前提条件
已安装Node.js 22.19及以上版本(推荐Node 24 LTS)。
已安装OpenClaw 2026.4.24及以上版本(参考OpenClaw官方安装文档)。
已获取AnalyticDB for PostgreSQL长记忆服务的URL和API Key。
ADBPG长记忆插件基于Apache License 2.0开源协议,是上游@mem0/openclaw-mem0的衍生作品,针对AnalyticDB for PostgreSQL长记忆服务的接入做了最小化适配。本方案无需客户端部署任何向量数据库、Embedding模型或大语言模型,记忆管理的全部能力由服务端提供。
操作步骤
步骤一:安装OpenClaw和Memory插件
全局安装OpenClaw(如尚未安装)。
npm install -g openclaw@latest安装ADBPG长记忆插件。
openclaw plugins install @adbpg-ai/openclaw-mem0确认插件已被识别。
openclaw plugins list | grep openclaw-mem0输出中应能看到
Memory (Mem0) — ADBPG Build条目,状态为enabled。
OpenClaw的Memory插件以独占槽位方式工作。如果环境中已经安装了上游的@mem0/openclaw-mem0,请先卸载再安装ADBPG适配版:
openclaw plugins uninstall openclaw-mem0
openclaw plugins install @adbpg-ai/openclaw-mem0步骤二:配置openclaw.json
编辑配置文件~/.openclaw/openclaw.json,添加openclaw-mem0插件配置。
{
"plugins": {
"allow": ["openclaw-mem0"],
"slots": {
"memory": "openclaw-mem0"
},
"entries": {
"openclaw-mem0": {
"enabled": true,
"config": {
"mode": "platform",
"apiKey": "${ADBPG_API_KEY}",
"baseUrl": "${ADBPG_URL}",
"userId": "alice"
},
"hooks": {
"allowConversationAccess": true
}
}
}
}
}配置项说明
配置项 | 说明 |
| 必须设为 |
| 固定为 |
| AnalyticDB for PostgreSQL长记忆服务的API Key,建议通过 |
| |
| 用户标识,用于隔离不同用户的记忆。建议使用应用层的真实用户ID(如邮箱、UUID)。省略此字段时回退到当前操作系统用户名(例如 |
重启网关使配置生效:
openclaw gateway restart步骤三:验证基础记忆操作
OpenClaw提供了mem0命令行子命令,可直接对长记忆服务执行读写。
健康检查。
openclaw mem0 status记录一条偏好。
openclaw mem0 add "我每天早上喜欢喝一杯黑咖啡" --user-id alice预期输出:
Added 1 memory(s): : [ADD]语义检索。
openclaw mem0 search "饮品偏好" --user-id alice预期输出(命中刚刚记录的偏好):
[ { "id": "<memory-id>", "memory": "每天早上喝一杯黑咖啡", "score": 0.62, "scope": "long-term", "categories": ["preferences"] } ]列出当前用户的全部记忆。
openclaw mem0 list --user-id alice
AnalyticDB for PostgreSQL长记忆服务采用异步处理机制:记录操作返回PENDING状态表示已入队,服务端完成事实提取与向量化通常需要数秒。请避免在写入后立即检索同一条记忆。
步骤四:通过TUI对话验证端到端读写
openclaw tui提供Agent的本地终端对话界面。验证目标是:在TUI中产生的记忆,可以通过CLI命令读取和检索,确认长记忆服务的读写闭环。
前提
已为OpenClaw配置默认Agent模型,例如阿里云百炼
qwen-plus系列。如尚未配置,可执行:openclaw onboard --auth-choice qwen-standard-api-key-cn \ --modelstudio-standard-api-key-cn <your-dashscope-api-key>或参考OpenClaw模型配置文档。
已启动网关。
openclaw gateway restart
验证流程
打开TUI并与Agent对话。
openclaw tui输入一条偏好后退出TUI(
Ctrl+C或/exit):用户:我是个左撇子。 Agent:好的,我会记住这一点。等待异步处理(通常几秒内完成),然后在命令行查询。
# 列出当前命名空间下的所有记忆 openclaw mem0 list # 用与原话字面不重叠的query做语义检索 openclaw mem0 search "用手习惯"预期:
list返回值中包含一条由ADBPG从对话中抽取的fact;search使用与原话字面不同的查询能命中该条记忆,验证向量化语义检索生效。
TUI与CLI默认使用相同的
userId命名空间。若在openclaw.json中显式指定了userId,CLI命令需要通过--user-id <userId>参数传入相同的值;若未指定,两端均回退至当前操作系统用户名(如root)。Agent在每轮对话中会自动调用Memory插件:回答前从ADBPG检索相关记忆并注入到上下文(auto-recall),回答后从对话内容中抽取新事实写入ADBPG(auto-capture),无需用户显式调用工具。
使用记忆
自动提取与召回
完成上述配置后,无需任何额外操作。在TUI或任意已接入的消息渠道中与Agent对话时,插件会自动完成以下两件事:
抽取:当对话中出现可沉淀的用户信息(饮食偏好、编程习惯、项目背景、住所变化等),插件在
agent_end钩子触发后自动通过记忆提取接口,将对话送往AnalyticDB for PostgreSQL长记忆服务,由服务端LLM抽取结构化事实并向量化存入数据库。召回:下一轮对话开始时(
before_prompt_build钩子触发),插件会以当前用户输入为查询,通过记忆搜索接口从长记忆服务做语义检索,并将命中的记忆注入Agent的系统提示,使Agent天然具备跨会话的记忆能力,用户无需重复说明背景信息。
搜索记忆
openclaw mem0 search "杭州"返回与检索词在语义上相关的记忆条目,常用于排查写入是否生效或调试检索效果。
注意检索使用向量相似度,查询词与命中条目无需字面共词,例如查询“住宿偏好”即可命中“喜欢住民宿”一类记忆。
Agent工具
除自动钩子外,插件还为Agent注册了以下工具,使Agent可以在推理过程中显式调用:
工具 | 说明 |
| 按自然语言检索记忆,支持 |
| 显式存储一条事实。 |
| 按ID获取单条记忆。 |
| 列出当前用户/Agent的全部记忆。 |
| 更新已有记忆的文本内容。 |
| 删除单条或批量记忆。 |
命令行参考
# 健康检查
openclaw mem0 status
# 记忆操作
openclaw mem0 add "..." --user-id <uid>
openclaw mem0 search "..." --user-id <uid>
openclaw mem0 search "..." --user-id <uid> --scope long-term
openclaw mem0 list --user-id <uid>
openclaw mem0 get <memory_id>
openclaw mem0 update <memory_id> "..."
openclaw mem0 delete <memory_id>
openclaw mem0 delete --all --user-id <uid> --confirm
# 多Agent场景
openclaw mem0 search "..." --user-id <uid> --agent <agent-name>
openclaw mem0 list --user-id <uid> --agent <agent-name>FAQ
Q:为什么记录后立即检索查不到?
A:服务端采用异步处理机制,记录操作仅将任务入队,事实提取与向量化在后台完成(通常几秒内)。请在记录后等待一段时间再检索。
Q:可以同时启用OpenClaw的多个Agent,让每个Agent有独立的记忆吗?
A:可以。OpenClaw多Agent场景下,本插件会基于
session_key自动将不同Agent的记忆路由到独立的命名空间(<userId>:agent:<agentName>),无需额外配置。Q:如何关闭自动记忆功能,只通过工具调用手动管理记忆?
A:在插件配置中将
autoRecall和autoCapture置为false。Agent仍可通过memory_search、memory_add等工具显式操作记忆。