长程智能体中的陈旧世界模型问题
一个 AI Agent 在第 3 轮读取了一个文件,在第 4 轮到第 30 轮对其内容进行推理,然后在第 31 轮将修改后的版本写回磁盘。然而,该文件在第 17 轮时被另一个进程修改过。Agent 悄无声息地用陈旧的版本覆盖了较新的版本。没有抛出异常,没有触发警报。从外部看,Agent 成功完成了任务。
这就是陈旧世界模型(Stale World Model)问题,它是生产环境中的 Agent 系统中最少被讨论的故障模式之一。与上下文窗口溢出或工具调用失败(这些会表现为错误)不同,世界模型陈旧会导致 Agent 在利用过时信息做出决策的同时,看起来仍在正常运行。这种失败是无声的,通常是不可逆的,并且会随着任务长度的增加而累积。
什么是世界模型,以及它为何会变得陈旧
每个 Agent 都会维护一个对外部现实的隐式模型 :它读取过的文件内容、收到的 API 响应、查询过的数据库值、被告知的用户偏好。这个模型是根据工具调用结果逐步构建的,并存在于上下文中。一旦该上下文快照与世界的实际状态发生背离,Agent 就在基于虚假信息进行操作。
发生这种情况有四种不同的机制。
Agent 推理时的外部状态变化。 外部系统不会等待 Agent 完成。数据库行被更新,文件被编辑,配置值被更改,API Schema 版本更新。Agent 在读取状态的那一刻绑定了该状态的早期快照,而没有任何机制通知它该快照现在已经错误了。
累积噪声导致的上下文污染。 随着 Agent 的执行,它们在上下文中积累了工具响应、错误消息、中间推理过程和助手轮次。在第 5 轮看起来像是有用的诊断信息的错误输出,到了第 40 轮基础问题解决后,就会变成严重的误导信息。思维链中出现的幻觉会被下游引用,仿佛它们是事实。一个错误进入记录,之后的每一轮推理都基于受损的前提。
指令离心作用。 Transformer 注意力机制偏向于近期性。在第 1 轮发出的系统提示词指令,到了第 60 轮时获得的有效注意力权重比第 2 轮时要少。目标、约束和行为护栏并没有消失——它们只是随着执行历史的增长而变得越来越“微弱”。这表现为目标漂移(Goal drift):动作在语法上是有效的,但已逐渐偏离了原始意图。
跨会话失忆。 长期运行的任务通常跨越多个推理会话。Agent 从检查点恢复,读取进度摘要,并将其视为事实——而不去核实底层世界是否与摘要描述的一致。如果会话之间状态发生了变化,且没有人刷新摘要,Agent 就会根据一个已不存在的世界描述进行操作。
错误累积的数学逻辑
这个问题的严重程度是任务长度的函数。单轮 Agent 几乎不受影响:它们读取状态,执行一次操作,然后退出。但运行 20 步、50 步或 200 步的 Agent 则有着完全不同的故障特征。
其底层的数学逻辑是乘法性的。如果每步的可靠性为 85%——这是前沿模型在定义明确的子任务上的合理数值——那么一个包含 10 个步骤的任务成功率仅为 20%。这不只是模型质量问题,而是架构问题。每一步使用陈旧状态作为输入,都有可能产生一个悄悄编码了错误的输出,而该输出又会成为下一步的输入。
经验数据证实了这条曲线的形状。在短期编程任务中,前沿模型的成功率超过 70%。但在相同任务的长期版本中(需要 30 步以上的协调),同样模型的成功率下降到大约 23%。对故障模式的分析发现,这些长期故障中约有 36% 直接归因于上下文漂移和目标漂移,而非模型推理质量。模型推理是正确的;它只是在对一个陈旧的世界图像进行推理。
一项 2026 年关于前沿模型在 AI Agent 任务完成情况的研究发现,在人类认为常规的多步办公任务中,完成率仅在 1.7% 到 24% 之间。Agent 失败并不是因为它们无法推理。它们失败是因为它们无法在任务执行过程中保持其外部状态模型与现实同步。
失败的具体表现
陈旧世界模型故障最糟糕的一点在于它们看起来是多么平淡无奇。以下是三 个具体例子。
一个 AI 编程助手被授予了内部文档系统的访问权限。工程师使用它来获取一项重大变更的实现指导。该助手从一个过时的 Wiki 页面检索了建议——该文档在几个月前就被取代了——它提供的指导不仅是错误的,而且与正确流程完全相反。遵循该建议的 Agent 和工程师引入了一个缺陷并传播到了生产环境,在 48 小时内造成了六位数的订单损失。该助手并没有发生故障;它检索到的信息在其世界模型中被视为最新的。
一个被指派“冻结”代码库任务的 Agent,通过从之前会话积累的上下文(包括对已完成的数据迁移步骤的引用)来解读指令。基于它认为有效的未完成工作,它删除了一个包含近 2,500 条记录的生产数据库(代表了九天的手动数据录入),然后生成了合成记录来填补空白——因为它的世界模型认为数据需要以特定的形式存在。没有产生任何错误,任务看起来已完成。
一个在广泛使用的 CLI 工具内存子系统中记录的竞争条件展示了此问题的结构化版本。当 Agent 执行写入操作时,它会读取目标文件以生成供用户批准的预览,然后缓存计划的内容。当用户批准时,缓存的内容被写入磁盘——而没有重新读取文件以检查在预览和执行之间的间隔内文件是否发生了变化。如果文件在读取和写入之间被修改,较新的版本就会被悄悄覆盖。这是一个教科书式的检查时间到使用时间(Time-of-Check to Time-of-Use, TOCTOU)脆弱性,它出现在数百万开发者每天使用的生产工具中。
