Concepts 导读

记忆不是黑盒,是磁盘上的 Markdown 文件

OpenClaw 的记忆就是 agent 工作区里的纯文本文件,没有隐藏状态。先搞清楚三个核心文件:MEMORY.md 存长期事实,每日笔记存上下文,DREAMS.md 可选。最易错的是 memory-wiki 插件不替换默认记忆插件,它只是额外加一层知识库,召回、晋升、做梦仍由 memory-core 控制。

先讲这一页到底在解决什么

记忆不是黑盒,是磁盘上的 Markdown 文件

OpenClaw 的记忆就是 agent 工作区里的纯文本文件,没有隐藏状态。先搞清楚三个核心文件:MEMORY.md 存长期事实,每日笔记存上下文,DREAMS.md 可选。最易错的是 memory-wiki 插件不替换默认记忆插件,它只是额外加一层知识库,召回、晋升、做梦仍由 memory-core 控制。

原文共 16 节,先看 Start Here 路径:/concepts/memory 查看官方原文

第一站

📝 Memory 的原料不是神秘数据库,而是普通 Markdown

原文开头说得很清楚:memory 就是工作区里的 Markdown 文件。文件本身就是事实来源。

📘

每日日志

memory/YYYY-MM-DD.md 像每天一本小日记,专门记当天发生的事。

🧾

长期记忆

MEMORY.md 像一本总笔记,放长期要保留的偏好、决定和事实。

📎

仓库在工作区里

这些文件都放在 agent workspace 下面,不是飘在云里等你猜。

🔎

文件就是证据

模型只有写进去的才算真正记住。没写到文件里的东西,只是这轮脑子里飘过一下。

第二站

📂 默认会读哪几本,原文也说得很朴素

OpenClaw 不是把整个仓库都翻出来,而是有一套默认会看的文件层级。

🗓 今天和昨天

默认会读今天和昨天的 daily log。这样一开始就能接上最近发生的事。

📌 长期总笔记

如果有 MEMORY.md,也会一起读。这样老偏好、老决定不会只躲在某一天的日志里。

🛠 配置像在做什么
  • plugins.slots.memory = "none":像直接把记忆管理员关掉,不再自动搜 memory。
  • agents.defaults.workspace:像告诉系统“仓库从哪一间屋子开始找”。
📌 这节真正想告诉你

memory 不是无限乱读。它只会按规则读默认范围,先把最近和最重要的拿出来。

第三站

🔍 找 memory,不是翻抽屉,而是有两把工具

原文给了两个 agent-facing 工具:一个用来搜,一个用来精读。它们都不是人类手工翻文件,而是给模型用的。

🔎

memory_search

像在仓库里问“有没有跟这个意思相近的旧记录”。它适合语义搜索,不一定非要一模一样的字。

📄

memory_get

像把某一页文件直接拿出来看。你可以指定文件和行号范围。

🧯

找不到也不炸

原文特别提到:文件不存在时会优雅返回空文本,不会直接报错炸掉流程。

🧠

这很像谁在干活

不是人类手动一页一页翻,而是让 memory 插件帮模型自己找。

第四站

✍️ 什么时候该写进 memory

原文给了很实用的规则:能长期影响后面工作的,就应该写进去,不要只记在当下会话里。

🧭 偏好

比如用户喜欢哪种风格、哪个称呼、哪个模板,这类东西就该放进长期记忆。

🧾 决定

做过什么选择、定过什么规则、以后要遵守什么约定,也应该记下来。

📌 别只留在脑子里

原文直接说:如果你想让东西真的留下,就得让 bot 写进 memory。只在对话里说过一遍,不算真的保存。

🛠 命令像在做什么

这页没有很重的命令操作,但核心动作就是“写文件”。比起记在心里,落到 MEMORY.md 或当天日志里更可靠。

第五站

🧹 接近压缩前,系统会轻轻提醒你先整理一份长期笔记

这段很像贴心小秘书:在上下文快满的时候,OpenClaw 会悄悄提醒模型,先把该留下的东西写进 memory,再去做压缩。

🔔

快满了会提醒

当会话快到 auto-compaction 附近时,系统会触发一个静默的提醒回合。

📝

先写长期的

提醒内容就是:把真正值得长期保留的东西写进 daily log 或总笔记。

🤫

通常不需要回话

原文说得很明确,这轮通常应该返回 NO_REPLY,让用户看不到多余噪音。

🏠

仓库得能写

如果 workspace 只读,这个提醒就会跳过。因为没地方写,也就没法存。

🛠 配置像在做什么
{
  agents: {
    defaults: {
      compaction: {
        reserveTokensFloor: 20000,
        memoryFlush: {
          enabled: true,
          softThresholdTokens: 4000,
          systemPrompt: "Session nearing compaction. Store durable memories now.",
          prompt: "Write any lasting notes to memory/YYYY-MM-DD.md; reply with NO_REPLY if nothing to store.",
        },
      },
    },
  },
}

第六站

🧠 Vector memory search 是“意思相近也能找到”的那种找法

原文最后一段说明 memory 不只是关键词查找,还能做语义搜索,像你在找“意思差不多的旧记录”。

🪄 语义搜索

不需要字面完全一样,只要意思接近,也可能搜出来。

🔀 混合搜索

还可以把关键词和语义一起用,既看意思,也看字面,找得更稳。

🧰 多种后端

OpenClaw 的默认 memory 插件支持多种 embedding 提供商和后端,不只一种办法。

📌 这节真正想告诉你

memory 不是单纯“存文件”,它还可以在需要时帮你把旧线索找回来。

最后总结

🎈 把 Memory 这页压成一句最好记的话

Memory 就是 OpenClaw 真正写进工作区的小仓库,平时能搜、能取、能写,快压缩前还会提醒你把重要东西先存好。

如果你下一页只想继续看一页,我建议接着看 /concepts/compaction/concepts/context。因为 memory 负责“存下来”,context 负责“这次带上来”,两页正好是一前一后。