持久化记忆是每个人都会给自己的智能体添加、但几乎没人维护的功能。这个提议令人无法抗拒:智能体会记住你的模式、你的偏好、上周二的决定,并且每一次会话都比上一次更聪明。而失败模式则更加隐蔽:默认情况下,记忆呈单调增长,而一个关于不断变化的世界的“仅追加”事实存储库,无异于一种缓慢的投毒。被迁移的 API、被重组的团队、被推翻的架构决策 —— 所有这些都与新鲜事实并排存在于存储库中,以同样的权威性被检索,并以同样的自信心被注入到上下文中。
无状态的智能体会犯下孤立的错误。而配备了记忆的智能体可以将一个错误变成重复性的错误,因为它存储了该错误,随后又将其作为证据检索出来。一个被自信写下的错误记忆 —— “支付服务拥有退款逻辑” —— 会污染未来每一个召回它的运行过程,而每一个基于它执行的运行过程又可能写下源自它的新记忆。这不仅仅是一个存储问题。这是一个垃圾回收问题,而大多数智能体记忆系统在发布时都没有配备回收器。
记忆腐烂有两种方式,只有一种是攻击
安全文献在过去两年中一直关注记忆“投毒” —— 向智能体的长期存储中恶意注入条目。MINJA 攻击证明,针对使用朴素记忆存储的智能体,仅使用普通查询,注入成功率就超过 95%。这项工作很有意义,它推动了团队将记忆写入路径视为不可信的输入。
但大多数腐烂并非来自敌对攻击,而是源于熵增。一个在写入时真实的事实不再真实,而系统中没有任何部分察觉到这一点:
- 世界变了。 端点从 v1 迁移到了 v2。表被重命名了。“拥有部署权限”的人调离了团队。一个学习了上季度模式的智能体会不断查询已不再存在的表。
- 决策逆转了。 “我们正在标准化使用库 X”在 3 月份是真的,但在 5 月份是假的。这两个陈述都是忠实地从真实对话中提取出来的。存储库现在持有矛盾,而检索将呈现出在嵌入空间中与查询最接近的那一个。
- 记忆在诞生时就是错的。 智能体读错了日志,得出了错误的结论,并将其记录了下来。与随着会话结束而消失的幻觉不同,这个错误现在是持久的且可引用的。
最近的研究量化了智能体处理这一问题的糟糕程度。STALE 研究测试了 LLM 智能体是否能识别其存储的记忆何时不再有效,结果发现大多数智能体无法注意到“作废(supersession)” —— 即使在存在矛盾证据的情况下,它们仍继续基于过时的假设采取行动。检索系统按语义相似度排名,而陈述过实的事实与替换它的新鲜事实在与查询的相似度上是完全一致的。相似度搜索没有“不再真实”的概念。
一个令人不安的含义是:一个被自信召回的过时记忆比没有记忆更糟糕。遗忘不是你容忍的缺陷,而是你需要构建的子系统。
为什么“存储一切”依然是主流选择
如果生命周期管理显而易见是必要的,为什么大多数系统都跳过了它?因为删除是可怕的,而且基准测试并不惩罚囤积行为。
流行的记忆基准测试(如 LoCoMo、LongMemEval)测试跨多会话对话的召回率。它们奖励“记住”;它们几乎不测试“取消记忆(unremembering)”。LoCoMo 的对话运行约 16k–26k 个 token,短到足以放入现代上下文窗口,而且问题关注的是“说了什么”,而不是“它是否仍然真实”。一个从不删除任何内容的系统也能获得不错的分数。
这种激励机制也体现在真实系统中。Mem0 在 2026 年重新设计了其流水线,放弃了更新/删除合并,转而采用单次、仅追加的提取方式,让旧事实和新事实并存 —— 这是一个为了保留时间历史而采取的可辩护选择,也揭示了压力点所在。仅追加模式更容易构建、更容易调试,并且能防止因删除所需内容而导致的灾难性失败。而成本 —— 逐渐的污染 —— 永远不会出现在演示中。
TTL(生存时间)是另一个默认方案,但它是一个粗笨的工具。基于时间的失效对所有记忆一视同仁:关键的约束条件和琐碎的观察结果会按照相同的时间表失效。30 天的 TTL 会删除关于你部署流程的真实事实,却保留了三周前关于昨天已更改的模式的事实。TTL 限制了垃圾的“年龄”,它无法识别什么是真正的垃圾。它是一个有用的保底手段 —— 被投毒的记忆无法超过其 TTL 存活,这就是为什么安全指南推荐它 —— 但它在记忆层面上相当于为了修复内存泄漏而每晚重启服务器。
真正的回收器长什么样
运行时中的垃圾回收之所以有效,是因为可达性是可计算的:一个没有任何引用的对象就是垃圾。记忆的真实性无法以同样的方式计算,但 GC(垃圾回收)框架仍然为你提供了正确的组件 —— 活跃度信号、压缩轮次,以及追踪并释放死数据的方法。
过时评分,而不仅仅是时间戳。 每一个记忆都应该携带新鲜度元数据:何时写入、何时最后确认,以及它的有效性依赖于什么。从生产指南中总结出的设计模式是“衰减评分,而非数据” —— 检索排名结合了相似度、新近度和强化度,因此一个不断被确认的事实保持活跃,而一个未被确认的事实则会沉底。降级是可逆的;删除则不然。但对于具有外部有效性的事实,仅靠评分是不够的:像“API 返回分页结果”这样的记忆应该与其依赖项链接,这样一旦发生变更事件(如部署、迁移、架构调整公告),就可以主动使所有依赖它的记忆失效。
合并而非追加的压缩过程。 人类的记忆在睡眠期间进行整合:片段被提炼为语义知识,重复项合并,矛盾得到解决。智能体的等效做法是异步后台处理,读取最近的片段,提取候选事实,将其与现有记录进行对比,并 —— 至关重要地 —— 进行裁定。当一个新事实与旧事实矛盾时,该过程必须决定哪一个主导未来的行为,而不是将两者都存档。Cloudflare 的 Agent Memory 通过“替代链(supersession chains)”来实现这一点:当一个新记忆匹配现有事实的主题键时,旧条目不会被删除而是被“替代”,并带有一个前向指针。你保留了历史(对“这在什么时候改变的?”很有用),而检索则只看到当前的最新状态。这才是正确的形态:仅追加存储,当前真实检索。
溯源,以便追踪和清除错误记忆。 当智能体因为一段错误的记忆而犯错时,你需要快速回答三个问题:这段记忆从哪里来?还有哪些记忆是基于它生成的?它影响了什么?这要求每一次写入都携带血缘关系(lineage) —— 来源类型、时间戳、编写它的智能体、支持证据、置信度。没有溯源,清除错误记忆就像在玩打地鼠:你删除了可见的条目,而其派生项(整合了它的总结、引用了它的决定)依然存在并重新播种污染。有了溯源,失效就是一个图遍历过程 —— 就像 GC 追踪引用一样,你追踪血缘关系并释放整个死亡的子图。
写入时策展优于读取时过滤
有一种很有诱惑力的架构:存储所有内容,然后在检索时发力——根据新鲜度过滤、按置信度重排序、让裁判模型在检索出的记忆进入上下文之前进行筛选。这感觉很安全——没有任何信息会丢失——但由于三个复合原因,它注定会失败。
首先是经济性。写入时策展对每条记忆只运行一次。而读取时过滤在每次检索时都要运行,且成本随存储规模同步增长。一个有 40% 内容陈旧的存储库不仅浪费存储空间,还浪费检索位——每一条进入 top-k 的陈旧记忆都会挤掉一条新鲜记忆——然后还要浪费过滤步骤来试图夺回这些位置。
其次,过滤器的信息比写入器少。在写入时,你拥有完整的片段:Agent 正在做什么、哪些证据支撑了该事实、提取的置信度如何。而在读取时,你只有向量数据库中的一个句子和一个查询。仅凭这些来判断“这是否依然正确”正是 STALE 研究表明 Agent 所不擅长的任务。
第三点——也是在多智能体系统中最致命的一点——读取时过滤无法阻止错误信息的传播。在写入和“经过过滤的读取”之间,错误的记忆是活跃的。在你的过滤器捕捉到它之前,任何检索到它的运行过程都可能据此采取行动,并写入新的派生记忆,而你的过滤器从未见过这些新记忆,也无法捕捉它们。写入时准入是唯一能从源头阻止污染的地方。
这就是为什么生产级设计指南都趋向于设置一个“写入闸门”:来自某个片段的候选事实只有在通过验证(针对现有记录去重、针对已存内容进行一致性检查、达到置信度阈值)后才能持久化。程序性记忆(剧本、塑造未来行为的规则)应该接受最严格的准入:在晋升之前进行回放或人工审核。未经校验的程序是性质最恶劣的泄漏,因为它会在未来的每一次会话中被放大。
正确的分工应该是:在写入时进行严格策展,在后台持续评分和降级,在读取时进行轻量过滤作为深度防御。如果你的读取过滤器在承担重任,那么说明你的写入路径出了问题。
将记忆卫生视为 SLO,而非功能
做得好的团队不再将记忆仅仅视为数据库,而是将其视为具有健康指标的生产系统。以下是几个值得从第一天起就追踪的指标:
- 陈旧率:每周对检索到的记忆进行抽样,并根据地面真值 (ground truth) 进行验证。如果错误率超过几个百分点,说明你的收集器出问题了。
- 矛盾计数:有多少主题键存在未解决的冲突值?这相当于数据库中的数据竞争 (data-race) 警告。
- 出处覆盖率:有多少比例的记忆可以追溯到原始片段?无法追溯的记忆就是无法清理的记忆。
- 失效耗时:当发生已知变化(如迁移、重组)时,相关记忆停止被检索需要多长时间?这是你对“真相”的平均修复时间 (MTTR)。
这些都不需要复杂的基础设施。新鲜度元数据只是几列数据。替代关系是一个外键。合并过程是一个调用 LLM 的定时任务。它需要的是一种决策——在设计阶段而非第一次事故后做出——即记忆是一个生命周期,而不是一份日志。
正在构建的这一代 Agent 将运行数月并积累数万条记忆。那些能保持敏锐的 Agent 不会是记住最多的,而是那些有目的地遗忘的——它们拥有一个能对活性评分、将矛盾压缩为当前事实、并能将任何事实追溯到其来源的收集器。在内存管理中,分配从来不是难点,回收才是。对于堆内存 (heaps) 是这样,对于 Agent 也是如此。
会员专享
余下内容仅对会员开放。
会员可读完整内容 —— 每一个公开发布的观点背后,那些框架、决策与推理的全貌。
- —完整文章,包含未公开存档的部分
- —可落地的工作框架,附带权衡与决策依据
- —新文章抢先看,先于公开发布
随时取消 · 一次订阅,畅读全部