openclaw_把记忆变成配置文件
探讨OpenClaw 在记忆存储与长期知识蒸馏方面的技术背景与用户记忆管理方法。
1 技术背景
当下多数 AI Agent 的能力已经趋同:接入模型、调用工具、操作本地环境、支持 skill / mcp 扩展。这些能力本身并不是全新发明。可能在某个时间点上,大模型成熟了,工具生态完善了,成本降低了,于是一个产品突然爆发。
Openclaw 做的事情,更像是把这些能力系统性地整合到一起,并且打磨到可日常使用的程度。从创新角度看,它与很多 agent 的差异,不一定在“会不会用工具”,而更可能在记忆的设计方式:分层抽象、可回溯、可编辑,并且以 markdown 明文形式存储在本地。
不少 agent 的长期记忆依赖向量库存储或隐式 embedding,对用户来说相对黑箱;而 openclaw 将部分长期特征外置为结构化文本,这是一个方向性的差异。
1.1 人格建模:从权重到配置
我原来以为,如果要训练一个“数字人”,必须训练一个模型、调参、微调权重。现在看,至少有一部分稳定特征,是可以抽取为文字的。更准确地说,并不是“非参数化建模取代了参数模型”,而是:一部分人格特征被显式化为可编辑的结构化文本。
原来是:不可解释、难控制、成本高。现在是:可解释、可编辑、可更新、可组合。
人格不再完全藏在“黑箱权重”里,而是部分迁移到“配置文件层”。虽然可以抽取你的“骨架”,但未必能完整复现你的“活性”。但在对外互动上,这种抽取往往已经足够。
如果每隔一段时间重新蒸馏、修订、进化,就不是一次性建模,而更像一个持续自我认知的工具。
1.2 记忆是否必要
多数日常信息,并不需要长期结构化保存:查完就走,是大脑的正常工作方式;日常聊天,本来也不是为了被检索;很多阅读,本质上是体验消费。openclaw 的存在,某种程度上是在提醒我们:把真正有价值的行为模式与认知轨迹提炼出来,并没有想象中那么难。
2 用户记忆
核心机制:长期记忆蒸馏与维护。
2.1 原理
与不少 agent 不同,openclaw 强调“对单一用户的持续理解”。像雇了一个固定小时工。以前家政公司每次派不同的人,每次都要重新解释一遍。现在固定一个人,他熟悉你的环境与偏好。但一个靠谱的小时工,不会因为熟悉就把你家翻个底朝天。他只会在工作过程中记录遇到的重要事项。
因此它更像是事件驱动的更新机制,而不是无差别扫描。记忆大致可分为三层:
-
当前对话上下文(活跃工作区)
-
每日短期记忆(抽取重要事件)
-
长期记忆(偏好与行为模式的蒸馏)
这是一个从原始记录到可复用心智模型的过程。
2.2 如何操作记忆
-
不手动操作,系统会定期触发蒸馏(例如 runMemoryFlushIfNeeded)
-
显式指定:“请记住,我在北京,做后端开发,技术栈 Go 和 Python”
-
批量抽取:让它分析历史对话,生成或更新 MEMORY.md
3 数据存储
3.1 配置文件
项目配置主要涉及两个文件:
-
源码目录中的
.env文件,用于设置系统运行的环境变量。 -
根据用户配置生成的
/home/node/.openclaw/openclaw.json文件。
3.2 用户相关数据
$HOME/.openclaw
├── agents/
│ ├── main # 主 agent
│ │ └── sessions/*.jsonl # 原始对话
└── workspace/
├── memory/ # 每日日志(Memory)
│ ├── 2026-02-10.md
│ ├── 2026-02-11.md
│ └── 2026-02-12.md
└── MEMORY.md # 长期核心记忆(介于 Memory 与 Learning 之间)
以上内容均为明文的 json 与 markdown 文件。
通过这些文件,可以看到系统生成的结构化记录、执行过程,以及它如何从对话中抽取并形成用户画像。*
3.3 日常对话数据
之前版本似乎保存在 sqlite 数据库中,用户不可直接访问,只能通过 WebUI 的 sessions 查看(仅能看到对话内容,无法看到完整过程)。
当前版本观察到,对话保存在:
$HOME/.openclaw/agents/main/sessions/*.jsonl
通过 id 与数据库内容关联。我的理解是:每个 session 对应一个 jsonl 文件(新 session 可通过右下角按钮创建)。这种方式使对话记录更透明,用户可以直接查看完整的会话数据。
3.4 抽出的数据
workspace 目录下保存的是用户相关的分层抽象数据,以 markdown 明文形式存在。
源码中的 /docs/zh-CN/reference/templates/ 目录提供了数据模板,用户可以通过编辑这些模板,定义使用者与机器人的结构信息。
| 层级 | 核心文件 | 内容与作用 | 特点 |
|---|---|---|---|
| 静态档案层 | USER.md |
你的基础身份信息:位置、时区、职业等。 | 结构固定,需主动告知或首次触发更新。 |
| 动态记忆层 | MEMORY*.md |
偏好、决策与重要事实。AI 自动判断并记录。 | 格式固定,内容动态生成与覆盖。 |
| 会话日志层 | memory/[日期].md |
每日具体的对话与任务记录。 | 按日期记录,用于追溯历史。 |
4 相关资料
注意:openclaw 迭代较快,目前仅基于 26 年 2 月初的版本进行分析,后续可能发生变化。
官方文档(记忆部分)
### 🔄 Memory Maintenance (During Heartbeats)
Periodically (every few days), use a heartbeat to:
1. Read through recent `memory/YYYY-MM-DD.md` files
2. Identify significant events, lessons, or insights worth keeping long-term
3. Update `MEMORY.md` with distilled learnings
4. Remove outdated info from MEMORY.md that's no longer relevant
关键字
summarize,update,memory,MEMORY.md
相关代码
-
src/memory/manager.ts
-
src/auto-reply/reply/memory-flush.ts
重点接口
- runMemoryFlushIfNeeded()
技术文档
- docs/concepts/memory.md
5 使用体验
我其实并没有使用 Openclaw 很长时间,让它慢慢总结我的喜好。而是把之前和其它模型的对话喂给了它。过去和其它大模型有不少我很喜欢的对话,我都保存了下来。于是我把这些记录交给 openclaw,让它基于这些内容为我生成一份 MEMORY.md。那些对话不仅有工具性的,比如改代码、分析股票;也包括我对很多事情的判断和态度。大概二十多个 session,几万字。生成结果让我有点意外——它好像比我还了解我自己。
在界面回复里,它只提到了一些关键点;但当我打开系统里的 MEMORY.md 时,看到的是更完整的抽象层。某些偏好、某些倾向,它识别到了,却没有在对话中直接说出来,而是写进了长期记忆里——看破不说破。
更重要的是,这一切都是明文的。我能看到它如何抽取、如何组织、如何归纳。反思,之前我们和大模型聊天,它大概也会形成某种“印象”,只是存在云端。那种感觉有点失衡——它们早已经了解你,但你看不到它如何理解,也不知道画像到底是什么样。
而在 openclaw 里,这个“画像”变成了可以审视、可以修改、可以迁移的东西。如果换模型,只要把 MEMORY.md 提供给新的模型,它就能在一定程度上继承这种理解。
更多推荐
所有评论(0)