现代智能体越来越依赖工具返回的观察来推理——比如从工作区读到的文件内容、从数据库拉到的记录。这套做法在任务短、源不变时没问题;可真实世界里,文件会被用户改、记录会被别的 agent 或外部工具动,而模型还攥着上下文里那份旧内容继续下结论。10 月 4 日挂出的 arXiv 2610.05281 把这种失效单独拎出来,提出 Concord 上下文一致性框架,给每条工具观察绑上来源、检测源变更,并在复用前更新、标注或抑制过期内容。它指向的是一个被忽视的可靠性盲区:智能体的上下文,会过期。

过期上下文是怎么发生的

失效链条其实很朴素。agent 调工具读一个文件,把返回的内容存进上下文;随后用户或其它进程改了那个文件,内容从 A 变成 B;可模型并不知情,仍拿着上下文里的 A 去回答「现在工作区里是什么状态」。在长任务里,这种错位格外隐蔽,因为中间的多次工具调用会把旧观察一层层埋进上下文,等到 agent 给出与真实状态不符的说法时,已经很难追到是哪一步的源变了。现有运行时大多只负责把观察塞进上下文,很少主动告诉模型「你之前看到的那条,已经不新鲜了」。

过期上下文是怎么产生的工具读文件返回内容 A记进上下文模型拿着 A源被改了内容变 B模型仍用 A 下结论,给出与真实状态不符的说法Concord 给每条观察绑来源、检测变更、复用前标注或抑制过期内容
图 1|现代 agent 大量依据工具返回的观察来推理,比如从工作区读到的文件内容。可这些底层数据源之后可能被用户、其它 agent 或外部工具改掉,而模型还攥着上下文里那份过期内容下结论,于是说出与当前工作区状态不符的话。这类失效在长任务里尤其隐蔽

Concord 怎么处理:绑来源、测变更、复用前处置

Concord 的做法是先把每条观察链接到它的底层来源,这样一旦来源被改动,框架能定位到上下文里哪些观察可能失效;接着检测源变更,触发相应的处置策略;最后在 agent 复用某条观察之前,按可配置的策略更新它、给它打上过期标注,或者直接抑制它,不让旧内容参与后续推理。它设计成跨不同 agent 运行时与外部资源可扩展,新资源类型可以接进来。这里要分清:Concord 解决的是「已知的旧观察要不要再用」,不是「模型记性不好」那种记忆容量问题,它补的是观测与可变源之间的一致性缺口。

Concord 的三步与一处实测绑定来源观察连到源检测变更源改了就知复用前处理标注或抑制ConcordBench:三类前沿模型全部恢复与修复后状态一致,token 少用四成多
图 2|Concord 的框架把每条观察链接到它的来源,检测源变更,再用可配置的处置策略在复用前更新、标注或抑制过期上下文;它跨不同运行时与外部资源可扩展。ConcordBench 构造了先观察、后编辑变 stale 的场景,三类被评前沿模型在其设定下全部给出与修复后工作区一致的结果,同时较表现最佳的非 oracle 基线少用四成多的 token

一处实测与它的分寸

为了验证,作者构造了 ConcordBench:先让模型读到某些文件内容,再在后续编辑里让这些内容变 stale,看模型能否给出与修复后工作区一致的结论。在三类被评估的前沿模型上,Concord 在其设定下全部给出与 oracle 一致的可恢复计数,同时较表现最佳的非 oracle 基线少用四成多的 token。这个结果的口径要读懂:它测的是「构造条件下的一致性恢复」,不是通用任务成功率;四成多的 token 节省来自少做无谓的重新读取与重复推理。它也不能替代更上游的护栏——比如 agent 该不该被允许改它自己刚读过的源。对长任务、多 agent 协作、以及会反复读写共享工作区的场景,这类上下文一致性框架的价值会尤其明显。

与记忆叙事的差异

把 Concord 和我们此前看过的记忆架构类工作区分开很重要。多条记忆研究关心的是「经验怎么跨会话留存、怎么避免把临时想法固化成长期事实」,而 Concord 关心的是更靠前的一步:同一次运行中,工具带回的观察在源被改之后还算不算数。两者解决的是不同环节的失真——一个是跨时间的记忆污染,一个是同一次上下文里的来源失效。对正在搭长任务 agent 的团队,一个务实的起点是:给工具观察打上来源戳,并在每次复用前做一次轻量变更检查,远比等模型自己发现「我记错了」要稳。目前官方及行业暂未披露 Concord 在真实代码库或生产负载上的集成成本,后续将持续跟进迭代动态。

一句话收尾:当智能体把工具读到的内容当事实,开发者得先确认那条事实有没有被它自己读到的世界悄悄改掉。