乐于分享
好东西不私藏

OpenClaw是如何记住你的?深度解析它的记忆系统

OpenClaw是如何记住你的?深度解析它的记忆系统

OpenClaw是如何记住你的?深度解析它的记忆系统

昨天有个朋友问我:哎,你那个OpenClaw小龙虾🦐,它是怎么记住我之前说过的话的?我说这个问题问得好,今天就专门写一篇,来聊聊OpenClaw的记忆系统是怎么实现的。


你有没有想过,AI是怎么"记住"你的?

说实话,我在用各种AI助手的时候,最头疼的一件事就是——它记不住我

你跟它说了一遍你的名字,下次还得再说一遍。你让它帮你记个事,下次它就忘了。你跟它聊了半天的上下文,关掉窗口就没了。

但是OpenClaw不一样,它是真的会记住你

举个例子,我现在和小宝对话,我之前告诉过它我的名字、我的工作、我的偏好,下次我不用再说,它就知道我是谁。这就是记忆系统的魔力。

今天,我就来详细扒一扒,OpenClaw这个记忆系统到底是怎么实现的。保证通俗易懂,不是那种看不懂的技术文档 😂


第一层:存储——分门别类的记忆仓库

首先,OpenClaw的记忆分为两种:

加载规则
💾 存储层 - 文件系统
📥 输入
👤 用户
📌 memory.md长期记忆
📋 memory/yyyy-mm-dd.md每日日志
🔒 私人会话→ 加载 memory.md
🌐 所有会话→ 加载 memory/日期.md

1. 长期记忆:memory.md

这个文件里存的是高价值、低噪音的信息。啥意思呢?比如:

  • • 你的名字、喜好
  • • 重要的决定
  • • 项目总结
  • • 那些需要一直记住的东西

而且这个记忆呢,只有私人会话才会加载。也就是说,只有你一个人的时候,AI才会看到这个记忆,保护你的隐私 ✅

2. 每日日志:memory/yyyy-mm-dd.md

这个更好理解,就是每天的日记。你今天让它干了啥、有什么待办事项、聊了啥重要内容,都会被记在这里。

这个日志呢,是所有会话都会加载的,方便AI跟踪短期任务和历史记录。

你说这是不是挺像人的记忆的?有一个永远记住的重要的事,还有一个每天的流水账 ✍️


第二层:索引——让记忆能被"搜到"

光存起来没用啊,得能找得到才行。这一层,OpenClaw用了两个武器:

🗄️ SQLite 数据库
关键词索引
向量索引
📥 原始数据
📝 文本内容
📦 文本分块
🔢 向量嵌入
🔍 向量索引sqlite-vec
🔑 关键词提取
📊 BM25算法
📚 关键词索引FTS5
统一存储

向量索引:语义搜索

这是啥意思呢?简单说,就是把文字转换成向量(一堆数字),然后通过计算"相似度"来找到相关的内容。

比如你搜"我上次说的那个项目",它不一定包含"项目"这个词,但AI知道你在说什么,因为向量相似度很高。

OpenClaw用的是sqlite-vec这个扩展来实现的,不得不说,开发者们真的很有想象力 👏

关键词索引:精确匹配

有时候你需要精确搜索,比如找某个特定的词。那就要用到FTS5了,这是SQLite的全文搜索功能,基于BM25算法,搜关键词特别准。

这两个结合起来,就是混合索引策略——既要懂你说什么,也要能找到你具体提到的词。


第三层:检索——怎么找到最相关的记忆?

好了,现在记忆有了,索引也有了,那怎么找到最相关的内容呢?

🕐 时间衰减
⚖️ 加权融合
🎯 计分
⚙️ 混合搜索
🔎 用户查询
输入查询
📊 向量搜索语义理解
📝 关键词搜索精确匹配
向量得分 × 0.8
关键词得分 × 0.2
最终得分
近期记忆 ↑旧记忆 ↓
📋 相关记忆

OpenClaw用的是混合搜索算法,简单说就是:

最终得分 = 0.8 × 向量相似度 + 0.2 × 关键词匹配

也就是说,语义理解占大头(80%),精确匹配占小头(20%)。这样既能找到你真正想找的内容,又不会漏掉你明确提到的关键词。

还有一个很聪明的设计——时间衰减机制。啥意思呢?越旧的记忆,权重越低;越近的记忆,权重越高。

你想啊,上周的事和今天的事,哪个更重要?肯定是今天的嘛!这个设计真的太合理了 👍


第四层:写入——怎么让AI记住新东西?

那新东西怎么写进去呢?有两种方式:

🔄 同步机制
📁 文件系统
✍️ 写入方式
📝 手动写入'帮我记住...'
🤖 自动写入Memory Flush
memory.md
memory/日期.md
👁️ chokidar文件监听
🔄 更新索引

手动写入

你可以通过对话让AI记住重要的事。比如你说"帮我记住我老婆的生日是3月15日",AI就会自动把它写进memory.md。

自动写入(Memory Flush)

这个更智能!当对话快结束时(token快用完了),系统会自动把这一次的对话中有价值的信息沉淀到磁盘文件里。

相当于你聊完了,AI会自动帮你做"记忆整理",把重要的东西存下来,下次还能用。

文件监听同步

最后还有一个细节——用chokidar监听文件变化。只要文件有改动,索引就会自动更新,保证内存和磁盘的数据是一致的。


总结一下

📤 输出层
📋 相关记忆上下文
🧠 检索层
⚖️ 混合搜索0.8×向量+0.2×关键词
🕐 时间衰减
🔍 索引层
🔢 向量索引sqlite-vec
📚 关键词索引FTS5
🗄️ SQLite
💾 存储层
📌 memory.md长期记忆
📋 memory/日期.md每日日志
📥 输入层
💬 用户对话
📝 手动指令
⚡ 自动触发

你说这个设计是不是挺巧妙的?

  1. 1. 分层存储:长期记忆 + 每日日志,分开管理
  2. 2. 混合索引:向量 + 关键词,既懂语义又能精确搜索
  3. 3. 智能检索:加权融合 + 时间衰减,找到最相关的内容
  4. 4. 自动同步:手动+自动写入,文件监听保证数据一致

这不就是一个活脱脱的"记忆系统"吗?AI能记住你的名字、你的偏好、你之前说过的话,下次还能继续聊——这才是真正的"养成系"AI助手啊!

反正我是觉得,这个设计思路真的很值得学习。数据在本地,AI在云端,还能被养成,有记忆,知道你的偏好,主动提供服务——这才是我们想要的AI助手 👍


好了,关于OpenClaw的记忆系统,今天就聊到这。如果你想了解更多关于OpenClaw的技术细节,或者想自己动手搭建一个,记得关注我,后面还有更多干货~

有问题评论区见!