为什么需要记忆
大语言模型是「无状态」的对话系统:
- 关掉网页,下次打开,之前聊的全忘了
- 同一对话内,聊久了前面的内容也会被挤丢(上下文压缩)
OpenClaw 的记忆机制就是为了解决这个问题。
记忆架构
采用纯文本 Markdown + 轻量级 SQLite 的混合方案,不依赖重型向量数据库。
短期记忆
位置:sessions/ 目录,按天生成日志文件(如 2026-04-08.md)
特点:
- 系统启动时只加载最近 1-2 天的日志到提示词
- 保证短期对话连贯性
- 不会消耗过多处理资源
长期记忆
位置:MEMORY.md 文件
工作流程:
- 当聊天记录快要触发上下文压缩时,系统在后台拦截
- 强制大模型提炼最重要的事实和知识
- 写入 MEMORY.md 长期记忆文件
示例结构:
# 核心事实与偏好
## 用户画像与技术栈
职业身份:技术博主、资深开发工程师
核心技术:精通 Java 和 SpringBoot 开发
沟通偏好:不喜欢长篇大论,偏好图文并茂、大白话解释
## 关键历史项目
2026-02-15:用户正在规划图解网络系列内容
2026-03-07:用户上线了小林简历网站业务
2026-03-20:用户要求代码示例优先采用 Java 17 新特性
记忆检索
MEMORY.md 会随时间变得庞大,每次都全量加载不现实。
解决方案:
- 内嵌带向量搜索扩展的 SQLite 数据库作为高速缓存索引
- 新内容写入 MEMORY.md 时,后台切分成小块并转换成向量存入 SQLite
- 查询时,把问题转换成向量进行相似度比对
- 同时结合 BM25 算法进行关键词匹配
- 双路召回,精准捞出最相关的历史记忆
底层复杂检索交给 SQLite,人类可读数据留在纯文本文件。
自我修正机制
传统 AI 的问题:纠正错误后,下次新对话照样犯。
OpenClaw 的解决方案:
- 执行任务踩坑时,启动专门的反思环节
- 拆解失败原因、正确操作逻辑、需要规避的问题
- 总结成可复用的避坑经验
- 明文写入 MEMORY.md
- 后续执行同类任务时,自动加载避坑指南
形成正向循环:用得越多 → 越懂你 → 犯错越少。
设计优势
透明可控:
- 记忆存在本地纯文本文件,随时可查看
- 记错了直接用记事本打开删掉那行就行
- 可以用 Git 追踪记忆变化
隐私安全:
- 记忆存在本地,不上传云端
- 你的记忆属于你,不属于厂商
可移植:
- 打包文件夹就能分享给同事
- 换电脑直接复制过去继续用
烧 Token 的原因
记忆机制是 OpenClaw 烧 Token 的主要原因之一:
- 心跳保活:每半小时唤醒一次,每次都要读取完整记忆文件
- 自主反思:执行报错后不断分析重试,累积上下文
- 定期总结:把上万字聊天记录交给大模型压缩提炼
- 记忆召回:每次对话都要塞回历史记忆片段
总结
OpenClaw 的记忆机制核心思路:简单即可靠。
没有用复杂的向量数据库或知识图谱,就是最朴素的 Markdown 文件 + SQLite。但正是这种朴素,让它变得异常可靠和可控。
简单 → 透明 → 可控 → 信任