如何给 OpenClaw 搭建一套「永不失忆」的记忆系统


如何给 OpenClaw 搭建一套「永不失忆」的记忆系统

原文来自 Cali Castle (@calicastle) 的 Twitter Article

从丢失两天记忆到三层自动化架构,一个完整的踩坑教程。

我的设置条件:

我的 AI Agent 失忆了

不是那种「哎呀我忘了你喜欢喝什么咖啡」的小失忆,是整整两天的对话、决策、action items,全部蒸发。

像你精心写了两天的文档,结果忘了按 Cmd+S。

事情是这样的:我用 OpenClaw 跑了一套 main agent + sub-agents 的系统,前三天一切丝滑,agent 记得我的偏好,知道项目进度,甚至能 reference 前天讨论的某个技术细节。

我当时觉得,这就是未来。

快进到第四天。

我问它:「昨天那个 Linear issue 的结论是什么?」

它一脸无辜:「我没有找到相关的上下文。」

两天的 context,没了。 因为 session 过期了,context window 刷新了,而我压根没有任何自动化的记忆捕获机制。

这挺蠢的。

这就像你雇了一个天才员工,但每天早上他走进办公室,都不记得昨天发生了什么。

所以我花了一个周末,搭了一套三层记忆系统。现在我的 agent 真的「永不失忆」了。以下是完整的搭建教程,你可以照着做,也可以直接把这篇文章喂给你的 agent 让它自己执行。

核心架构:三层记忆 + 语义搜索

OpenClaw 三层记忆系统架构

先说整体思路。其实记忆系统的设计跟做产品的信息架构很像。你需要不同粒度的信息层,每一层有自己的更新频率和生命周期。

我的方案是这样的:

  • Layer 1:Daily Context Sync — 每天自动捕获,粒度最细
  • Layer 2:Weekly Memory Compound — 每周知识蒸馏,去粗取精
  • Layer 3:Hourly Micro-Sync — 白天的安全网,防止遗漏
  • 底层:Vector Search — 语义检索,让 agent 能搜索自己的过去

MEMORY.md 是精华中的精华,保持精简,每个 session 启动时自动注入到 agent 的 context 里。memory/ 目录下的日志文件是原始素材,按需检索。

这个分层很关键。你不能把所有东西都塞进 context window,那是把整个图书馆搬进考场,不如带一张精心整理的 cheat sheet,需要查资料时再去翻书。

Layer 1:Daily Context Sync(每晚自动捕获)

这是整个系统的基石。每天晚上 11 点,一个 cron job 自动触发,spawn 一个独立的 agent(用 Sonnet,便宜够用),它会:

  1. 调用 sessions_list 拉取当天所有 session
  2. sessions_history 读取每个 session 的完整对话
  3. 蒸馏成一份结构化的日志,写入 memory/YYYY-MM-DD.md
  4. qmd updateqmd embed 重新索引向量搜索

几个要点:

  • sessionTarget 设成 isolated,这样记忆同步不会污染你的主 session
  • 用 Sonnet 而不是 Opus,因为这是个蒸馏任务,不需要最强的推理能力,省钱
  • 日志文件用结构化的 markdown 格式:## 标题分区,bullet points 列要点,这样后续的语义搜索效果更好

Layer 2:Weekly Memory Compound(每周知识复利)

日志是原始素材,但你不能让 agent 每次启动都读七天的日志,太长了,噪音太多。

所以每周日晚上 10 点,另一个 cron job 会触发「知识复利」流程:

  1. 读取本周全部 7 个日志文件
  2. 更新 MEMORY.md,提取新的偏好、决策模式、项目状态变化
  3. 剪枝,删除过时的信息
  4. 重新索引 qmd

我把这个叫「知识复利」是有原因的。每一周的蒸馏都会让 MEMORY.md 变得更精准、更懂你。

这种积累是指数级的。

Layer 3:Hourly Micro-Sync(安全网)

光有每晚的全量同步还不够。如果你下午三点做了一个重要决策,到晚上十一点才捕获,中间如果有其他 session 需要这个 context 怎么办?

所以我加了一层安全网,白天每隔几个小时做一次轻量级检查。

注意几个设计细节:

  • 不是每小时都跑,选了 10 点、1 点、4 点、7 点、10 点这五个时间段,覆盖工作时间
  • 它是 append 模式,不会覆盖之前的内容
  • 如果最近三小时没有什么有意义的活动,它什么都不做,安静退出
  • 不发通知,这层就是个安静的安全网,你甚至感知不到它的存在

底层:Vector Search(语义搜索)

三层记忆解决了「写入」的问题,但「读取」同样关键。你不能让 agent 每次都读完所有文件,那也太慢太贵了。

这就是 qmd 的作用。它提供语义搜索能力,结合了 BM25 关键词搜索和 vector search 向量搜索,还有 reranking。

它会在所有记忆文件里搜索,返回最相关的片段。

关键配置是在 AGENTS.md 里写明规则,强制 agent 用搜索而不是暴力读取。就像你不会为了查一个单词把整本词典从头翻到尾,你直接查索引。

每次记忆写入后都要跑 qmd updateqmd embed 来保持索引新鲜。这就是为什么上面每个 cron job 的最后一步都有这两个命令。

效果怎么样

搭完这套系统之后,体感变化是立竿见影的。

以前每次新 session 开始,agent 都像个新来的实习生,什么都要重新解释。现在它启动就带着 MEMORY.md 的完整 context,知道我是谁,知道项目在什么阶段,知道上次讨论到哪了。

需要回忆更久远的细节?它会自动用 qmd 搜索,几秒钟就能找到三天前某次对话的具体结论。

最让我惊喜的是 weekly compound 的效果。跑了两轮之后,MEMORY.md 里关于我的工作习惯的描述准确得有点吓人。它甚至总结出了我 review 代码时的偏好模式,这些东西我自己都没明确意识到。

我的核心观点

搭完这套系统之后,我越来越相信一件事:

Memory infrastructure 比 agent intelligence 重要得多。

我们现在整个行业都在卷模型能力,更大的 context window,更强的推理,更快的响应。但其实,一个有完善记忆系统的普通模型,比一个失忆的顶级模型有用得多。

这跟人一样。一个记忆力好、做事有条理的普通人,长期表现往往好过一个聪明但丢三落四的天才。

所以如果你也在跑 OpenClaw 或者自建 AI agent,我的建议是:别急着换最新的模型,先把记忆基础设施搭好。 这是投资回报率最高的事情。

感谢 @ericosiu 关于 agent memory infrastructure 的文章,给了我最初的灵感。在他的框架基础上,我加了 hourly micro-sync 安全网和 vector search 语义检索层,适配了 OpenClaw 的 cron 和 isolated session 机制。站在巨人肩膀上,永远是最快的路。

这套系统我已经跑了一周,目前零失忆。


文章作者: Onefly
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Onefly !
评论
  目录