最近 OpenClaw 挺火的,作为一个个人 Agent 产品,它的思路确实有点意思。今天咱们抛开那些天花乱坠的宣传,直接钻到它的"脑壳"里,看看它的记忆层到底是怎么跑的。
说真的,OpenClaw 并没有去折腾那些玄乎的向量数据库,而是反其道而行之:纯 Markdown 文件 + 混合搜索。很多人被它那个能记起几周前聊了啥的"持久记忆"给惊艳到了。它不像传统的 RAG 喜欢把数据塞进向量黑盒,而是追求一种"简单粗暴"的透明度。
![[assets/Pasted image 20260208204108.png]]
1. 核心逻辑:文件优先 (File-First)
OpenClaw 没用那些高大上的大厂方案,它觉得与其把记忆藏在只有机器看得懂的数据库里,不如直接存成 Markdown 放在本地(一般在 ~/clawd/)。
这种"土法炼钢"其实有几个实打实的好处:
- 看得见摸得着:你可以直接用 Windows 记事本或者 VS Code 去翻、去改你的记忆。
- Git 控的天堂:记忆也是文件,直接上 Git,版本管理不要太爽。
- 所见即所得:Agent 以后能记起什么,全看你硬盘里写了什么。
2. 也是"看碟下菜":三层记忆设计
为了在"反应快"和"记得全"之间找平衡,它把记忆分成了三块:
- 短期记忆(每日日志) :
就是memory/YYYY-MM-DD.md。这更像是一个"摆在手边的笔记本",记的是今天的决策和当下的活儿。启动时,它会自动把"今天+昨天"的日记塞进大脑,保证它知道自己刚干了啥。 - 长期记忆 (
MEMORY.md) :
这里存的是"家底"。你的偏好、项目的规矩、不能忘的死命令。为了安全,这玩意儿只有私聊时才加载,群聊里它是闭嘴的。 - 会话存档 (
sessions/) :
这就是完整的聊天流水账。它会用 LLM 自动给文件起一个挺贴切的名字。如果你开了experimental.sessionMemory实验功能,它甚至能带你穿越回几周前的对话。
说到底,它觉得"只有写在磁盘上的才是真记忆"。这种透明感,比起那些动不动就搞向量分块的系统,确实让人心里踏实不少。
3. 混合搜索:别把"天才"给埋没了
OpenClaw 的检索算法默认是 7:3 的比例:
- 向量搜索 (70%):负责"感性认知"。就算你词儿没对上,只要意思差不多(语义相似),它就能翻出来。
- 关键词搜索 (30%) :负责"死理儿"。报错代码、函数名这种东西,语义是没意义的,必须一个字符都不差地撞上。
它底层的 SQLite 配合sqlite-vec插件,居然就把这一套给跑顺了。
这里有个细节:它用的是并集。意思就是,只要两边有一个觉得沾边,它就会把结果拉出来排排坐,而不是像某些保守的系统非要两边都同意才行。
公式长这样:finalScore = vectorWeight × vectorScore + textWeight × textScore
为啥不用那种流行的 RRF(倒数排名融合)?
这就是 OpenClaw 的性格所在了。RRF 像是个"端水大师",它只看排名。不管你第一名比第二名强多少,在 RRF 眼里,第一就是第一,权重都是死的。
但 OpenClaw 这种加权得分融合更像是个"唯才是举"的严师。
- 场景:假设你搜"安装步骤"。向量搜索找到了一个匹配度 0.98 的完美文件;而关键词搜索因为文中反复出现"安装",把一堆垃圾日志也排到了第一,但分数其实只有 0.5。
- 如果是 RRF:这两位"第一名"平起平坐,垃圾日志可能会干扰 AI。
- 在 OpenClaw 里:那个 0.98 的"天才结果"会被赋予极高的权重,直接一脚把 0.5 的"平庸第一"踢开。
简单来说,OpenClaw 更信任那些语义上高度相似的信号。对它这种个人助手来说,它更希望当你问出一句明确的话时,那个"最像"的答案能脱颖而出,而不是被一堆字眼重复的废话给"平权"了。
嵌入模型:本地优先,能省则省
它有一套自动选择的逻辑:本地模型(Gemma 300M) → OpenAI → Gemini。
| 提供商 | 模型 | 规模/维度 | 性能 |
|---|---|---|---|
| 本地 | embeddinggemma-300M-Q8_0 | ~600MB | M1 Mac 上约 50 tokens/sec |
| OpenAI | text-embedding-3-small | 1536 维 | 强力批处理,极速 |
| Gemini | gemini-embedding-001 | 768 维 | 免费或实惠的选择 |
通常它都会设置回退(Fallback)。本地没配就调 API,API 没钱了就退化成关键词搜索,反正不能让它彻底变成瞎子。
4. 上下文不够了?--记忆刷新机制
这是个挺巧妙的招数。当对话太长,马上要撑爆上下文窗口时,OpenClaw 不会干等着被截断。
在快到点儿(比如 200K 窗口跑到 176K)的时候,它会触发一个"静默刷新"。它会像个记性不好的学生在考卷收走前赶紧往小抄上补两笔一样,督促模型把重要的东西赶紧写进 memory/ 目录。写完了,它才能放心地去清理旧的聊天记录。
5. 后台也就是这几张表
OpenClaw 没有去用那些沉重的专业数据库,全靠 SQLite 打通关。索引都存在 ~/.openclaw/memory/{agentId}.sqlite 里,核心就五张表:
files: 记着文件路径和哈希,知道谁动过。chunks: 存储分块文本、所属行号、所属文件、关联的 Embedding。chunks_vec: 专门存原始向量,算相似度就靠它。chunks_fts: 存储文本,为了让你搜关键词秒回。embedding_cache: 懒人神器,算过的向量直接存这,下次不用重复计算。
它的分块策略是每块 400 词,叠 80 词。这个数字挺中肯的,既保证了搜索的精确度,又不会让上下文显得太支离破碎。
数据流转全过程:
- 扫描文件 -> 对比
files.hash。 - 内容变动 -> 调用 chunkMarkdown 模块产生
chunks。 - 计算向量 -> 先查
embedding_cache,不中则调 API 并存入embedding_cache。 - 建立索引 -> 将数据同步插入
chunks_vec(用于算距离) 和chunks_fts(用于搜关键词)。 - 搜索时 ->
chunks_vec+chunks_fts合力筛选 id -> 回chunks表拉取 text 和行号展示给用户。
说到底:OpenClaw 和传统 RAG 有啥区别?
![[assets/Pasted image 20260208203837.png]]
| 视角 | 传统 RAG 玩法 | OpenClaw 的做派 |
|---|---|---|
| 数据源 | 向量数据库(Pinecone 之类的) | 你的 Markdown 文件 |
| 怎么搜 | 基本上只靠向量 | 关键词 + 向量混合 |
| 好读不 | 没戏,只有程序能看 | 你可以直接打开文件夹编辑 |
| 上下文 | 靠程序员手动调 | 自动预压缩和持久化刷新 |
| 怎么翻新 | 经常要全量重做索引 | 它是增量更新,快得很 |
当然了,现在也没几个产品还在用那种"上古时期"的单纯 RAG 了,但 OpenClaw 这种把"文件即真理"贯彻到底的做法还是挺有个性的。
记忆插件扩展:外挂大脑
社区也挺能整活,搞了一堆插件:
- mem0/openclaw: 想同步?用 Mem0 的云端托管。
- graphiti-memory: 喜欢知识图谱的可以玩这个。
- nova-memory: 把记忆塞进 PostgreSQL。
不过,有了openclaw的这个记忆系统也并不是最优的。有 Reddit 网友做了实验,GPT-4 执行任务时,OpenClaw 这种"暴力加载"模式其实挺烧 Token 的。
算笔账:原生 OpenClaw vs. 记忆优先 Agent
| 维度 | OpenClaw 原生模式 | 记忆优先架构 (如 MemU) | 感觉 |
|---|---|---|---|
| Token 消耗 | 45k - 80k / 任务 | 12k - 25k / 任务 | 差了 3-4 倍 |
| 成本 | $12.50 (10项任务) | $3.20 | 贵了不止一点 |
| 准确率 | 8/10 | 9/10 | 差距不大,但胜负已分 |
为什么贵? 因为 OpenClaw 太"单纯"了。它倾向于每次说话都把当天的日志一股脑塞给 AI。这种做法细节最满,但钱包最疼。如果你真的想长用,我建议你可以试试那个 Mem0 插件,它能帮你省下至少 90% 的 Token,还能解决那个"强制刷新"也救不回来的深层遗忘问题。
安全:你的记忆在裸奔吗?
最后说个严肃的。这种"文件优先"带来的便利,其实也是个安全隐患。
思科研究过,现有的 Agent 技能里,26% 都有漏洞。1Password 的评估更狠:偷你一个 API 密钥也就罢了,如果把你那个存着"你是谁、你在干嘛、你跟谁聊过"的所有 Markdown 文件全都卷走,那才叫真正的"开盒"。
![[assets/Pasted image 20260208204024.png]]
当你觉得本地纯文本很方便的时候,在黑客眼里,这也就是一个复制粘贴的事。提示注入这些难题,至今也没个完美的解。
总结
OpenClaw 选了一条很有个性的路:它不要那种高大上的数据库管理,它要的是透明度、可控性和那种"我也能改改"的掌控感。
这种"文件即真理"的写法,在企业架构眼里可能不够严谨,但在一个运行在你自己电脑上的个人助手身上,它提供了一个难得的窗口。你能清清楚楚地看到,这个每天陪你聊天的 AI 文章,到底"知道"了你多少秘密。至于它是真的记住了你,还是只是在磁盘上记了一笔账,那就看你怎么定义"记忆"了。