
大多数 AI Agent 框架用向量数据库存储记忆,用复杂的 RAG 管道检索上下文。OpenClaw 选择了一条截然不同的路——纯 Markdown 文件 + SQLite 向量搜索的混合架构。
这个设计看似简单,实则蕴含着深刻的产品哲学:记忆应该是透明的、可编辑的、可版本控制的。
身份层:5 个 Markdown 文件定义一切
OpenClaw 用 5 个纯文本文件定义 Agent 的完整身份:
SOUL.md | ||
user.md | ||
memory.md | ||
tools.md | ||
bootstrap.md |
为什么用 Markdown 而不是数据库?
正如 Cenrax 在其分析中指出的:OpenClaw 的整个记忆系统运行在 Markdown 文件上。纯文本,就在你的项目目录里,你可以读取、编辑、用 git 版本控制,或者随时删除。
这带来了几个独特优势:
透明性:你可以直接打开文件看到 Agent "记住"了什么 可编辑性:不满意 Agent 的记忆?直接编辑文件 版本控制:用 git 追踪记忆的变化历史 可移植性:复制文件夹就能"克隆"一个 Agent 的身份 零依赖:不需要运行任何数据库服务
搜索层:SQLite-vec 向量搜索
纯文件存储解决了"写入"问题,但"检索"需要更智能的方案。OpenClaw 的记忆搜索系统(src/memory/)基于 SQLite-vec:
架构概览
记忆写入:Agent 决定记住某事 → 写入 memory.md → 自动索引到 SQLite-vec
记忆检索:Agent 需要回忆 → memory_search 工具
→ 向量相似度搜索(语义匹配)
→ 关键词搜索(精确匹配)
→ 混合排序 → 返回 Top-K 结果
技术细节
| 向量存储 | ||
| 嵌入模型 | ||
| 分块策略 | ||
| 搜索方式 | ||
| 索引范围 | ||
| 去重机制 |
正如 PingCAP 的分析所说:OpenClaw 的持久记忆是一个完全由 SQLite 驱动的 RAG-lite 本地索引系统。不需要 Docker 容器,不需要向量云服务,所有数据都在本地。
高级记忆方案:QMD
社区还开发了 QMD(Query-Memory-Decide)方案来增强 OpenClaw 的记忆搜索:
向量语义搜索:使用本地 GGUF 嵌入模型,找到概念相似的内容 混合搜索 + LLM 重排序:并行运行向量搜索和关键词搜索,用 Reciprocal Rank Fusion 合并结果,再用本地 LLM 重排序 自动记忆管理:Hindsight 等工具可以自动化整个记忆管道,Agent 不需要自己决定"记住什么"

安全层:记忆作用域隔离
记忆系统的安全设计至关重要——你不希望群聊中的其他人能访问你的个人记忆。
| 主会话 | |||
| 群组会话 | |||
| 子 Agent 会话 |
这种作用域隔离确保了:
个人记忆不会泄露到群组对话中 子 Agent 可以利用父 Agent 的记忆,但不能修改 每个通道的会话数据相互隔离
记忆漂移问题与解决方案
OpenClaw 最近引入了 before_prompt_build 运行时钩子,专门解决记忆漂移(Memory Drift)问题。
什么是记忆漂移? Agent 虽然有语义记忆工具,却无法正确检索已存储的上下文。表现为:
Agent 反复询问已经告诉过它的信息 Agent 的回答与之前的对话上下文不一致 记忆搜索返回了相关结果,但 Agent 没有正确利用
根本原因:LLM 不总是主动调用 memory_search 工具。即使记忆存在,如果 LLM 没有"想到"去搜索,记忆就形同虚设。
解决方案:before_prompt_build 钩子在每次构建提示词之前自动执行记忆搜索,将相关记忆注入到系统提示词中,而不是依赖 LLM 主动调用工具。
正如 db0.ai 的分析所说:OpenClaw 的记忆不是模型的能力——它是系统设计的产物。这意味着它与人类记忆有本质区别:人类记忆是神经网络中的权重,OpenClaw 的记忆是文件、数据库索引和一套将信息送入模型视野的机制。
与其他方案的对比
| 存储 | ||||
| 透明度 | ||||
| 隐私 | ||||
| 版本控制 | ||||
| 搜索能力 | ||||
| 运维成本 |
总结
OpenClaw 的记忆系统证明了一个反直觉的观点:最简单的方案往往是最好的方案。纯 Markdown 文件提供了无与伦比的透明性和可控性,SQLite-vec 提供了足够好的语义搜索能力,两者结合形成了一个零运维、完全本地、高度可定制的记忆架构。
参考链接
PingCAP - Using SQLite for AI Agent Memory with OpenClaw db0.ai - How OpenClaw's Memory System Actually Works Cenrax - How Markdown Replaces Vector Databases Lumadock - Advanced Memory Management in OpenClaw Hindsight - The Memory Upgrade Every OpenClaw User Needs Moely - OpenClaw Memory Design
夜雨聆风