乐于分享
好东西不私藏

OpenClaw 三层记忆全拆解:你的 AI 是怎么“记住你”的?

OpenClaw 三层记忆全拆解:你的 AI 是怎么“记住你”的?

很多人用了 OpenClaw 好几个月,还不知道它的记忆是怎么运作的。这篇文章把三层记忆从原理到坑,彻底讲清楚。

先说一个反直觉的事

OpenClaw 的 AI 没有任何隐藏状态。

它不像你手机里的助手——没有后台悄悄记录你说的每句话,也没有什么神秘的”记忆云端”。它能”记住”你,只有一个原因:它把信息写进了文件。

官方文档里有句话说得很直接:

“模型只会记住已保存到磁盘的内容,不存在隐藏状态。”

文件即记忆,记忆即文件。这个设计让记忆系统变得透明、可控、可审计——但也因此,它比你想象的脆弱得多。

三层记忆是什么

OpenClaw 把记忆分成三个层级,每一层的”保质期”和”用途”都不一样。

第一层:工作记忆(Context Window)

这是 AI 在一次对话里能”看到”的所有内容。包括你说的话、工具输出、注入的文件……全都压缩在 context window 里。

容量取决于你用的模型,一般在 32k 到 200k tokens 之间。

它的本质是临时的。 对话结束,context 清空,什么都不剩。

这层记忆最快、最直接,但也最容易丢——如果没有触发写入,重要信息就随着对话一起消失了。

第二层:短期记忆(每日日志)

这是 OpenClaw 最有特色的设计之一。

每天,AI 会把当天发生的事写进一个日期命名的 Markdown 文件,格式是 memory/YYYY-MM-DD.md

下次打开对话,系统会自动加载今天和昨天的日志。也就是说,你昨天告诉 AI 的事,今天它还记得;但三天前的事,就不在它的默认视野里了。

memory/
├── 2026-04-19.md   ← 昨天的内容,自动加载
├── 2026-04-20.md   ← 今天的内容,自动加载
└── 2026-04-15.md   ← 5天前,不再自动加载

这层记忆适合记录当下进行中的项目状态、临时决策、今日待办——信息有一定的时效性,不需要永久保留。

第三层:长期记忆(MEMORY.md)

这是 OpenClaw 记忆系统的核心文件,也是最容易被忽视的一层。

MEMORY.md 保存的是跨会话的永久事实:你的偏好、项目规范、重要决策、AI 需要始终遵守的规则。

每次开启一个私信会话,系统都会自动把这个文件注入进来。只要写进去了,AI 在任何一次对话里都能”记得”。

典型的写入内容:

类别 示例
个人偏好 “我喜欢用 TypeScript,不用 JavaScript”
项目规范 “部署前必须确认 staging 测试通过”
历史决策 “数据库选用 PostgreSQL,原因是…”
AI 行为规则 “回复我时不要用’好的!’开头”

长期记忆有什么问题

MEMORY.md 是三层里最重要的,也是最容易翻车的。

问题一:没有硬性大小限制,但有隐性上限

官方文档没有说 MEMORY.md 有多大的文件大小限制。理论上,你可以无限往里写。

但有一个隐性约束:这个文件每次会话都会被注入到 context window 里

文件越大,消耗的 token 越多,留给真正对话的空间就越少。根据掘金技术博主的测试,系统默认配置里有两个软限制:

{
  "bootstrapMaxChars": 20000,     // 单文件最多注入 2 万字符
  "bootstrapTotalMaxChars": 150000 // 所有注入文件加起来最多 15 万字符
}

一旦 MEMORY.md 超过 bootstrapMaxChars(约 2 万字符,大概 1 万汉字),系统会截断注入内容,后面写的东西可能就看不见了。

所以 MEMORY.md 的正确使用姿势是:精炼、结构化,定期清理过时内容。

问题二:AI 不是每次都会主动写入

这是最常见的踩坑:对话里提到了重要信息,但 AI 没有写进文件。

原因有两个:

  1. 没有触发写入的时机——AI 在对话结束前才可能触发写入,如果你直接关掉窗口,就丢了
  2. 群组会话不加载 MEMORY.md——这个很多人不知道,群聊里的 AI 默认不会读长期记忆

解决方法:

  • 明确告诉 AI “记住这个”,或者在 AGENTS.md 里写好写入规则
  • 开启 Compaction 自动刷新(默认已开启),系统在压缩前会提醒 AI 保存

问题三:信噪比随时间下降

用久了之后,MEMORY.md 里会积累大量过时的、矛盾的信息。AI 开始困惑:这条规则还有效吗?这个项目进度是当前的吗?

这就是为什么 OpenClaw 引入了一个叫 Dreaming(梦境) 的实验性功能。

一个叫”做梦”的功能

Dreaming 是 OpenClaw 最有意思的功能之一。

它的逻辑是模仿人类的睡眠记忆巩固:在”后台”扫描短期记忆中的日志,对每条信息打分(分数基于重要性、被召回频率、信息多样性),只把分数够高的内容”提升”到 MEMORY.md。

每日日志 → Dreaming 扫描 → 打分 → 过阈值 → 写入 MEMORY.md
                                  ↓
                              不过阈值 → 自然过期

这样长期记忆里存的都是真正有价值的内容,而不是把每天的流水账都往里堆。

有一个审查出口:被提升的候选内容会先写入 DREAMS.md 供你人工复核,确认后再正式写入 MEMORY.md。

注意:Dreaming 默认关闭,需要手动启用。

检索:AI 怎么找到你之前说过的话

MEMORY.md 是每次都注入的,但历史每日日志呢?如果你想让 AI 找三周前的某条记录,靠什么?

memory_search——语义搜索工具。

即使你当时用的措辞和现在不一样,向量搜索也能匹配到相关内容。系统默认混合了两种检索方式:

检索方式 权重 优势
向量语义搜索 70% 意思相近但措辞不同时有效
BM25 关键词 30% 精确匹配代码、专有名词

还有一个时间衰减机制:日期越久的日志,检索权重越低。30 天前的记录,检索分数只剩一半。

这个衰减只针对日期格式的文件,MEMORY.md 不衰减。

三层记忆怎么用才对

一张表总结:

该写在哪里 什么内容 什么时候写
MEMORY.md 长期偏好、项目规范、必须记住的决策 明确说”记住这个”或定期整理时
每日日志 今天做了什么、临时决策、技术调研结论 AI 自动写,或对话后提醒
不要写的 API key、密码、临时计算结果 永远不要

最重要的一条:

“别依赖’心智笔记’,文件是唯一的真相。”

如果有什么重要的事,只在脑子里记着”这个 AI 应该知道”——它大概率不知道。

总结

OpenClaw 的记忆系统乍看简单,但细节很多:

  • 工作记忆:快但临时,对话结束即消失
  • 短期记忆:每日日志,自动加载今天+昨天
  • 长期记忆:MEMORY.md,每次会话注入,无硬性大小上限但有 2 万字符的注入软限制

长期记忆最容易翻车的三个地方:超出注入上限被截断、AI 忘记主动写入、信息积累后信噪比下降。

解决方案:开 Dreaming、配好 Compaction 自动刷新、定期手动整理 MEMORY.md。

记忆系统设计得再好,最终还是要靠用的人去维护。AI 能记住多少,取决于你告诉了它多少。

AI小2 出品 | 关注 AI Agent 工程实践