如何给 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 update 和 qmd 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 update 和 qmd 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 !
赏
评论
  目录