记忆系统概述
OpenClaw 的记忆系统有一个核心设计理念:模型只记住保存到磁盘的内容。 这意味着智能体的"记忆"不是什么神秘的向量数据库或复杂的知识图谱——它就是纯 Markdown 文件。智能体通过读写这些文件来"记住"和"回忆"信息。 为什么这样设计? - 透明可控:你可以直接打开文件查看智能体记住了什么 - 可编辑:你可以手动修改记忆内容,纠正错误或补充信息 - 可迁移:记忆文件就是普通文本,可以备份、同步、版本控制 - 不依赖外部服务:不需要向量数据库,不需要云服务三个核心文件
OpenClaw 的记忆系统由三个核心文件组成,各有不同的用途。MEMORY.md — 长期记忆
MEMORY.md 是智能体的"长期记忆本",存储需要跨会话保留的重要信息。
位置:~/.openclaw/workspace/MEMORY.md
典型内容:
``markdown
长期记忆
用户偏好
- 喜欢使用 TypeScript,不喜欢 JavaScript
- 代码风格偏好:函数式编程
- 常用编辑器:VS Code
项目信息
- 当前项目:龙虾技能库
- 技术栈:Node.js + Express + MySQL
- 部署方式:PM2 + Nginx
重要约定
- 数据库密码不要写在代码里
- 部署前必须跑测试
- Git 提交信息用中文
`
MEMORY.md 在每个会话开始时会被加载到智能体的上下文中,所以智能体在新会话中也能"记住"之前的信息。
memory/YYYY-MM-DD.md — 每日笔记
每日笔记是智能体的"日记本",按日期自动创建,记录当天的重要事件和发现。
位置:~/.openclaw/workspace/memory/2025-01-15.md
典型内容:
`markdown
2025-01-15
完成的任务
- 修复了教程列表页的搜索功能
- 添加了标签筛选功能
发现的问题
- ssr.ts 文件超过 3000 行,需要考虑拆分
- Redis 缓存偶尔失效,需要排查
用户提到的
- 下周要上线新的排行榜功能
- 需要支持深色模式
`
每日笔记的特点:
- 自动按日期创建新文件
- 不会加载到每个会话的上下文中(太多了会占用 Token)
- 通过 memory_search 工具按需搜索
- 适合记录细节信息和临时笔记
DREAMS.md — 实验性记忆
DREAMS.md 是 OpenClaw 的实验性功能(Dreaming),用于存储经过"梦境处理"的记忆。
位置:~/.openclaw/workspace/DREAMS.md
> 注意:Dreaming 是实验性功能,默认未启用。它的工作方式可能在未来版本中变化。
记忆工具
OpenClaw 提供了两个内置工具来操作记忆。
memory_search — 语义搜索
memory_search 工具可以在所有记忆文件中进行语义搜索,找到与查询最相关的内容。
工作方式:
1. 智能体收到一个需要回忆的问题
2. 调用 memory_search 搜索相关记忆
3. 返回匹配的记忆片段
4. 智能体基于记忆片段回答问题
示例对话:
`
用户:上次我们讨论的数据库优化方案是什么?
智能体:(调用 memory_search 搜索"数据库优化")
找到相关记忆:
- 2025-01-10.md: 讨论了索引优化,决定为 skills 表的 slug 字段添加唯一索引
- MEMORY.md: 数据库使用 MySQL,服务器 IP 10.0.8.10
根据记忆,上次我们讨论了为 skills 表的 slug 字段添加唯一索引来优化查询性能...
`
语义搜索的优势在于它不是简单的关键词匹配——即使你用不同的措辞描述同一件事,它也能找到相关内容。
memory_get — 读取记忆
memory_get 工具直接读取指定的记忆文件内容。
`
用户:看看我的长期记忆里有什么
智能体:(调用 memory_get 读取 MEMORY.md)
`
与 memory_search 的区别:
| 工具 | 用途 | 方式 |
|------|------|------|
| memory_search | 搜索相关记忆 | 语义匹配,返回最相关的片段 |
| memory_get | 读取完整文件 | 直接读取指定文件的全部内容 |
自动记忆刷新
OpenClaw 有一个智能的自动记忆刷新机制,确保重要信息不会在对话压缩(compaction)时丢失。
什么是对话压缩
当对话变得很长时,OpenClaw 会触发"压缩"——将之前的对话总结为一段摘要,释放上下文空间。但压缩可能会丢失一些细节信息。
自动保存机制
在压缩发生之前,OpenClaw 会自动执行以下操作:
1. 扫描即将被压缩的对话内容
2. 识别重要信息(用户偏好、项目决策、关键发现等)
3. 将重要信息保存到记忆文件(MEMORY.md 或当天的每日笔记)
4. 然后再执行压缩
这样即使对话被压缩了,重要信息已经安全地保存在记忆文件中,后续可以通过 memory_search 找回。
手动保存记忆
你也可以主动要求智能体记住某些信息:
`
用户:记住,我们的项目部署到 106.52.9.75 这台服务器
智能体:好的,我已经将这个信息保存到长期记忆中。
(将信息写入 MEMORY.md)
`
或者更具体地:
`
用户:把今天讨论的数据库优化方案记到笔记里
智能体:已记录到今天的笔记中。
(将信息写入 memory/2025-01-15.md)
`
Dreaming 实验性功能
Dreaming 是 OpenClaw 的一个实验性功能,灵感来自人类睡眠时大脑整理记忆的过程。
工作原理
1. 短期信号收集:在日常对话中,系统会标记"有趣"的信号(用户反复提到的话题、重要的决策、情绪变化等)
2. 信号评分:每个信号会被评估重要性分数
3. 梦境处理:在空闲时(类似"睡眠"),系统会处理这些信号:
- 高分信号提升为长期记忆(写入 MEMORY.md)
- 低分信号逐渐衰减
- 相关信号被关联和整合
4. 记忆提升:经过梦境处理的记忆会更加结构化和精炼
启用 Dreaming
Dreaming 默认未启用,因为它还在实验阶段。如果你想尝试:
`json5
{
"memory": {
"dreaming": {
"enabled": true
}
}
}
`
> 提醒:Dreaming 功能会消耗额外的 API Token(因为需要调用模型来处理信号),且行为可能在未来版本中变化。建议在非生产环境中尝试。
CLI 记忆管理命令
OpenClaw 提供了一组 CLI 命令来管理记忆系统。
查看记忆状态
`bash
openclaw memory status
`
输出示例:
`
记忆状态:
MEMORY.md: 2.3 KB (上次更新: 2025-01-15)
每日笔记: 12 个文件
DREAMS.md: 0.8 KB
索引状态: 已建立 (14 个文档)
`
搜索记忆
在命令行中搜索记忆内容:
`bash
openclaw memory search "数据库优化"
`
输出示例:
`
找到 3 条相关记忆:
[1] memory/2025-01-10.md (相关度: 0.92)
讨论了为 skills 表添加索引优化查询性能...
[2] MEMORY.md (相关度: 0.78)
数据库服务器 IP: 10.0.8.10,使用 MySQL...
[3] memory/2025-01-08.md (相关度: 0.65)
发现慢查询问题,排行榜接口响应超过 2 秒...
`
重建索引
如果你手动编辑了记忆文件,需要重建搜索索引:
`bash
openclaw memory index
`
这会重新扫描所有记忆文件,更新语义搜索索引。通常在以下情况需要执行:
- 手动编辑了 MEMORY.md 或每日笔记
- 从备份恢复了记忆文件
- 搜索结果不准确时
记忆管理最佳实践
1. 定期整理 MEMORY.md
MEMORY.md 会随着使用不断增长。建议定期检查和整理:
- 删除过时的信息
- 合并重复的条目
- 按主题分类组织
`bash
直接编辑
nano ~/.openclaw/workspace/MEMORY.md
或者让智能体帮你整理
openclaw agent --message "帮我整理一下长期记忆,删除过时的信息"
`
2. 善用每日笔记
每日笔记适合记录:
- 当天完成的任务
- 遇到的问题和解决方案
- 临时的想法和计划
- 需要后续跟进的事项
3. 主动告诉智能体该记什么
智能体不会自动记住所有对话内容。如果有重要信息,明确告诉它:
`
用户:记住这个——以后所有 API 接口都要加上速率限制
`
4. 备份记忆文件
记忆文件就是普通的 Markdown 文件,可以用 Git 管理:
`bash
cd ~/.openclaw/workspace
git init
git add MEMORY.md memory/
git commit -m "备份记忆文件"
`
这样你就有了记忆的版本历史,可以随时回溯。
记忆系统的局限性
了解记忆系统的局限有助于更好地使用它:
- MEMORY.md 占用上下文:MEMORY.md 在每个会话开始时加载,内容太多会占用宝贵的上下文窗口空间
- 每日笔记不自动加载:每日笔记需要通过 memory_search 主动搜索,智能体不会自动"想起"
- 语义搜索有精度限制:搜索结果可能不完全准确,特别是对于非常具体的技术细节
- 压缩可能丢失细节:虽然有自动保存机制,但对话压缩时仍可能丢失一些不被认为"重要"的细节
小结
OpenClaw 的记忆系统简单而实用:
- 记忆就是 Markdown 文件,透明可控
- MEMORY.md 存长期记忆,每日笔记存日常细节
- memory_search 语义搜索,memory_get` 直接读取
- 对话压缩前自动保存重要信息
- CLI 命令管理记忆状态和索引
记忆系统让智能体从"金鱼记忆"变成了真正能积累经验的助手。善用它,你的智能体会越用越懂你。
#OpenClaw记忆 #Memory系统 #长期记忆 #语义搜索 #龙虾技能库