如果你已经让 OpenClaw 能够正常收发消息、接通信道,并且开始掌握 Skill 编写,那么接下来最常见的问题往往不是“它会不会回答”,而是:
为什么它每次对话都像第一次认识我?
许多 Agent 产品把这种现象解释为“长记忆”缺失。但在 OpenClaw 中,这个问题的答案非常务实:
关键在于——什么信息被写到了哪里,以及这些信息能否被稳定地找回。
本篇不先讲解抽象概念,而是带你亲手搭建一个最小的记忆闭环。
一、先明确本篇起点与完成目标
你的起点状态
- OpenClaw 已在本机稳定运行
- 你已能与 Agent 正常对话
- 你希望它记住一些长期偏好,避免每次重复说明
本篇完成标志
阅读结束后,你应该能回答以下 3 个核心问题:
- 哪些信息应该写入
MEMORY.md - 哪些信息应该写入
memory/YYYY-MM-DD.md - 为什么 session 不等于 memory
二、先动手搭建一个最小记忆闭环
先不要急着研究 embedding 和搜索参数,我们先做一个简单但非常实用的练习。
练习目标:让 Agent 同时记住两类信息:一个长期偏好,和一个仅属于今天的短期进展。
举例说明,你可以在私有会话中明确告知 Agent:
- 长期偏好:
以后帮我撰写技术文章时,先给出结论,再提供原因,不使用夸张标题。 - 当天进展:
今天我要将 OpenClaw 第 4 篇和第 5 篇重写成更适合新手阅读的版本。
接下来,验证两个关键点:
- 新开一个私有 session 后,询问“我写技术文章时有什么固定偏好?”
- 再问“我今天在推进什么任务?”
你希望看到的结果不是逐字复述,而是:长期偏好能被更稳定地检索到,当天进展更像短期上下文,主要从 daily log 中召回。当这两个层次开始清晰分离,说明你已经在使用真正的记忆系统,而不是单纯依赖模型上下文硬背。
三、OpenClaw 的记忆并非抽象概念,而是文件
官方 memory 文档的核心思想很直接:OpenClaw 记忆的事实来源是 agent workspace 中的 Markdown 文件。
默认布局包含两层:
memory/YYYY-MM-DD.md:每日记事,采用追加写入方式,session 启动时通常会读取今天和昨天。MEMORY.md:长期、整理后的记忆,适合存放稳定偏好、规则和长期事实,默认仅在主私有会话中加载,不会进入群聊上下文。
这正是 OpenClaw 与记忆型产品最大的区别之一:你不是把“记忆”交给一个看不见的黑盒,而是将其落实到你可以查看、编辑和备份的文件上。
四、何时写入 MEMORY.md,何时写入 daily log
你可以用一个最简单的判断标准:
写入 MEMORY.md:长期偏好、不频繁变化的事实、反复使用的约定。
写入 memory/YYYY-MM-DD.md:今天讨论的内容、某个任务的临时进展、尚未沉淀为长期规则的信息。
如果一句话必须帮你快速判断,那就是:三天后大概率仍然成立的内容,优先考虑 MEMORY.md;仅对今天及最近几天有意义的信息,优先写入 daily log。
五、Agent 如何读取这些记忆
OpenClaw 当前提供两个关键工具:
memory_search:用于语义检索相关记忆片段。memory_get:用于精确读取某个 Markdown 文件或指定范围。
一个非常实用的细节:如果文件尚不存在,memory_get 不会直接抛出 ENOENT,而是优雅地返回空内容。这意味着“今天还没有任何记录”会被当作正常情况处理,不会导致整个流程报错中断。
六、Compaction 前为何还要提示模型写入记忆
OpenClaw 的记忆设计中,还有一个容易被低估的机制:pre-compaction memory flush。
简单来说:当 session 即将达到 auto-compaction 阈值时,OpenClaw 会触发一个静默 agent turn,提醒模型在压缩上下文之前,将值得保留的长期信息写入 memory。
这个机制实际解决了三个工程问题:
- 上下文被压缩时,不会把重要信息直接丢弃
- 长期记忆能够从会话缓存沉淀到磁盘文件
- 记忆沉淀不完全依赖人工每次手动提醒
默认提示通常鼓励模型在不需要回应用户时返回 NO_REPLY,因此用户通常不会察觉到这次静默刷新。
七、记忆检索并非只有向量检索
许多文章一提到 memory search 就只谈 embedding。OpenClaw 将这件事做得更精细:
- 支持向量检索:可对
MEMORY.md和memory/*.md建立索引。 - 支持 hybrid search:不仅看向量相似度,还可混入文本检索信号。
- 支持 MMR 去重:当 daily note 数量多且内容高度相似时,MMR 能减少“搜出来的全是类似片段”的问题。
- 支持 temporal decay:旧记录会因时间衰减而在排序中降低权重,确保昨天的新记录不会被半年前的旧内容压制。
这说明 OpenClaw 在记忆检索中真正关注的是:相关性、多样性和时效性。
八、Session 与记忆的边界不能混淆
这是新手最容易混淆的一点。
session 更像是当前会话的运行容器,包含消息历史、tool 结果和生命周期事件。memory 则是跨 session 的长期沉淀。官方文档也提到,session transcript 可以实验性地纳入 memory_search 索引,但那是 opt-in 能力,而且仍应将磁盘访问视为信任边界。
因此更稳妥的理解是:session 是运行轨迹,memory 是沉淀后的长期知识。不要将所有 session 内容都当作长期记忆,否则检索迟早会被污染。
九、真正该先学会的,不是 embedding 参数,而是记忆纪律
如果你想把 OpenClaw 的记忆用好,关键不是先研究 provider,而是先建立这套判断标准:
- 什么信息值得长期保留
- 什么信息只是当天的上下文
- 哪些旧信息应该被时间衰减
- 哪些记忆只应出现在私有场景,不能进入群聊上下文
换句话说:会话只是活水,记忆才是水库。
十、给新手的记忆检查清单
如果你今天就想判断自己是否用对了记忆系统,可以对照以下 5 项:
- 我是否将长期偏好写入了
MEMORY.md - 我是否将当天进展记录到了 daily log
- 我是否在新 session 中验证过这些信息能否被找回
- 我是否避免将群聊内容直接当作长期记忆
- 我是否将 session 和 memory 视为两个不同的层次
做到这些,再去研究 embedding、hybrid search 和 compaction 参数,顺序才是正确的。
十一、本篇之后,你应建立什么认知
至此,你应该将 OpenClaw 的记忆理解为:它不是“模型突然记住了你”,而是系统将长期信息稳定地写入文件,并在合适的时候将其找回。
下一篇,我们将从单个 agent 继续前行,探讨一个 Gateway 如何同时托管多个隔离 agent。
参考链接
- Memory:https://docs.openclaw.ai/concepts/memory
- Multi-Agent Routing:https://docs.openclaw.ai/concepts/multi-agent
- Agent Loop:https://docs.openclaw.ai/concepts/agent-loop
这一篇属于 OpenClaw 系列的「进阶」阶段。
上一篇:OpenClaw Skill 实战:写一个真正可用的 SKILL.md
下一篇:OpenClaw 多 Agent 路由:一个 Gateway 如何托管多套工作人格
