AI Agent 宁愿相信过期记忆,也不信实时数据——新基准测试戳破了一个残酷真相
上周我在调试一个客服 Agent,发现一个让我后背发凉的事情。
用户已经改了收货地址,Agent 也调了 API 确认了新地址。但到了发货环节,它还是把包裹寄到了旧地址。我查了半天日志,发现 Agent 的短期记忆里存着用户三个月前说的"我的地址是XXX",API 返回的新地址它看见了,但没采用。
这不是 bug。这是 Agent 记忆系统的设计缺陷——而且它比我想象的普遍得多。
记忆不是"存进去"就行,关键在于"信哪个"
先说一个常识:AI Agent 跟人不一样。人看到新信息和旧信息冲突时,会本能地倾向于新信息(除非有特别强的理由不信)。但 Agent 不会。
Agent 的推理链条里,记忆是一个"先到先得"的东西。被检索到的历史信息,哪怕已经过期,也会在推理过程中占据优先级。最新的 API 调用结果、实时数据库查询——这些"新鲜"的东西反而要跟历史记忆"竞争出场权"。
今年 7 月,厦门大学团队在 arXiv 上发了一篇论文,叫 MemSyco-Bench(arXiv: 2607.01071)。他们设计了一套测试,专门衡量 Agent 的"记忆谄媚"问题——就是 Agent 因为过于依赖记忆,导致事实判断出错。
测试结果很直接:8 个主流 LLM Agent,在 5 类任务里,只要记忆里有跟实时信息冲突的内容,Agent 选错答案的概率平均上升了 18-35%。
注意,这不是记忆检索失败。记忆检索对了,但答案是错的。问题出在"检索之后"的决策环节。
Kymata Labs 的发现:基准测试在骗人
如果你去翻 Agent 记忆系统的排行榜,会看到 Mem0 在 LoCoMo 上拿了 92.5 分,Zep 拿了 80.32 分。个个都好看。
但 Kymata Labs 在 6 月发布的白皮书里捅了一刀:这些基准测试测的是"持久性",不是"真实性"。它们问的问题是"Agent 能不能记住某件事",而不是"Agent 能不能在实时信息面前,正确地放弃一个旧记忆"。
这就好比考试只考"你背书背得熟不熟",不考"你发现书上的知识过时了,能不能及时扔掉"。背得熟的人当然高分,但真正需要的是知道什么时候该扔。
Kymata 管这个叫"persistence ≠ truth"。我在实际项目里深有体会——我们给一个金融问答 Agent 装了记忆系统之后,它在回答"当前利率是多少"这类问题时,准确率反而掉了 7 个点。原因就是它记住了上个月的利率,API 返回了新的,它犹豫了一下,选了旧的。
为什么 Agent 会"偏爱"旧记忆?
从工程角度看,这跟 Agent 的推理机制有关。
当前主流 Agent 框架(ReAct、Plan-and-Execute 等)在做决策时,会先把所有上下文拼成一个 prompt,然后让 LLM 输出推理步骤。在这个 prompt 里,记忆数据通常以"你之前知道的信息"的形式出现,位置靠前,语气肯定。而实时工具调用结果以"你刚刚查到的信息"的形式出现,位置靠后,有时候还带一段工具调用的原始 JSON。
LLM 在推理时,天然倾向于相信"说得更肯定、位置更靠前"的信息。这跟模型训练时的语料分布有关——训练数据里,陈述句("事实是 X")出现的频率远高于带条件的更新句("虽然之前是 X,但现在是 Y")。
MemSyco-Bench 论文里量化了这个现象:在"客观事实判断"任务中,当记忆和实时数据冲突时,Agent 选择记忆的比率高达 64%。而在"偏好跟随"任务中,Agent 更惨——它会记住用户一次随口说的"我喜欢简约风格",然后在后续所有设计建议里强行往简约上靠,哪怕用户后来明确说了"这次想要华丽的"。
这就是记忆谄媚:Agent 不是不知道新信息,而是它"太想满足你"了,以至于把你三个月前的一句话当成了圣旨。
这个问题会怎么影响生产系统?
我挑几个真实场景说说。
第一个是客服系统。用户半年前投诉过某个产品,之后再也没提过。但 Agent 记住了那次投诉,每次推荐同类产品时都自动跳过,哪怕那个产品已经迭代了三个大版本。用户体验反而更差。
第二个是代码审查 Agent。你在项目初期设了一些编码规范偏好,Agent 记住了。三个月后团队决定换一种模式,Agent 还在按旧规范提意见。你改一次,它记一次,但下次又回到旧规范——因为记忆里旧规范的"权重"更高。
第三个是医疗辅助诊断。这是最让人紧张的。如果 Agent 记住了患者三年前的某项检查结果,而最新的检查结果已经完全不同,选择错误可能直接导致误判。
你说这是不是比"AI 幻觉"更棘手的问题?幻觉是模型"胡说八道",你至少知道它不可信。但记忆谄媚是模型"太听话了"——它记得你,想讨好你,反而把事情搞砸了。
怎么治?目前有一些思路,但都不完美
VitaBench 2.0(美团,今年 8 月)的测试结果更扎心:最强的 Agent 在"记住用户个人信息"这件事上,准确率只有 50% 左右——跟扔硬币差不多。而且,一旦装上外挂记忆层(不管是 RAG 还是专门的记忆系统),分数反而更低。
这说明当前记忆系统的设计方向可能有问题。大家都在卷"怎么存得更准、检索更快",很少有人想"怎么让 Agent 在正确的时候放弃一段记忆"。
目前我看到的一些尝试:
- 时间戳加权:给每条记忆打上时间戳,越新的权重越高。但这需要实时数据也有时间戳,而且 Agent 要能比较两个时间戳的大小——这个在推理层面并不稳定。
- 冲突检测路由:当记忆和实时数据冲突时,不直接推理,而是先走一个独立的"裁决"模块。但问题是裁决模块本身也是模型,也会被同样的"记忆偏好"影响。
- 显式"过期"标记:让 Agent 在存储记忆时附带一个"有效期限",到期自动降权。这听起来合理,但实际使用中,很多信息的有效期是模糊的——"用户偏好"什么时候过期?没人知道。
目前我自己的做法是:凡是涉及实时数据(价格、地址、状态)的场景,强制不让 Agent 访问长期记忆,只给它当前会话的上下文。但这只是权宜之计,毕竟记忆本身就是 Agent 最有价值的能力。
你觉得呢?Agent 记忆系统的"信任问题"——是应该靠更好的架构设计来解决,还是说我们需要重新思考"记忆"在 Agent 中的角色?欢迎在评论区聊聊你的想法。
更多推荐

所有评论(0)