Appearance
OpenClaw 的记忆机制基于工作区内的 Markdown 文件:MEMORY.md 存储持久化事实,每日笔记(memory/YYYY-MM-DD.md)存放短期上下文,可选 DREAMS.md 记录梦境摘要。默认 SQLite 后端支持混合搜索(语义+关键词),配置 embedding provider 后自动生效。记忆 flush 在压缩前自动保存未落盘的内容,无需手动干预。如果需要跨会话用户建模,可选 Honcho 插件。
OpenClaw Memory 记忆系统:MEMORY.md 和每日笔记配置与排查
OpenClaw 通过在工作区内写入 纯 Markdown 文件 来实现跨会话记忆。模型只“记得”被保存到磁盘的内容——没有隐藏状态。这意味着所有记忆都可通过文件系统直接查看和编辑。
工作原理
智能体工作区(默认 ~/.openclaw/workspace)中有三类记忆文件:
MEMORY.md— 长期记忆。存放持久化的事实、偏好和决策。每次私信(DM)会话开始时加载。memory/YYYY-MM-DD.md(或memory/YYYY-MM-DD-<slug>.md)— 每日笔记。存放运行中的上下文和观察。当天和昨天的笔记自动加载;会话记忆钩子(/new或/reset)写入的带 slug 变体也会一并加载。DREAMS.md(可选)— 梦境日记和梦境摘要,供人类审阅,包含基于历史回填的条目。
文件分工
MEMORY.md:精炼层。存放持久事实、偏好、常驻决策及简短摘要,在主私信会话开始时可用。不是原始转录本或每日日志。memory/YYYY-MM-DD.md:工作层。存放详细每日笔记、观察、会话摘要及日后可能仍有用的原始上下文。这些文件会被memory_search和memory_get索引,但不会在每个回合都注入引导提示。
随着时间的推移,智能体会自动从每日笔记中提炼有用内容到 MEMORY.md,并清理过时的长期条目。生成的工作区指令和心跳流可以定期执行此操作,无需手动编辑每个细节。
提示:如果
MEMORY.md增长超过引导文件预算,OpenClaw 会保持磁盘文件完整,但截断注入模型上下文的副本。此时应把详细材料移回memory/*.md,只在MEMORY.md保留持久摘要,或明确提高引导限制。可通过/context list、/context detail或openclaw doctor查看原始大小、注入大小及截断状态。
提示:想让智能体记住某件事,直接告诉它:“记住我偏好 TypeScript。”它会自动写入相应文件。
推断承诺(Commitments)
某些未来跟进不是持久事实。例如提到明天的面试,有用的记忆可能是“面试后跟进”,而不是“永久存入 MEMORY.md”。
承诺(Commitments) 是专门为此设计的可选短期跟进记忆。OpenClaw 在后台静默推理,限定于同一智能体和渠道,并通过心跳交付到期检查。显式提醒仍通过定时任务实现。
记忆工具
智能体有两个专门操作记忆的工具:
memory_search— 使用语义搜索找到相关笔记,即使措辞与原文件不同。memory_get— 读取特定记忆文件或行范围。
这两个工具由当前激活的记忆插件提供(默认 memory-core)。
Memory Wiki 伴侣插件
如果你希望持久记忆更像一个维护中的知识库而非原始笔记,可使用内置的 memory-wiki 插件。
memory-wiki 将持久知识编译成一个 wiki vault,包含:
- 确定性页面结构
- 结构化声索与证据
- 矛盾与新鲜度追踪
- 生成仪表盘
- 供智能体/运行时消费的编译摘要
- wiki 原生工具:
wiki_search、wiki_get、wiki_apply、wiki_lint
它不替代活跃记忆插件。活跃记忆插件仍然负责召回、晋升和梦境。memory-wiki 在旁边添加一个带有溯源的知识层。
参见 Memory Wiki。
记忆搜索
当配置了 embedding provider 后,memory_search 使用混合搜索——结合向量相似性(语义含义)与关键词匹配(ID 和代码符号等精确词)。只要拥有任一支持 provider 的 API key,即可开箱即用。
信息:OpenClaw 从可用 API key 自动检测 embedding provider。如果配置了 OpenAI、Gemini、Voyage 或 Mistral key,记忆搜索会自动启用。
搜索工作原理、调优选项及 provider 配置详见 记忆搜索。
记忆后端
| 后端 | 说明 |
|---|---|
| 内置(默认) | SQLite 基础,开箱即用,支持关键词搜索、向量相似度和混合搜索,无额外依赖。 |
| QMD | 本地优先侧载,支持重排序、查询扩展,可索引工作区外目录。 |
| Honcho | AI 原生跨会话记忆,用户建模、语义搜索、多智能体感知,需要插件安装。 |
| LanceDB | 内置 LanceDB 支持,OpenAI 兼容嵌入,自动召回/捕获,支持本地 Ollama 嵌入。 |
详细说明:
知识 wiki 层
Memory Wiki:将持久记忆编译成带有溯源、仪表盘、桥接模式、Obsidian 友好工作流的 wiki vault。
自动记忆刷新(Memory Flush)
在压缩(compaction) 汇总对话之前,OpenClaw 会执行一次静默轮次,提醒智能体将重要上下文保存到记忆文件。此功能默认开启,无需配置。
如果想在本地模型上保持此清理轮次,可设置精确的记忆刷新模型覆盖:
json
{
"agents": {
"defaults": {
"compaction": {
"memoryFlush": {
"model": "ollama/qwen3:8b"
}
}
}
}
}该覆盖仅适用于记忆刷新轮次,不会继承活跃会话的回退链。
提示:记忆刷新防止压缩时丢失上下文。如果你的智能体在对话中有重要事实尚未写入文件,它们会在摘要发生前自动保存。
梦境(Dreaming)
梦境是可选的记忆后台巩固流程。它收集短期信号,给候选内容打分,仅将合格项晋升到长期记忆(MEMORY.md)。
特性:
- 可选: 默认关闭。
- 定时: 启用后,
memory-core自动管理一个周期性 cron 作业用于完整梦境清扫。 - 阈值控制: 晋升必须通过评分、召回频率和查询多样性门槛。
- 可审阅: 阶段摘要和梦境条目写入
DREAMS.md供人审阅。
阶段行为、评分信号和 Dream Diary 细节详见梦境。
基于历史回填与实时晋升
梦境系统现在有两个紧密关联的审查通道:
- 实时梦境:从短期梦境存储(
memory/.dreams/)工作,正常深度阶段据此决定哪些内容可以晋升到MEMORY.md。 - 基于历史回填:读取历史
memory/YYYY-MM-DD.md笔记作为独立日文件,并将结构化的审查输出写入DREAMS.md。
当你使用:
bash
openclaw memory rem-backfill --path ./memory --stage-short-term回填的候选内容不会直接晋升,而是暂存到与正常深度阶段相同的短期梦境存储中。这意味着:
DREAMS.md保持为人机审查界面。- 短期存储保持为机器排序界面。
MEMORY.md仍然只通过深度晋升写入。
如果你认为回放没有用,可以移除暂存工件而不影响普通梦境条目或正常召回状态:
bash
openclaw memory rem-backfill --rollback
openclaw memory rem-backfill --rollback-short-termCLI 命令
bash
openclaw memory status # 检查索引状态和 provider
openclaw memory search "query" # 从命令行搜索
openclaw memory index --force # 强制重建索引进一步阅读
- 内置记忆引擎: 默认 SQLite 后端
- QMD 记忆引擎: 高级本地优先侧载
- Honcho 记忆: AI 原生跨会话记忆
- LanceDB 记忆插件: LanceDB 支持,OpenAI 兼容嵌入
- Memory Wiki: 编译知识库和 wiki 原生工具
- 记忆搜索: 搜索管道、provider 和调优
- 梦境: 从短期召回晋升到长期记忆的后台流程
- 记忆配置参考: 所有配置参数
- 压缩: 压缩如何与记忆交互
常见问题
为什么我让智能体记住的事情,在切换通道后就消失了?
如果使用内置或 QMD 后端,记忆存储在智能体工作区(文件),只要智能体 ID 和工作区路径不变,切换通道(如从 WhatsApp 到 Telegram)不会丢失记忆。但如果使用 Honcho 后端,需要确保在 Honcho 中正确配置跨会话用户映射。默认情况下,不同通道视为不同用户会话。
如何让智能体删除某个记忆?
直接告诉智能体:“删除 MEMORY.md 里关于 X 的内容。”智能体会自动使用 memory_get 读取文件并执行编辑。也可以通过 CLI 手动编辑:openclaw memory status 确认文件路径,然后手动编辑。
MEMORY.md 太长了会影响模型响应吗?
会。MEMORY.md 在每次 DM 会话开始时完整加载,如果文件很大(例如超过几 KB),会占用大量上下文窗口,可能导致模型忽略重要信息或超出 token 限制。建议使用 /context list 查看注入大小,如果显示“truncated”,需精简 MEMORY.md 或提高引导限制。可以启用梦境功能自动管理长期记忆。