OpenClaw记忆层详解

最近 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 词。这个数字挺中肯的,既保证了搜索的精确度,又不会让上下文显得太支离破碎。

数据流转全过程:

  1. 扫描文件 -> 对比 files.hash
  2. 内容变动 -> 调用 chunkMarkdown 模块产生 chunks
  3. 计算向量 -> 先查 embedding_cache,不中则调 API 并存入 embedding_cache
  4. 建立索引 -> 将数据同步插入 chunks_vec (用于算距离) 和 chunks_fts (用于搜关键词)。
  5. 搜索时 -> 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 文章,到底"知道"了你多少秘密。至于它是真的记住了你,还是只是在磁盘上记了一笔账,那就看你怎么定义"记忆"了。

相关推荐
___波子 Pro Max.5 小时前
AI与AGI的区别及未来展望
ai·agi
kali-Myon5 小时前
2025春秋杯网络安全联赛冬季赛-day2
python·安全·web安全·ai·php·pwn·ctf
Olamyh6 小时前
【 超越 ReAct:手搓 Plan-and-Execute (Planner) Agent】
python·ai
阿杰学AI6 小时前
AI核心知识92——大语言模型之 Self-Attention Mechanism(简洁且通俗易懂版)
人工智能·ai·语言模型·自然语言处理·aigc·transformer·自注意力机制
kali-Myon6 小时前
2025春秋杯网络安全联赛冬季赛-day1
java·sql·安全·web安全·ai·php·web
Ryan老房6 小时前
智能家居AI-家庭场景物体识别标注实战
人工智能·yolo·目标检测·计算机视觉·ai·智能家居
kali-Myon7 小时前
2025春秋杯网络安全联赛冬季赛-day3
python·安全·web安全·ai·php·web·ctf
ghostwritten7 小时前
Cursor 代码库索引三剑客:Local、Worktree、Cloud 指南
ai·cursor
holeer7 小时前
【V2.0】王万良《人工智能导论》笔记|《人工智能及其应用》课程教材笔记
神经网络·机器学习·ai·cnn·nlp·知识图谱·智能计算