关于 AI 记忆系统的一轮思考

一开始想到记忆系统,不是因为"想让 AI 记得更多",而是不想每次重新输入一遍规则和约定:项目怎么做、偏好是什么、哪些坑踩过------说一次,就该记住。

真正用起来之后,问题才暴露出来:AI 记忆会记错,而一个错误的记忆会一直干扰。再遇上"怕漏就全存"的防御性记忆,假设、错误、中间方案、随口一说统统留下,两头都没做好:该记得的没记,该删的没删,系统只会越努力越脏。

问题是真实的,但也不能因噎废食------省掉重复输入的便利,和记忆记错带来的污染,是同一件事的两面。所以才有这轮讨论:怎么只留下真正该留的,让错误和垃圾不再长期干扰。

"记住系统"和"记忆系统"不是一回事

现在大多数 AI Memory 给人的感觉,还是那句老话:存下来,然后以后能搜回来。听起来没什么毛病,但这更像一个"记住系统"------东西放进去,需要时再取出来,本质上是个仓库。

人的记忆显然不是这样。你不会把每天发生的一切都完整保存:很多细节过几天就没了,一些反复出现的经历慢慢凝成经验,某些以前很重要的东西会随着时间悄悄失去分量,偶尔记错的一件事,也不该几十年后还一直干扰判断。

所以这里值得较真一下:**记忆不是存储结果,而是一个持续变化的过程。**它在形成、压缩、更新、整理,也在遗忘,还会在特定情况下重新被想起。仓库只关心东西放没放进去;记忆关心的,是这件事现在在我这里处于什么状态。

这也是为什么光讨论向量数据库、知识图谱、RAG,总觉得没有碰到问题的核心。这些东西解决的是"怎么存、怎么找",而真正难的是:

什么应该留下,它现在还应不应该影响我。


漏斗可能比"记忆库"更重要

后来聊着聊着,一个比较有意思的方向出现了:漏斗。

之前所有讨论其实都默认了一件事------对话发生了,就该开始抽取 memory。但人讨论问题的时候,中间过程本来就是不稳定的:可能先觉得 A 对,后来发现不对;可能为了讨论暂时假设一个前提;可能 AI 理解错了,用户过几轮才纠正;甚至聊到最后根本没有结论。这时候实时抽取长期记忆,天然危险。

所以问题出在入口。记忆不该是:

信息 → 记忆

而应该是:

大量经历 → 少量候选 → 反复验证和整理 → 更少的稳定记忆。

这里"延迟记忆"就变得重要:不是消息一出现就决定要不要永久保存,而是让它先待在短期状态里,等这段讨论差不多走完,再回头看------哪些只是中间过程?哪些被推翻了?哪些只是暂时方案?哪些才是真正留下来的认识?

这个转变我觉得是关键的一步:它把问题从"怎么存、怎么找"拉回到了"什么够格进来"。至少,不会在一个人还没想清楚的时候,AI 已经替他把半成品刻进石头里。


经历和经验可能必须分开

继续往下想,又碰到一个边界:经历不是经验。

"昨天这个 SQL 出了一个问题",是经历;"遇到这种加载异常时,应该先确认实际加载的对象,再分析为什么不一致",才更接近经验。如果一次经历发生之后就获得长期高权重,问题会很严重------单次经历可能恰好是异常情况,甚至可能本身就是错的。

所以非短期的经历,权重应该下降得非常快,甚至是断崖式下降,而不是慢慢线性衰减。刚发生时,它对当前上下文很重要;过了一段时间,如果它没有被重复触发、没有被验证、没有沉淀成经验,就应该迅速沉底。只有反复出现、经过验证、或者被整理为更高层认识以后,它才重新获得长期影响力。

这样可以防一个很讨厌的问题:

偶尔记错一次,结果这个错误以后不断被召回,年复一年干扰模型。

人的记忆虽然不可靠,但至少很多偶发细节本来就会淡掉。AI 记忆如果"永久保存 + 永久可检索",在这件事上反而比人脑更糟。


时间、事件、注意力其实同时存在

后来又发现,记忆不能只按照时间组织。一条记忆往往同时处在三个维度里。

一个是时间:什么时候发生,什么时候知道,什么时候形成判断,什么时候失效。它管的是先后和版本。

一个是事件:它在一件事情的发展过程中处在什么位置。比如:

出现问题 → 提出 A → 尝试 A → 失败 → 转向 B → 最后采用 C。

如果只保留 C,干活当然够了,但以后想复盘为什么最后变成 C,就断掉了。它管的是因果和演化。

还有一个是注意力。有些东西已经过去半年了,平时几乎完全不用想起,但今天一旦重新开始改那个项目,它的重要性会突然回来。它管的是"现在该想起什么"。

所以时间越近,不等于越重要;事件越核心,也不意味着任何时候都应该被召回。注意力更像是"当前情况下,这条记忆值得不值得浮上来"。

这三个维度不是三种记忆,而是同一条记忆同时拥有的三个坐标。整理也不是简单排序,而是重新组织这三种关系------这大概才是记忆系统真正难的地方。


干活和梳理应该是两种不同召回

这个思路随后又带出了一个挺实用的区分。

平时真正干活的时候,人其实不想看到历史垃圾,此时最好只告诉我一句:现在有效的结论是什么,越短越好。

但有时候又会需要另一种模式:当时为什么变成这样?这时候旧方案、失败尝试、关键转折、当时提出的问题,又全都有价值。

所以:**干活模式和梳理模式可以共享同一份记忆,但走两条完全不同的召回路径。**干活模式要的是当前有效、高置信、少噪声;梳理模式要的是事件轨迹、历史版本、转折和因果。

这样"遗忘"这个词可能都需要重新理解:有些东西不一定真正删除,它只是不应该再影响日常工作;需要复盘的时候,仍然可以被拉出来。这和 Git 有一点像------当前分支应该很干净,但历史并没有因此消失。


问题可能比回答更值得重视

这个讨论里我觉得另一个很重要的发现,是:问和答的价值完全不对称。

AI 的答案太便宜了。一个问题只有十几个字,回答可以几千字;但真正反映注意力、疑惑和认知变化的,很多时候反而是那个问题------尤其是连续追问。这次其实一路是:

AI 记忆系统有哪些

→ 为什么会产生垃圾

→ 人是怎么记忆的

→ 有没有类似人的记忆方向

→ 为什么没人横推

→ 延迟记忆有没有人做

→ 漏斗行不行

→ 记忆和笔记怎么区分

→ 时间、事件、注意力怎么办

→ 问和答是不是根本不同权

→ 经历和经验是不是应该分开

如果只保存最后几个"事实",实际上会丢掉很多有价值的东西。因为这串问题本身就在描述:**到底是什么问题一直没有被满足。**哪怕把 AI 的长回答全部删掉,这条问题链依然很有价值------它暴露的是你为什么问、在哪里反复纠正、什么一直没被满足。

这也再次体现了 Sift 那类东西的价值:真正值得整理的不只是 AI 给出的答案,而是对话中逐渐显露出来的认知主线。


问题可能适合成为记忆的"触发面"

一度想到过一个更激进的模型:Question + Current Answer------问题负责"什么时候想起",答案负责"现在知道什么"。

但后来又意识到,如果所有记忆都强行变成 QA,也会有问题:不是所有经验天然都有一个问题;一个答案里也可能藏着好几个能独立变化的认识。

所以现在更像是走到了一个中间位置:**记忆本体和问题索引可以分开。**一个记忆本身仍然是一条认知、经验、事实或者状态,但它可以挂一组问题形式的触发索引:

什么情况下应该想起我?

这个思路可能比单纯给记忆正文做 embedding 更有意思。普通向量检索解决的是"哪段内容和当前文本比较像";问题索引表达的是"哪种疑问出现的时候,这条记忆才真正有用"------这两个不是一回事。

而且真实问题经常高度依赖上下文。比如"这个还能用吗?"原问题本身没有多少信息,系统可以把它补全成"Supermemory 自托管以后,是否适合作为多个 Agent 共用的长期个人记忆后端?",再拿这个问题去做索引。

所以这里已经不只是"给内容做一个向量",而是在考虑:记忆的内容是什么,以及什么情况应该触发这段内容。


记忆需要整理,而且整理不是写笔记

另一个容易混起来的地方,是记忆整理和笔记整理。后来我们把它们分开了:

笔记的对象是人 ------它要完整、可读、有上下文,能讲清楚"为什么"; 记忆服务于未来的交互------它更在乎"当前应该怎么理解这件事"。

所以以前考虑过 A,后来改成 B:笔记可能很值得保留 A → B 的完整过程;但干活时使用的记忆,很可能只需要"当前是 B,A 已失效"------如果需要复盘,再沿历史找到 A。

也因此,记忆的整理应该更像一套维护动作,而不是"把 memory 写成一篇更漂亮的文章":

  • 合并重复认识;
  • 把多次经历压成经验;
  • 修正错误;
  • 降低过期东西的影响力;
  • 标记失效;
  • 建立事件关系;
  • 必要时真正遗忘。

AI 时代,忘记可能和记住一样重要

聊到后面越来越觉得,现有系统普遍有一个天然倾向:怕漏------所以多存一点,多召回一点,多给模型一点上下文。

但如果信息生产成本已经趋近于零,这个策略可能恰好反了:以前信息贵,怕丢;现在信息便宜到泛滥,怕的是污染。

所以一个好的个人记忆系统,甚至可能应该非常激进地遗忘:

  • 单次经历很快沉底;
  • 重复出现才被强化;
  • 反复验证以后才沉淀为经验;
  • 被新认知替代的旧内容退出日常召回;
  • 明显错误的信息,不能因为"曾经写入过"就一直待在影响区;
  • 能随时重新生成的一般知识,也没必要长期占据个人记忆。

这样系统追求的就不是"完整",而是长期保持干净。


现在形成的几个方向

走到这里,还远远谈不上一个完整设计,但有几个方向已经比较稳定了。

  1. 核心不是"存储 + 搜索",而是形成和演化。
  2. 前面必须有漏斗------不能把原始对话直接当长期记忆。
  3. 中间过程需要延迟处理------尤其要避免把思考过程里的错误和临时判断永久化。
  4. 经历和经验应该区分------单次经历的长期影响力应该很低。
  5. 遗忘不是副作用,而是一等能力。
  6. 一条记忆同时涉及时间、事件和注意力------而不是只靠一个 embedding。
  7. 问题本身有很高的信息密度和触发价值------值得作为独立索引信号,而不是和回答混在一起平均处理。
  8. 干活和梳理需要两套召回策略------一个只想知道现在,一个需要知道怎么走到现在。
  9. 记忆和笔记不是同一种东西------笔记是人的知识产物,记忆是系统当前的认知状态。
  10. 现在不必急着自己从零造------更合理的是继续看 Hindsight、OpenViking 等现有系统已经解决了哪些地方、哪些地方和这些思路根本冲突;如果后面真要做,更适合从现有系统上改,而不是重新实现存储、检索、MCP、API 这些成熟的部分。

我们需要的不是一个什么都记得的 AI,而是一个知道什么该忘、什么该留下、什么现在不该影响你,但以后又能沿着轨迹找回来的记忆系统。


附录:可以尝试的几个记忆系统

系统 我们最后的定位 主要原因
Hindsight 第一优先试 retain / recall / reflect 边界清楚;支持 session 结束后统一 retain;多 Agent、自部署、MCP/API 都比较完整;也最适合以后加你说的"漏斗"
OpenViking 第二优先,重点观察 火山引擎开源;Memory / Resource / Skill 统一 Context;本身已经有 commit → 提取 → merge/skip 的巩固味道,理念和我们的方向比较近,但目前工程还在快速迭代
Supermemory 值得试,但后来降级 产品化、自动化、跨 Agent 做得漂亮;但我们专门看 Issues 后发现 self-hosted 还有不少核心链路问题,所以不建议第一时间把长期记忆全押进去
Mem0 / OpenMemory 成熟基准线 生态大、简单、容易部署;但是越来越偏"多存 + 检索时选对",对你最在意的垃圾控制、巩固、遗忘并不是最匹配
TencentDB Agent Memory 值得研究,不太适合现在直接用 L0→L1→L2→L3 分层蒸馏很符合我们的思路,但系统比较重,工程问题也不少
MemOS 有意思的研究对象 Trace → Policy → World Model → Skill 的分层演化比较有启发性,但对你现在"简单、自动、统一记忆"的目标不是第一选择
相关推荐
文谦南宁AI普工1 小时前
越权链的三个可检测点:从"检测意图"转向"检测角色被使用"(附可运行检测器)
aigc·ai编程
HjhIron2 小时前
从零手写多Agent编排框架:AI Agent Harness 工程化实战指南
ai编程
文谦南宁AI普工2 小时前
从 least privilege 到 least agency:给 Agent 的凭证做一次"不该有权限"的审计
aigc·ai编程
疯狂的魔鬼2 小时前
写给 AI 的约束,为什么写了 40 条也没用
ai编程·vibecoding
用户539418729072 小时前
Cursor 用着用着就抽风?补全失灵、Agent 乱改、一直转圈、额度狂掉,我整理了一张对症排查表
ai编程·cursor
ZzT2 小时前
一周涨 24 万星的 REA,新手和逆向老手为什么评价相反
安全·ai编程
李剑一2 小时前
“79岁陶华碧靠AI一年赚54亿”?别急着转发,先看一瓶辣椒酱的“AI含量”有多高
aigc·ai编程
莪_幻尘3 小时前
全网都在聊的 FDE,到底是啥?一篇拆透
aigc·ai编程