三个AI工具,三个失忆症患者。
作者每天用Claude Code、Cursor、Codex写代码。跟Claude说"我后端用Python",三回话后它推荐TypeScript。在Cursor搭好的项目结构,切到Codex修个bug——对面一脸茫然。每个工具都有自己的记忆小黑屋,互相不串门。
他试过向量库+RAG。几百条记录后,两年前的偏好因为措辞匹配度高,压过了昨天刚说的话。检索系统对时间毫无概念。
然后他开始读1885年的心理学论文。
一个德国人用 nonsense 音节算出了遗忘公式
Hermann Ebbinghaus,德国心理学家,花了数年背诵"DAX""BUP""ZOL"这类无意义音节,测试遗忘速度。结果成为心理学史上被复现最多的发现之一:遗忘曲线。
核心发现:记忆衰减是指数级,不是线性。你忘得最快的是前几天,剩下的一点慢慢消失。但关键在这里——每次回忆都会让衰减变慢。常翻的记忆变牢固,从不碰的彻底消失。
公式长这样:R = e^(-t/S)。R是记忆留存率,t是时间,S是记忆强度。Anki这类间隔重复软件用的就是同一套数学。
作者意识到:三个月前随口提的偏好,权重应该低于昨天 reinforced 的内容。高频访问的上下文要坚挺,老旧的 trivia 该悄悄退场。
他把这套搬进了 AI 记忆系统。
Smara:给记忆加半衰期
他造了 Smara,一个记忆 API。语义向量搜索 + Ebbinghaus 衰减评分。每条记忆有个0到1的重要性分数,查询时重要性会缩放记忆强度——重要的衰减慢,琐碎的消失快。
检索分数混合语义相关性和时间衰减。语义搜索占主导,但 recency 能打破平局。昨天中等相关的记忆,可以压过三个月前高度相关的内容。
系统还追踪访问模式。每次被检索,记忆就被强化。没人问的记忆自动淡出。具体权重调了很久,但原则简单:相关性 × 新鲜度 × 强化次数。
整个 API 只有三个调用:存记忆、查记忆、删记忆。存的时候带上 user_id、fact、importance。查的时候返回按衰减公式排序的结果。
为什么 RAG 会输给 140 年前的心理学
传统 RAG 的问题不是技术落后,是模型错了。向量相似度假设所有记忆生而平等,但人脑从不这样工作。你不会把三年前某次闲聊和昨天确认的需求放在同一优先级。
Ebbinghaus 曲线的妙处在于:它用数学模拟了"用进废退"。不需要手动清理记忆库,不需要设定过期时间,访问频率自然塑造记忆结构。
作者没提具体准确率数字,但描述了一个典型场景:以前向量库会翻出两年前"可能相关"的偏好,现在 Smara 让昨天的 reinforced 记忆胜出。
这套机制对多工具场景尤其关键。Claude、Cursor、Codex 共用同一个 Smara 后端,终于能记住你是谁。
如果 OpenAI、Anthropic、Cursor 各自做自己的记忆层,用户还是得当复读机。但一个第三方记忆协议,会不会成为 AI 时代的"浏览器 cookie"?
热门跟贴