
AI 推荐
适合读者:希望 Agent 真正具备长期记忆,而不只是多轮对话上下文的实践者。
预计阅读:6 分钟
你将看到:
•OpenClaw 的记忆事实来源是磁盘上的 Markdown 文件。
•daily log、MEMORY.md、memory_search 和 compaction 构成完整记忆链路。
•长期记忆的关键不是 embedding,而是沉淀纪律和检索策略。


如果你已经让 OpenClaw 能回消息、能接通道、也开始会写 Skill,那接下来最常见的问题通常不是“它会不会回答”,而是:
它为什么每次都像第一次认识我。
很多 Agent 产品会把这件事说成“长记忆”。但在 OpenClaw 里,这个问题的答案非常务实:
什么被写到了哪里,什么又能被稳定找回来。
这一篇不先讲抽象概念,而是先带你建立一个最小记忆闭环。
1. OpenClaw 已经在本机稳定运行
2. 你已经能和 Agent 正常对话
3. 你开始希望它记住一些长期偏好,而不是每次重说
到最后,你应该至少能回答这 3 个问题:
1. 什么信息该写进 MEMORY.md
2. 什么信息该写进 memory/YYYY-MM-DD.md
3. 为什么 session 不等于 memory
先不要急着研究 embedding 和搜索参数,先做一个很小但非常实用的练习。
让 Agent 同时记住两类信息:
1. 一个长期偏好
2. 一个只属于今天的短期进展
例如,你可以在私有会话里明确告诉它:
• 长期偏好:以后帮我写技术文章时,先给结论,再给原因,不要用夸张标题。
• 当天进展:今天我要把 OpenClaw 第 4 篇和第 5 篇重写成更适合新手的版本。
然后你要验证两件事:
1. 新开一个私有 session 后,再问“我写技术文章时有什么固定偏好?”
2. 再问“我今天在推进什么事?”
你想看到的结果不是一字不差复述,而是:
• 长期偏好能更稳定地被找回来
• 当天进展更像短期上下文,主要从 daily log 里召回
如果这两个层次开始分开了,你就已经在用真正的记忆系统,而不是只靠模型上下文硬背。
官方 memory 文档的核心意思很直接:
OpenClaw memory 的事实来源是 agent workspace 里的 Markdown 文件。
默认布局里有两层:
1. memory/YYYY-MM-DD.md
• 每日记事
• 追加式写入
• session 启动时通常会读取今天和昨天
2. MEMORY.md
• 长期、整理过的记忆
• 更适合放稳定偏好、规则、长期事实
• 默认只在主私有会话里加载,不进群聊上下文
这也是 OpenClaw 和记忆型产品最大的差别之一:
你不是把“记忆”交给一个看不见的黑盒,而是把它落到自己能看到、能编辑、能备份的文件上。
MEMORY.md,什么时候写 daily log可以用一个最简单的判断:
MEMORY.md• 长期偏好
• 不会频繁变化的事实
• 反复会用到的约定
memory/YYYY-MM-DD.md• 今天讨论过什么
• 某个任务的临时进展
• 还没有沉淀成长期规则的信息
如果一句话必须马上帮你做判断,就是:
三天后大概率还成立的,优先考虑 MEMORY.md;只对今天和最近几天有意义的,优先写 daily log。
OpenClaw 当前暴露两个关键工具:
1. memory_search
• 用于语义检索相关记忆片段
2. memory_get
• 用于精确读取某个 Markdown 文件或指定范围
一个非常实用的细节是:如果文件还不存在,memory_get 不会直接抛 ENOENT,而是优雅返回空内容。
这意味着“今天还没有任何记录”会被当成正常情况处理,而不是让整个流程报错停住。
OpenClaw 的 memory 设计里,还有一个很容易被低估的机制:pre-compaction memory flush。
意思是:
当 session 快接近 auto-compaction 阈值时,OpenClaw 会触发一个静默 agent turn,提醒模型在压缩上下文之前,把值得保留的长期信息先写进 memory。
这个机制真正解决的是三个工程问题:
1. 上下文要被压缩时,不会把重要信息直接丢掉
2. 长期记忆可以从会话缓存沉淀到磁盘文件
3. 记忆沉淀不完全依赖人工每次手动提醒
默认提示一般会鼓励模型在不需要对用户说话时返回 NO_REPLY,所以用户通常看不到这次静默刷新。
很多文章一提 memory search,就只会说 embedding。OpenClaw 现在把这件事做得更细:
可对 MEMORY.md 和 memory/*.md 建立索引。
不仅看向量相似度,也可以混入文本检索信号。
当 daily note 很多且内容高度相似时,MMR 可以减少“搜出来全是差不多片段”的问题。
旧记录会因为时间衰减而在排序上降低权重,这样昨天的新记录就不容易被半年前的旧内容压过去。
这说明 OpenClaw 在记忆检索上真正关心的是:
相关性、多样性和时效性。
这是很多新手最容易混的一点。
session 更像当前会话的运行容器,里面有:
• 消息历史
• tool 结果
• 生命周期事件
memory 则是跨 session 的长期沉淀。
官方文档也提到,session transcript 可以被实验性索引进 memory_search,但那是 opt-in 能力,而且仍然要把磁盘访问视为信任边界。
所以更稳的理解是:
• session 是运行轨迹
• memory 是沉淀后的长期知识
不要把所有 session 内容都当长期记忆,否则检索迟早会被污染。
如果你想把 OpenClaw 的记忆用好,最关键的不是先研究 provider,而是先建立这套判断:
1. 什么信息值得长期保留
2. 什么信息只是当天上下文
3. 哪些旧信息应该被时间衰减
4. 哪些记忆只该出现在私有场景,不该进入群聊上下文
换句话说:
会话只是活水,记忆才是水库。
如果你今天就想判断自己有没有把记忆系统用对,可以看这 5 项:
1. 我有没有把长期偏好写到 MEMORY.md
2. 我有没有把当天进展落到 daily log
3. 我有没有在新 session 里验证这些信息能不能被找回来
4. 我有没有避免把群聊内容直接当长期记忆
5. 我有没有把 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 如何托管多套工作人格