首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >OpenClaw 会话与记忆:让 Agent 记住,而不只是多轮聊天

OpenClaw 会话与记忆:让 Agent 记住,而不只是多轮聊天

作者头像
阿特拉斯
发布2026-06-15 17:30:34
发布2026-06-15 17:30:34
2220
举报

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 里召回

如果这两个层次开始分开了,你就已经在用真正的记忆系统,而不是只靠模型上下文硬背。

三、OpenClaw 的记忆不是抽象概念,而是文件

官方 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。

五、Agent 是怎么读这些记忆的

OpenClaw 当前暴露两个关键工具:

1. memory_search

• 用于语义检索相关记忆片段

2. memory_get

• 用于精确读取某个 Markdown 文件或指定范围

一个非常实用的细节是:如果文件还不存在,memory_get 不会直接抛 ENOENT,而是优雅返回空内容。

这意味着“今天还没有任何记录”会被当成正常情况处理,而不是让整个流程报错停住。

六、Compaction 前为什么还要提醒模型写记忆

OpenClaw 的 memory 设计里,还有一个很容易被低估的机制:pre-compaction memory flush。

意思是:

当 session 快接近 auto-compaction 阈值时,OpenClaw 会触发一个静默 agent turn,提醒模型在压缩上下文之前,把值得保留的长期信息先写进 memory。

这个机制真正解决的是三个工程问题:

1. 上下文要被压缩时,不会把重要信息直接丢掉

2. 长期记忆可以从会话缓存沉淀到磁盘文件

3. 记忆沉淀不完全依赖人工每次手动提醒

默认提示一般会鼓励模型在不需要对用户说话时返回 NO_REPLY,所以用户通常看不到这次静默刷新。

七、记忆检索不是只有向量检索

很多文章一提 memory search,就只会说 embedding。OpenClaw 现在把这件事做得更细:

1. 支持向量检索

可对 MEMORY.mdmemory/*.md 建立索引。

2. 支持 hybrid search

不仅看向量相似度,也可以混入文本检索信号。

3. 支持 MMR 去重

当 daily note 很多且内容高度相似时,MMR 可以减少“搜出来全是差不多片段”的问题。

4. 支持 temporal decay

旧记录会因为时间衰减而在排序上降低权重,这样昨天的新记录就不容易被半年前的旧内容压过去。

这说明 OpenClaw 在记忆检索上真正关心的是:

相关性、多样性和时效性。

八、Session 和记忆的边界不能混

这是很多新手最容易混的一点。

session 更像当前会话的运行容器,里面有:

• 消息历史

• tool 结果

• 生命周期事件

memory 则是跨 session 的长期沉淀。

官方文档也提到,session transcript 可以被实验性索引进 memory_search,但那是 opt-in 能力,而且仍然要把磁盘访问视为信任边界。

所以更稳的理解是:

• session 是运行轨迹

• memory 是沉淀后的长期知识

不要把所有 session 内容都当长期记忆,否则检索迟早会被污染。

九、真正该先学会的,不是 embedding 参数,而是记忆纪律

如果你想把 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 如何托管多套工作人格

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-03-11,如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • 一、先定本篇起点和完成标志
    • 你的起点状态
    • 本篇完成标志
  • 二、先做一个最小记忆闭环
    • 练习目标
  • 三、OpenClaw 的记忆不是抽象概念,而是文件
  • 四、什么时候写 MEMORY.md,什么时候写 daily log
    • 写进 MEMORY.md
    • 写进 memory/YYYY-MM-DD.md
  • 五、Agent 是怎么读这些记忆的
  • 六、Compaction 前为什么还要提醒模型写记忆
  • 七、记忆检索不是只有向量检索
    • 1. 支持向量检索
    • 2. 支持 hybrid search
    • 3. 支持 MMR 去重
    • 4. 支持 temporal decay
  • 八、Session 和记忆的边界不能混
  • 九、真正该先学会的,不是 embedding 参数,而是记忆纪律
  • 十、给新手的最小记忆检查单
  • 十一、这一篇之后,你该建立什么认知
  • 参考链接
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档