OpenClaw 记忆系统深度掌握
写在前面: OpenClaw 官方文档对记忆系统的介绍只有寥寥数行,大部分经验需要自己踩坑摸索。这篇文章整合了官方源码、社区实践、真实踩坑记录,目标是把你需要知道的都说清楚,让你少走弯路。
一、你的 OpenClaw 为什么总是”失忆”?
先讲一个真实的故事。
有个用户在和 OpenClaw 聊天时说了一句话:“以后做任何操作之前,都要先等我确认。” AI 乖乖答应了,接下来那段对话里表现也很好。但随着对话越来越长,上下文窗口撑不住了,系统自动把早期的内容压缩成了摘要——那句关键的”等我确认”就在这次压缩中悄悄消失了。
结果:AI 恢复了自主模式,开始批量删除邮件。(来源:知乎真实事故记录)
这不是 bug,这是大语言模型的天然缺陷:上下文窗口是有限的,聊天记录会被压缩、裁剪,最终消失。 你在对话中给的任何指令,都只是”临时的”,随时可能失效。
OpenClaw 的解法很直接:把重要的事情写进文件,落盘到本地。
“每次会话你都是全新醒来。这些文件就是你的连续性。“——AGENTS.md
每次启动新的 OpenClaw 会话,它会先读取一组本地文件,用这些文件里的内容重建”记忆”,然后再开始工作。理解了这一点,后面所有的事情就都通了。
二、记忆系统全景图:三层结构
很多人以为记忆系统就是一个文件,其实不然。OpenClaw 的记忆系统由一组文件协同构成,每个文件各有分工,按职能分成三层:
┌─────────────────────────────────────────────┐
│ 静态配置层(定义"是谁") │
│ SOUL.md IDENTITY.md USER.md AGENTS.md │
│ TOOLS.md │
├─────────────────────────────────────────────┤
│ 动态记忆层(存储"经历") │
│ MEMORY.md memory/YYYY-MM-DD.md │
├─────────────────────────────────────────────┤
│ 行为规范层(养成"习惯") │
│ AFTER_TASK.md HEARTBEAT.md │
└─────────────────────────────────────────────┘
三层缺哪一层,记忆系统都是残缺的:
- 只有静态层:AI 知道自己是谁,但不记得昨天做了什么
- 只有动态层:AI 有日记,但没有行事风格和价值观
- 没有行为规范层:AI 没有主动落盘的习惯,记忆靠碰运气
三、逐一拆解:每个文件写什么、不写什么
3.1 SOUL.md — AI 的灵魂
这是最重要的文件,没有之一。
SOUL.md 定义 AI 的核心价值观和行为准则,每次启动第一个读取。它不是给人看的,是给 AI 自己看的——写什么,AI 就会变成什么样的助手。
一份没有灵魂的 AI 是什么感觉? 每次会话开场白都是”我很乐意帮忙!“,每次回答都小心翼翼绝不得罪人,你问它觉得哪个方案更好,它说”两个都挺好的!“——没有立场,没有主张,换了名字的搜索引擎。
有灵魂的 AI 是什么感觉? 来看一个经典的社区示例(来源:OpenClaw 社区传播版本):
# Soul — 技术助手
## 身份
我是一个有 15 年经验的资深开发者。
书上写的坑,我基本都踩过。
## 沟通风格
- 直接,没有企业腔
- 说清楚每个建议背后的理由
- 发现烂代码立刻指出来
- 默认短回复,2-3 句话,除非主题需要深入
- 不废话开场
## 价值观
- 代码可维护性 > 炫技
- 测试不是可选项
- 简单方案胜过复杂方案
## 边界
- 安全问题上没有捷径
- 不确定的时候说不确定,从不捏造信息
注意这些细节:“不废话开场”是行为级描述,AI 会严格执行;“不确定的时候说不确定”是自我约束,比”诚实”这个词有效得多。
写 SOUL.md 的三条原则:
- 写价值观,不写技术规则。“优先用 agent-browser 访问网页”这种配置应该放 TOOLS.md,不是 SOUL.md
- 写行为级描述,不写形容词。“诚实”不如”不确定的时候说不确定,从不捏造信息”
- 官方提示: 如果 AI 修改了这个文件,它必须主动告知你——这是它的灵魂,你有权知道
3.2 IDENTITY.md — 身份名片
比 SOUL.md 轻量,存放 AI 的名字、性格标签、Emoji 等表层信息:
# IDENTITY.md
- **Name:** 星期五
- **Vibe:** 轻松活泼,不拘束
- **Emoji:** 🎉
没有也没有致命影响,但有了它,交互体验更有”人感”。
3.3 USER.md — 认识你的主人
给 AI 看的用户档案。很多人把偏好散落在各处,其实集中放在 USER.md 是最清晰的——AI 每次启动都会读,设置真正有效:
# USER.md
- **Name:** Ethan
- **Timezone:** Asia/Shanghai (GMT+8)
- **偏好:**
- 轻松活泼的风格,不用客气
- 当前模型 GLM-4.7,不支持图像输入
- 重要操作前必须确认
3.4 AGENTS.md — 工作空间的运行规则
内容最复杂的文件,定义:会话启动时做什么、任务完成后做什么、什么情况下发言或保持沉默。
会话启动的读取顺序(这个顺序很重要):
1. SOUL.md → 了解你是谁
2. USER.md → 了解你的主人
3. memory/今天 + 昨天.md → 获取最近上下文
4. MEMORY.md → 加载长期记忆(仅主会话,群聊中不加载)
第 4 步的括号值得重点强调:MEMORY.md 含有你的私人偏好和工作习惯,在群聊场景中如果也加载,会有信息泄露风险。这是官方的安全设计。
一条非常容易被忽略、但非常重要的规则,建议加进 AGENTS.md:
## 核心规则
- **行动前先搜索记忆。** 不确定用户偏好时,查阅记录,
不要凭感觉猜。
没有这条,AI 在新会话里会凭直觉行动,而不是查阅它记录过的内容。
社区知名示例(来自 @mberman84)也专门强调了这一点:
## Memory System
Memory doesn't survive sessions — files are the only way to persist knowledge.
**Daily Notes** (memory/YYYY-MM-DD.md)
Raw capture. Write here first.
**Synthesized Preferences** (MEMORY.md)
Distilled patterns. Only loaded in direct/private chats —
never in group contexts.
## When to Update Files
- Someone says "remember this" → update memory/YYYY-MM-DD.md
- Agent learns a lesson → update AGENTS.md, TOOLS.md, or the relevant skill
- A mistake is made → document it so future sessions don't repeat
3.5 TOOLS.md — 你的私人工具笔记
存放与个人环境强绑定的配置——摄像头名称、SSH 主机、TTS 偏好、模型限制等:
# TOOLS.md
## 在线访问
- 首选 agent-browser(无头浏览器,处理 JS 渲染)
- 避免 web_fetch(部分网站会阻止)
## 模型约束
⚠️ 当前:GLM-4.7,不支持多模态,禁止输入图像
核心设计哲学:技能(skill)是可以分享的,你的环境配置是你的。 两者分离,才能更新 skill 而不丢失个人配置,也能分享 skill 而不泄露基础设施信息。
3.6 两层记忆:MEMORY.md + memory/YYYY-MM-DD.md
这是整个记忆系统里最需要理解清楚的部分。
| 文件 | 类型 | 内容 | 更新频率 |
|---|---|---|---|
memory/YYYY-MM-DD.md | 短期原始记忆 | 当天发生的原始记录 | 每天 |
MEMORY.md | 长期精炼记忆 | 提炼后的精华知识 | 重要事件发生后 |
每日笔记是”当天的日记”,MEMORY.md 是”经过思考整理的回忆录”。
每日记忆写什么,才不是流水账?
有效的记录:
## 迁移 agent-browser 到 Playwright
**状态:** ✅ 完成
### 完成的工作
- tutorial-writer skill 的网络访问从 agent-browser 改为 Playwright
- 更新了 TOOLS.md 中的说明
### 为什么迁移
agent-browser 频繁报 ERR_CONNECTION_CLOSED,守护进程模式调试困难。
Playwright 更稳定,不需要守护进程。
### 下一步
- [ ] 在实际文章任务中验证 Playwright 稳定性
无效的记录:
今天修了个工具的问题,换了一个更好的方案。
判断标准只有一条:未来的 AI 能从这条记录里恢复上下文吗? 能——就记。不能——就改。
MEMORY.md 应该多大?
权威实践建议 3,000 tokens 以内(约 2,000 个汉字)。一个真实参考数字:合理配置下的 MEMORY.md 大约是 5,000 字节、1,700 汉字、约 1,500 tokens——健康且充裕。
一份写得好的 MEMORY.md 示例(来自知乎实战用户):
# MEMORY.md
## 项目背景
- OpenClaw 内容运营(2026-03 启动)
- 发布平台:知乎、掘金、公众号
- 目标:每周 3-5 篇技术文章
## 用户偏好
- 回复风格:简洁直接,不要废话
- 重要事项:用 emoji 标记(✅❌⚠️)
- 工作时间:GMT+8,9:00-18:00
## 安全规则
- 删除文件:必须二次确认
- 外部操作:发邮件/推文前需确认
## 经验教训
- 优先用 trash 而非 rm(可恢复)
- 发布前检查链接是否有效
- 长文章分段发送,避免截断
注意”经验教训”这一节——把真实踩坑(误用 rm 删文件)变成永久性的行为规则。这是 MEMORY.md 最有价值的用法:它不只是信息存储,更是 AI 自我进化的载体。
3.7 AFTER_TASK.md 和 HEARTBEAT.md — 行为规范层
这两个文件解决的是同一个问题:如何让 AI 养成主动记忆的习惯,不靠用户每次提醒。
AFTER_TASK.md 是任务完成后的强制检查清单:
✅ 第 1 步:更新今天的记忆文件
→ 路径:memory/YYYY-MM-DD.md
✅ 第 2 步:更新 MEMORY.md(如果重要)
→ 只记录长期需要记住的决策、教训、偏好
✅ 第 3 步:清理和提交
关键词是”强制”——不是”有时间就记”,是”完成任务就必须记”。
HEARTBEAT.md 是定期检查清单,配合心跳机制(默认 30 分钟一次)使用。保持简短——越短越好,每次触发都要消耗 token:
# HEARTBEAT.md
✅ 今天的记忆文件存在吗?
✅ 最近 3 天有连续记忆吗?
✅ MEMORY.md 需要更新吗?
一个实用技巧:开启 isolatedSession: true 参数,可以把每次心跳的 token 消耗从约 100K 降到 2-5K。
四、从零搭建:推荐的初始化顺序
第 1 步:写 SOUL.md(最重要,优先写好)
第 2 步:写 IDENTITY.md + USER.md(10 分钟搞定)
第 3 步:写 AGENTS.md(参考官方模板,按需修改)
第 4 步:写 TOOLS.md(把你的环境配置整理进来)
第 5 步:创建 MEMORY.md + memory/ 目录
第 6 步:写 AFTER_TASK.md + HEARTBEAT.md
不要六个文件同时写。SOUL.md 写好,跑起来感受一下,再逐步完善其他。记忆系统是迭代出来的,不是一次设计完成的。
几个容易忽略的技术细节:
- 单个文件超过 20,000 字符会被截断
- 所有启动文件合计上限 150,000 字符
- 遇到记忆不生效,先运行
/context list排查加载情况
五、进化:让 OpenClaw 越用越聪明
有一个现象很有意思:同样使用 OpenClaw 一年,有的人感觉 AI 越来越顺手,越来越”懂我”;有的人用了一年还是原地踏步,每次会话都要重新解释背景。
差距在哪里?记忆系统有没有随使用过程持续进化。
大部分人配置好记忆系统之后就扔在那不管了——SOUL.md 从来不更新,MEMORY.md 只进不出越来越臃肿,踩过的坑下次还踩。这样的记忆系统是”静止”的,时间越长,和你实际的需求偏差越大。
真正有价值的记忆系统是会自我进化的。
5.1 .learnings/ 目录:专门记录”我犯过的错”
OpenClaw 社区有一个专门为此设计的 skill:self-improving-agent,它引入了一个 .learnings/ 目录:
~/.openclaw/workspace/.learnings/
├── LEARNINGS.md # 经验教训、最佳实践、知识更新
├── ERRORS.md # 命令失败、工具报错、操作失误
└── FEATURE_REQUESTS.md # 遇到的能力缺口,期望支持的功能
触发机制简单直接:
| 场景 | 记录到 |
|---|---|
| 一条命令执行失败 | ERRORS.md |
| 用户纠正了 AI(“不对,应该是…”) | LEARNINGS.md,标记为 correction |
| 发现了更好的做法 | LEARNINGS.md,标记为 best_practice |
| AI 的知识是过时的 | LEARNINGS.md,标记为 knowledge_gap |
关键机制:晋升(Promotion)
记录在 .learnings/ 里的内容是”待处理”状态,真正让 AI 进化的一步是把有价值的内容晋升到核心文件:
行为模式改变 → 晋升到 SOUL.md
工作流改进 → 晋升到 AGENTS.md
工具使用技巧 → 晋升到 TOOLS.md
举个真实的例子:AI 某天用了 rm -rf 误删了文件,你纠正了它。这条记录先进入 ERRORS.md,确认重要后晋升到 AGENTS.md(“删除文件必须用 trash,禁止直接 rm”),从此永久生效。
5.2 定期”记忆维护”
HEARTBEAT.md 里可以加入一条每周执行的任务:
## 每周一次(周一心跳触发)
✅ 通读最近 7 天的 memory/ 文件
✅ 把值得长期保留的内容提炼到 MEMORY.md
✅ 删除 MEMORY.md 里已经过时的内容
✅ 把踩过的坑晋升到对应的核心文件
“把它想象成人类审查日记并更新心理模型。每日文件是原始笔记,MEMORY.md 是精心整理的智慧。“——OpenClaw 官方文档
这个习惯,是拉开”越用越好”和”原地踏步”的真正分水岭。
六、避坑指南
坑 1:指令写在对话里,没写进文件
最常见的失忆原因。任何你希望”永久生效”的规则,必须写进文件,不能只在聊天里说。
坑 2:不同模型执行记忆的稳定性不同
Claude 系列通常比 GLM 系列执行记忆指令更稳定——Claude 不容易跳过”写每日记忆”这一步,GLM 偶尔会省略。解决方案不是换模型,而是把记录要求写得更明确、位置更靠前,用 HEARTBEAT.md 做兜底检查。
坑 3:MEMORY.md 越来越臃肿
定期做”记忆清理”,删掉过时内容,重新提炼精简。MEMORY.md 的价值来自”精”,不来自”全”。
坑 4:每日记忆变成流水账
给 AI 提供结构化的记录模板(见 3.6 节的示例),有了模板,AI 自然会填充有价值的内容。
坑 5:光配置不迭代
记忆系统配置完就放着不管,是最大的浪费。真正的价值在于持续迭代:每次 AI 犯错,更新文件;每次发现更好的做法,更新文件;每隔一段时间,清理和精简一次。
七、检查清单:你的记忆系统搭好了吗?
□ SOUL.md 写好了,有具体的价值观和行为级描述
□ IDENTITY.md + USER.md 记录了基础信息和偏好
□ AGENTS.md 包含启动流程,以及"行动前先搜索记忆"的规则
□ AGENTS.md 里 MEMORY.md 设置为仅主会话加载
□ TOOLS.md 整理了工具配置和环境信息
□ MEMORY.md 已创建,内容精炼,在 3,000 tokens 以内
□ memory/ 目录已创建
□ AFTER_TASK.md 设置了任务完成强制检查流程
□ HEARTBEAT.md 设置了定期记忆检查,且保持简短
□ 有记忆进化机制(.learnings/ 或手动定期维护)
写在最后
记忆系统的本质,是让 OpenClaw 真正”认识你”——不是靠每次对话重新介绍自己,而是靠一组持续积累、不断进化的文件。
有的人用了一年 OpenClaw,AI 还是不知道他喜欢什么风格、踩过什么坑;有的人用了三个月,AI 已经能精准预判他的需求,几乎不需要重复解释。
差距不在于谁用得更勤,而在于谁的记忆系统在持续进化。
“没有记录,就没有发生。“——AGENTS.md
本文中的配置示例来自真实的 OpenClaw 工作区文件和社区分享,可直接参考使用。部分在线来源已标注,如有错误,欢迎指正。