给 OpenClaw 装上长期记忆:让 AI Agent 不再每次重新认识你
用一套完整的系统图和操作控制台,讲清 GBrain 如何接入 OpenClaw、形成自动召回与自动写入闭环,以及日常查询、同步、维护和排查方法。
本文目录 14 节 · 点击展开
很多人在长期使用 AI 助手后,都会遇到同一个问题:
昨天已经告诉它的事情,今天为什么又要重新解释?
一次性聊天只需要当前上下文;但维护博客、开发 Agent、管理自动化流程时,项目背景、历史决策、长期偏好和踩坑经验都需要持续保留。
所以我把 GBrain 接进了自己的 OpenClaw。目标不是多装一个搜索工具,而是让 Agent 形成两条真正可运行的闭环:
- 自动想起来:每次对话开始时,主动召回相关长期知识。
- 自动记下来:新消息进入后,判断哪些内容值得长期保存,并写回知识库。
聊天结束后,项目规则、历史决定和长期偏好容易散掉。
重要知识被保存,并在相关任务出现时重新注入上下文。
先看整体:它不是一个插件,而是一套双闭环系统
GBrain 不是另一个聊天机器人,也不是 OpenClaw 的替代品。
OpenClaw 负责理解目标、推理、调用工具和执行任务;GBrain 负责保存长期项目、历史决定、人物关系和可复用经验。两者之间还需要 Context Engine、Retrieval Reflex、MCP 和 Signal Detector 把读写链路连接起来。
理解问题 · 组织上下文 · 调用工具 · 执行任务 · 输出结果
当前会话、最近状态和轻量偏好。
项目、人物、公司、决定、经验和方法论。
让 Agent 搜索、读取、写入和查询长期知识。
只有自动召回和自动写入都经过真实行为测试,长期大脑才算成立。
为什么只安装 MCP 还不够?
我最开始也以为,安装 GBrain MCP,让 Agent 能搜索和写入知识,就已经完成接入。
实际只完成了最下面一层:Agent 可以主动使用工具。如果每次都要靠模型临时判断“现在是不是应该搜索 GBrain”,记忆仍然不稳定。
提供搜索、读取、查询和写入能力,但不会保证每轮对话自动调用。
解决:能不能操作长期知识在每轮上下文组装时识别当前问题,并主动注入相关长期知识。
解决:能不能自动想起来判断消息是否值得长期保存,在后台完成写入,不阻塞主 Agent 回复。
解决:能不能自动记下来今天帮我改一下这个标题通常不保存以后博客文章默认公开,除非明确要求草稿值得长期保存我最终采用的安装与接入路径
下面不是我第一次安装时的顺序,而是排除无效尝试后留下的稳定路径。每一步都带一个验证点,上一层没有通过,不进入下一层排查。
第一步:安装 GBrain,先确认 CLI 正常
GBrain 官方更推荐让 Agent 读取安装说明并执行。可以把下面这段直接交给能够访问网络和终端的 Agent:
Retrieve and follow the instructions at:
https://raw.githubusercontent.com/garrytan/gbrain/master/INSTALL_FOR_AGENTS.md
只安装 CLI 时,可以使用:
bun install -g github:garrytan/gbrain
gbrain doctor
这篇文章不是官方安装文档的复述。官方说明负责把 GBrain 装起来;这里重点记录它怎样进入现有 OpenClaw,并形成自动召回、自动写入和多会话稳定运行。
第二步:多会话场景直接使用 PostgreSQL 17
我最初使用 PGLite。单独运行 GBrain 没问题,但 OpenClaw 的 MCP runtime 会按 session 启动独立进程,多个 gbrain serve 可能同时争用一份数据库文件。
把共享状态交给数据库服务,不再让多个 session 争用同一个本地文件。
brew install postgresql@17 pgvector
brew services start postgresql@17
createdb gbrain
psql gbrain -c 'CREATE EXTENSION IF NOT EXISTS vector;'
gbrain init \
--url "postgresql://<user>@127.0.0.1:5432/gbrain" \
--no-embedding
我当前没有配置 Embedding,所以使用 --no-embedding。这不会影响关键词搜索、实体召回、MCP 查询和 Signal Detector 写入,只是暂时没有完整的向量语义检索。
我实际安装时还遇到一次版本兼容:当时 Homebrew 的 pgvector 扩展没有落到 PostgreSQL 16 的扩展目录,换成 PostgreSQL 17 后恢复正常。最终只保留一个数据库版本,避免两套服务同时占端口。
第三步:建立独立的 Brain Repo
长期知识没有直接塞进 OpenClaw workspace,而是单独保存在:
~/brain
mkdir -p ~/brain
cd ~/brain
git init
gbrain sources add brain --path ~/brain
gbrain sync --source brain --no-pull --no-embed
Agent 规则、Skill 和执行环境
长期知识的 Markdown 与 Git 仓库
索引、搜索和运行数据
我最终只保留一个明确的长期 source:brain。后面的 MCP 写入也必须明确落到这个 source。
第四步:接入 Retrieval Reflex 和 MCP
Retrieval Reflex 负责识别相关实体,MCP 负责让 Agent 主动搜索和写入。
gbrain integrations install retrieval-reflex \
--target ~/.openclaw/workspace
openclaw mcp add gbrain \
--command "$(command -v gbrain)" \
--arg serve \
--cwd ~/brain \
--env GBRAIN_SOURCE=brain
MCP 配置中最容易被忽略的不是 cwd,而是:
GBRAIN_SOURCE=brain
cwd=~/brain 不会自动保证所有写入都路由到 brain。没有明确 source 时,写入可能回退到 default。
{
"command": "/Users/<user>/.bun/bin/gbrain",
"args": ["serve"],
"cwd": "/Users/<user>/brain",
"env": {
"GBRAIN_SOURCE": "brain"
}
}
最后运行:
openclaw mcp doctor
我当时的真实结果是 gbrain: ok。
第五步:让 GBrain 真正成为 Context Engine
如果 OpenClaw 仍然使用 contextEngine = legacy,GBrain 只是一个可选工具,没有进入每轮上下文组装。
我最终使用的 slot 是:
{
"plugins": {
"slots": {
"memory": "memory-core",
"contextEngine": "gbrain-context"
}
}
}
我的本地桥接插件位于 ~/.openclaw/extensions/gbrain-context-engine,只负责三件事:
- 加载 GBrain 官方 Context Engine;
- 适配当前版本 OpenClaw 与 GBrain 的
prompt/messages参数差异; - 在
message_received上启动官方 Signal Detector。
这不是所有版本都要长期保留的代码。升级 OpenClaw 或 GBrain 后,应先检查上游是否已经原生解决,能删除桥接层就删除。
第六步:让 Signal Detector 通过系统事件自动运行
signal-detector/SKILL.md 里的 triggers: 只是 Skill 描述,不是 OpenClaw 的原生事件机制。在 AGENTS.md 中写“每条消息都启动 Signal Detector”也只是 Prompt 约束,不够稳定。
我最终使用宿主侧 message_received hook,在每条入站消息后启动隐藏子 Agent:
api.on('message_received', (event, ctx) => {
void runSignalDetector(event.content ?? '', ctx)
.catch((error) => api.logger.error(String(error)));
});
这里最重要的是 void:后台记忆任务继续运行,主 Agent 不等待它完成。
这才算自动记忆闭环真正成立。
日常怎么用:从状态、检索、写入到同步维护
接入完成后,最常见的问题不再是“怎么安装”,而是:
现在应该先敲哪条命令,才能判断知识库、检索和 OpenClaw 接入到底哪一层有问题?
下面把原命令手册合并成一套日常控制台。原则只有一个:先证明 GBrain 自己正常,再向上检查 OpenClaw。
statussearch / querycapture / linksync / embeddoctor / exportopenclaw mcpgbrain --version
gbrain status
gbrain stats
gbrain healthstatus 看 source、同步和嵌入状态。
stats 看页面、分块和链接数量,确认不是空库。
health 看孤立页、坏链接和过期嵌入等质量信号。
gbrain list --limit 10 --sort updated_desc
gbrain list --type concept --limit 20
gbrain list --tag openclaw --limit 20gbrain search "OpenClaw" --source brain --limit 10
gbrain search "品牌雷达" --limit 5gbrain query "OpenClaw 和 GBrain 分别负责什么?" --limit 5
gbrain query "最近有哪些 OpenClaw 配置变化?" --since 7d --recency strong --limit 10gbrain get concepts/brand-radar→backlinks / graph —depth 2gbrain capture "以后博客文章默认公开,除非明确要求草稿"
gbrain capture --file ./notes/openclaw-memory.md --slug operational/openclaw-memory --type notegbrain tag concepts/brand-radar openclaw
gbrain link projects/openclaw-memory concepts/gbrain --link-type uses --context "OpenClaw 使用 GBrain 作为长期知识层"
gbrain timeline-add projects/openclaw-memory 2026-07-25 "完成 GBrain 与 OpenClaw 接入验证"gbrain sources listgbrain sync —source brain —dry-rungbrain sync —source braingbrain search “确定存在的关键词” —limit 3gbrain sync —all —parallel 2gbrain sync —source brain —no-embedgbrain embed —stalegbrain sync —source brain —retry-failedgbrain history concepts/brand-radar
gbrain revert concepts/brand-radar <version_id>
gbrain delete concepts/brand-radar
gbrain get concepts/brand-radar --include-deletedgbrain doctor --fast
gbrain doctor
gbrain advisor
gbrain orphans --count
gbrain lint ~/brain
gbrain check-backlinks check ~/braingbrain export --dir ./gbrain-export
gbrain check-update --json
gbrain upgrade
gbrain dream --dry-run
gbrain dreamopenclaw mcp show gbrain —jsonopenclaw mcp doctor gbrain —probeopenclaw mcp probe gbrain —jsonopenclaw plugins inspect gbrain-context-engine —runtimeopenclaw config get plugins.slots.contextEngineopenclaw mcp reloadopenclaw gateway restartopenclaw gateway health出了问题,不要把所有故障都叫做“没生效”
很多现象看起来都像 GBrain 没有工作,但可能分别发生在 source、同步、检索、MCP、Context Engine 或 Signal Detector。正确排查方式不是反复重启,而是逐层拿证据。
- 01source 与同步证据:目标 source 存在,最近同步有记录
gbrain status - 02页面与检索证据:目标页面真实返回
gbrain search “确定存在的关键词” —limit 3 - 03数据库与质量证据:核心存储和检索检查正常
gbrain doctor —fast - 04MCP 传输证据:服务启动并完成握手
openclaw mcp doctor gbrain —probe - 05插件与 slot证据:插件 loaded,Context Engine 正确
slot = gbrain-context - 06自动召回行为证据:回答与日志都证明注入发生
新会话 + 独特事实
检查 Context Engine 是否切到 gbrain-context。
gbrain-context-engine 是插件;gbrain-context 才是 slot 值。
当前版本需要在插件边界把 prompt 临时补成 user message。
多 session 场景改用 PostgreSQL 17。
使用宿主侧 message_received hook。
MCP 必须设置 GBRAIN_SOURCE=brain,并真实检查 source_id。
处理文件入库、source、同步和搜索,不要反复改 OpenClaw 插件。
MCP 已能主动读写,重点检查插件、slot、Retrieval Reflex 和真实注入。
真正使用起来,会发生什么变化?
长期记忆最明显的价值,不是让模型突然变聪明,而是减少背景重复,让历史决定继续参与今天的判断。
每次重新说明博客定位、目录结构、视觉要求和默认发布规则。
相关任务出现时,自动召回写作偏好、历史改造和已确认决策。
为什么没选方案 A?之前遇到什么问题?这个设计怎样决定?
失败原因、方案取舍和后续边界可以在新会话中继续使用。
我现在故意没有开启的功能
当前系统已经可以正常体验,但我没有一次把所有功能开满。先稳定最小闭环,再决定是否增加更复杂的后台能力。
embedding_disabled = true关键词搜索、实体召回和 MCP 查询仍可使用。先观察基础召回质量,再决定是否需要完整语义检索。
Autopilot: not running先确认 GBrain 到底记了什么、召回是否准确,再增加后台维护循环。
最终验收:不要只看插件是否 loaded
配置完成后,我不会只看进程是否启动,而是按两条闭环做真实验收。
基础健康检查可以先运行:
openclaw health
openclaw mcp doctor
gbrain status
我当时的本机状态是:
GBrain 0.42.57.0
brain source: pages=1
Embedding: 0%
Autopilot: not running
MCP: gbrain ok
但这些只说明服务状态,真正重要的是行为。
新会话不主动要求搜索,提到已知实体时仍能看到历史知识。
发送长期观点后,主 Agent 先正常回复,不等待后台记忆完成。
几秒后 Signal Detector 完成捕获,数据库出现新页面。
真实检查 source_id = brain,不只相信模型回复。
多个会话同时运行时,不再出现 PGLite 锁等待和 30 秒超时。
自动想起 + 自动记住,GBrain 才真正成为 OpenClaw 的长期大脑。
这套方案最终保留的原则很简单:先让最小闭环稳定,再增加复杂能力。