一开始想到记忆系统,不是因为“想让 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 时代,忘记可能和记住一样重要
聊到后面越来越觉得,现有系统普遍有一个天然倾向:怕漏——所以多存一点,多召回一点,多给模型一点上下文。
但如果信息生产成本已经趋近于零,这个策略可能恰好反了:以前信息贵,怕丢;现在信息便宜到泛滥,怕的是污染。
所以一个好的个人记忆系统,甚至可能应该非常激进地遗忘:
- 单次经历很快沉底;
- 重复出现才被强化;
- 反复验证以后才沉淀为经验;
- 被新认知替代的旧内容退出日常召回;
- 明显错误的信息,不能因为“曾经写入过”就一直待在影响区;
- 能随时重新生成的一般知识,也没必要长期占据个人记忆。
这样系统追求的就不是“完整”,而是长期保持干净。
现在形成的几个方向
走到这里,还远远谈不上一个完整设计,但有几个方向已经比较稳定了。
- 核心不是“存储 + 搜索”,而是形成和演化。
- 前面必须有漏斗——不能把原始对话直接当长期记忆。
- 中间过程需要延迟处理——尤其要避免把思考过程里的错误和临时判断永久化。
- 经历和经验应该区分——单次经历的长期影响力应该很低。
- 遗忘不是副作用,而是一等能力。
- 一条记忆同时涉及时间、事件和注意力——而不是只靠一个 embedding。
- 问题本身有很高的信息密度和触发价值——值得作为独立索引信号,而不是和回答混在一起平均处理。
- 干活和梳理需要两套召回策略——一个只想知道现在,一个需要知道怎么走到现在。
- 记忆和笔记不是同一种东西——笔记是人的知识产物,记忆是系统当前的认知状态。
- 现在不必急着自己从零造——更合理的是继续看 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 的分层演化比较有启发性,但对你现在“简单、自动、统一记忆”的目标不是第一选择 |