OpenClaw 记忆机制详解:三层记忆架构与长期记忆管理
OpenClaw 通过将记忆写入磁盘的纯文本文件来实现持久化——模型本身没有隐藏状态,所有记忆都显式存储在文件中。本文详细介绍其三层记忆架构及各种高级记忆功能。
第一部分:三层记忆架构
OpenClaw 的记忆系统采用三层模型,从近到远分别是:
第一层:会话上下文(Session Context)
当前对话的缓冲区,包含本轮对话的所有消息。这是每次 API 请求都会发送的活跃数据,由 LCM(Long-term Context Manager)管理。当上下文窗口接近满时,会触发自动压缩(compaction)。
关键机制:自动记忆冲刷
当对话接近上下文上限时,OpenClaw 会触发一个静默的 Agent 自主执行,在压缩前自动将重要上下文写入 memory/YYYY-MM-DD.md:
1 | 对话接近上下文限制 |
第二层:工作记忆(Daily Notes)
位于 memory/YYYY-MM-DD.md 文件中,记录每日运行日志和观察。今天和昨天的日志会自动加载,文件会被索引供 memory_search 检索,但不会注入到每次启动的引导提示中。
适用于:详细的每日笔记、观察、对话摘要和将来可能有用的原始上下文。
第三层:长期记忆(MEMORY.md)
位于 ~/.openclaw/workspace/MEMORY.md,是精心提炼的持久层。记录持久的facts、偏好、决策和摘要,在每次主会话启动时自动加载。
适用于:长期facts、用户偏好、既定决策和简短摘要。不是原始对话记录或每日日志。
三层之间的关系:
| 层级 | 文件 | 生命周期 | 何时加载 |
|---|---|---|---|
| 第一层 | 会话上下文 | 当前对话 | 每次 API 请求 |
| 第二层 | memory/YYYY-MM-DD.md | 每日 | 今天+昨天自动加载 |
| 第三层 | MEMORY.md | 长期 | 每次 DM 会话启动 |
第二部分:核心记忆文件 MEMORY.md
什么是 MEMORY.md
MEMORY.md 是 OpenClaw 的核心记忆文件,位于工作空间根目录。每次新的主会话(DM)启动时,这个文件的内容会自动加载到模型上下文中,确保 Agent 能够”记住”之前的重要信息。
写入什么内容
- 用户的持久偏好(如”使用中文回复”)
- 已做出的重要决策和结论
- 长期的facts(如用户的姓名、职业、项目信息)
- 技能和工具的配置说明
- 协作规则和流程
不要写入的内容
- 原始对话记录(这是 daily notes 的职责)
- 临时性的待办(用飞书任务/企业微信待办)
- 过时信息(定期清理 MEMORY.md)
如何维护
让 Agent 自动维护即可。当你告诉它”记住 XXX”时,它会自动写入合适的位置。定期(建议每隔几天)可以让 Agent 审查 MEMORY.md,删除过时内容,将详细材料提炼为摘要。
提示:如果 MEMORY.md 超过引导预算,OpenClaw 会将文件保留在磁盘上,但截断注入上下文的部分。这时需要将详细内容移回
memory/*.md,或在 MEMORY.md 中只保留精简摘要。
第三部分:上下文管理
上下文中包含的内容
每次 API 请求发送的上下文包含:
- 当前对话消息列表
- 引导提示(Bootstrap prompt)
- 已加载的 MEMORY.md 内容
- 已加载的 daily notes 内容
- 工具定义和调用历史
- 系统指令
默认引擎的处理方式
OpenClaw 默认使用 LCM(Long-term Context Manager) 进行上下文管理。当对话变长、接近上下文窗口上限时,LCM 会触发自动压缩(Auto-compaction):
- 评估哪些消息可以安全压缩或移除
- 保留关键信息和结论
- 用摘要替代原始对话记录
- 释放上下文空间继续对话
无损上下文:lossless-claw 插件
默认的压缩方式会丢失部分对话细节。如果你希望无损保留所有对话历史,可以安装 lossless-claw 插件:
1 | openclaw plugins install lossless-claw |
lossless-claw 的工作原理:
- 将每次交互存储在持久化数据库中
- 将旧内容增量摘要为层级有向无环图(DAG)
- 不删除任何信息,只提炼关键结论
- Agent 可以动态重构详细上下文(按需展开摘要)
- 保留完整的对话历史,而非删除后不可恢复
注意:lossless-claw 不会写入 MEMORY.md,只管理会话压缩过程。
第四部分:长期记忆与记忆搜索
开启长期记忆和向量搜索
在 openclaw.json 中配置:
1 | { |
其中 provider: "local" 使用本地向量模型进行语义搜索,无需外部 API。
配置本地向量模型
1 | { |
查看当前记忆状态
1 | # 查看记忆文件大小和状态 |
重建记忆数据库
如果向量数据库损坏或需要重建:
1 | # 重新索引所有记忆文件 |
第五部分:Dreaming 做梦机制
什么是 Dreaming
Dreaming 是 OpenClaw v2026.4.5 引入的实验性记忆巩固框架,灵感来源于人类睡眠机制。Agent 在后台(类睡眠状态)自动整理、提炼和强化记忆,帮助自己在”醒来”时拥有更清晰可用的记忆系统。
工作原理
Dreaming 模拟人类睡眠的三个阶段:
| 阶段 | 类型 | 功能 |
|---|---|---|
| 浅睡 | 摄入(Ingestion) | 消化当日记忆文件 |
| REM | 模式识别 | 识别重要模式和关联 |
| 深睡 | 记忆强化 | 将重要内容提升到长期记忆 |
Dreaming 的输出
Dreaming 会在工作空间生成 DREAMS.md 文件(如果存储包含内联输出),记录:
- REM 睡眠摘要
- 做梦期间的强化信号
- 用于深度排序的记录
注意:Dreaming 不会写入 MEMORY.md,只写入 DREAMS.md 供人类审查。
开启 Dreaming
1 | # 安装 dreaming 插件 |
审查 Dreaming 日志
Dreaming 运行后,可以查看生成的 DREAMS.md:
1 | cat ~/.openclaw/workspace/DREAMS.md |
第六部分:知识库
OpenClaw 支持多种知识库集成,实现超越纯文本记忆的结构化知识管理。
内置知识库:OpenClaw Wiki
memory-wiki 插件将持久记忆编译为 Wiki 知识库,提供:
- 确定性页面结构:标准化格式的知识页面
- 结构化 claims 和证据:每个知识点可追溯来源
- 矛盾和新鲜度追踪:自动检测过时或冲突信息
- 生成的仪表盘:知识库概览
- Agent 运行时消费者:为 AI 提供可靠的知识点注入
1 | openclaw plugins install memory-wiki |
开启后可用以下工具:
wiki_search— 知识库搜索wiki_get— 读取知识页面wiki_apply— 写入知识更新wiki_lint— 检查知识库一致性
外部知识库:RAGFlow
RAGFlow 是一个开源的 RAG(检索增强生成)引擎,可以与 OpenClaw 配合使用,实现更强大的文档理解和问答能力。
适合场景:
- 大规模文档库检索
- 复杂文档的语义理解
- 企业知识管理
外部知识库:Get笔记
Get笔记(biji.com)开放平台,支持将笔记内容接入 OpenClaw:
1 | { |
配置后可以通过 Skill 调用 Get笔记的搜索和写入功能。
外部知识库:IMA 笔记
IMA 是腾讯的智能笔记应用,可以通过其开放 API 与 OpenClaw 集成,实现笔记内容的检索和引用。
总结
OpenClaw 的记忆系统设计精妙,通过三层架构实现了”无隐藏状态”的纯文本持久化:
- 会话上下文:活跃对话缓冲区,由 LCM 管理
- 工作记忆:每日笔记,自动记忆冲刷保护
- 长期记忆:精心提炼的 MEMORY.md
配合 lossless-claw 实现无损压缩、Dreaming 实现睡眠式记忆整理、以及多种知识库集成,构成了一个完整的长期记忆管理生态系统。
善用这些机制,可以让 AI Agent 真正做到”记得住、记得准、不遗忘”。
本文基于 OpenClaw 2026.5.x 版本编写
第七部分:当 Agent “想不起来”时怎么办
有时候 Agent 会说”我想不起来了”,这时候可以引导它去各个记忆系统中搜索。
引导搜索的步骤
第一步:让它搜索记忆文件
直接告诉它:”去记忆里搜索一下”或”在 memory 里找找看”。
Agent 会使用 memory_search 工具进行语义搜索,即使用词不同也能匹配到相关内容。
第二步:让它用 LCM 插件搜索
告诉它:”用 LCM 插件搜索一下”或”查一下压缩日志里的内容”。
LCM 插件管理着完整的会话历史,可以帮你找到被压缩但仍保留的信息。
第三步:让它搜索知识库
如果知识库已配置,告诉它:”去 Wiki 知识库里搜索一下”或”在 RAGFlow/Get笔记里找找”。
示例对话
用户:你记得上周我们讨论的 OpenClaw 升级方案吗?
Agent:我想不起来了…
用户:去记忆里搜索一下
Agent:memory_search搜索中…找到了!上周我们讨论了…
主动维护记忆的建议
为了让 Agent 记得更清楚,可以:
- 定期让 Agent 更新 MEMORY.md:每隔几天让它整理一次记忆
- 重要决策明确说:告诉它”把这个记到 MEMORY.md 里”
- 检查 DREAMS.md:如果有 Dreaming 功能,定期看看它的做梦日记
- 给记忆打标签:在记忆文件中用标签标记重要主题,方便检索
本文基于 OpenClaw 2026.5.x 版本编写
📌 博客地址
