OpenClaw 的记忆系统

7 阅读3分钟

OpenClaw 的记忆系统设计得很特别,它把所有记忆都写成普通的 Markdown 文件,直接保存在 agent 的工作目录(workspace)里。模型本身不会在脑子里记东西,只有写到磁盘上的内容才会持久存在。

记忆文件的组织方式

OpenClaw 把记忆分成两层,结构很简单但很实用:

  1. 每天的日志文件(daily log):
    路径是 memory/YYYY-MM-DD.md(比如 memory/2026-03-28.md)。
    这是一个“只追加”的文件,用来记录当天的事情、运行中的上下文、临时笔记等。
    系统会在 session 开始时自动读取今天和昨天的日志,方便 agent 快速接上昨天的进度。

  2. 长期记忆文件
    文件名叫 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 已经很够用了。