OpenClaw 的记忆系统设计得很特别,它把所有记忆都写成普通的 Markdown 文件,直接保存在 agent 的工作目录(workspace)里。模型本身不会在脑子里记东西,只有写到磁盘上的内容才会持久存在。
记忆文件的组织方式
OpenClaw 把记忆分成两层,结构很简单但很实用:
-
每天的日志文件(daily log):
路径是memory/YYYY-MM-DD.md(比如memory/2026-03-28.md)。
这是一个“只追加”的文件,用来记录当天的事情、运行中的上下文、临时笔记等。
系统会在 session 开始时自动读取今天和昨天的日志,方便 agent 快速接上昨天的进度。 -
长期记忆文件:
文件名叫MEMORY.md,放在 workspace 的根目录。
用来保存重要的、需要长期记住的东西,比如关键决定、用户偏好、重要事实等。
这个文件只会在私人 session(private session)里加载,在群聊之类的场景里不会自动读,避免信息泄露或混乱。
怎么跟记忆互动
Agent 主要通过两个工具来操作记忆:
-
memory_search:语义搜索。
它会在记忆文件里建立向量索引,用“意思”而不是精确关键词来查找相关内容。即使你换了说法,也能找到以前记的东西。支持混合搜索(向量 + 关键词),效果更好。 -
memory_get:直接读取指定文件或某几行内容。
如果文件不存在(比如今天还没写过日志),它也不会报错,而是安静地返回空内容,让 agent 自己处理。
这两个工具默认由 memory-core 这个插件提供。
什么时候该写记忆
这是一个很重要的使用原则,新手一定要注意:
- 重要、持久的东西 → 写到
MEMORY.md(决定、偏好、核心事实)。 - 日常笔记、正在进行的事情 → 写到当天的
memory/YYYY-MM-DD.md。
用户如果说“记住这个”,最好明确让 agent 写到文件里。写记忆是主动行为,不是自动的。
自动记忆刷新机制(很重要)
为了防止上下文窗口快满时(compaction 压缩前)重要信息丢失,OpenClaw 有一个自动刷新机制:
当 session 的 token 数量接近上限(默认计算公式是 contextWindow 减去一些保留 token 和软阈值)时,系统会在压缩前悄悄触发一次“agent 内部回合”。
这个时候,模型会被提示去把重要内容写到当天的日志文件里。它通常不会回复用户(返回 NO_REPLY),用户几乎感觉不到这个过程。
这个机制默认是开启的,可以在配置里调整阈值和提示词。如果 workspace 是只读模式,就不会触发。
搜索能力
记忆文件会自动建立向量索引,支持语义搜索。
给新人的小建议
- 把 OpenClaw 的记忆想象成一个“磁盘笔记本”:写进去才算数,不写就会丢。
- 养成让 agent 主动写记忆的习惯,尤其是重要决定或用户偏好。
- 长期记忆(MEMORY.md)要谨慎使用,只放真正需要一直记住的东西。
- 如果你想自定义记忆行为,可以换插件或调整配置,但默认的 memory-core 已经很够用了。