OpenClaw记忆机制:Agent持久化会话深度评测
你已经让 OpenClaw 能够回复消息、接入通道并编写 Skill 后,接下来最常遇到的困惑往往不是“它能不能回答”,而是——
为什么每次对话都像第一次认识你。
很多 Agent 产品把这个能力包装成“长记忆”。但在 OpenClaw 里,问题的本质非常直接:
数据被写在了哪里,以及能否稳定地被系统检索到。
本篇不先铺陈抽象概念,而是带你快速搭建一个最小化的记忆闭环。
一、明确本篇起点与验收标准
你的起点状态
- OpenClaw 已在本地稳定运行
- 已能与 Agent 进行正常对话
- 你希望它记住长期偏好,而不必每次重新交代
本篇完成标志
学完后,你应当能回答以下 3 个核心问题:
- 哪些信息应当写入
MEMORY.md - 哪些信息应当写入
memory/YYYY-MM-DD.md - 为什么 session 不等于 memory
二、先构建一个最小记忆闭环
不要急着研究 embedding 与搜索参数,先做一个简洁但立即可用的练习。
练习目标:让 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 更像是当前会话的运行容器,包含消息历史、工具结果和生命周期事件。而 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 如何托管多套工作人格