Agent 基准 契约 审计 (续): 检查 器 漏掉 了 大 多数 缺陷
动态检查器在封闭世界召回很低:33 次漏检里有 29 次已有条款覆盖,却没有探测揭示。AgentDojo 25 个工具里至少 5 个偏离宣称表面。CONFORM 并不确立符合。

本文目录
Agent 基准是否做到了它们所说的?对工具型 Agent 环境的可执行契约审计(续)
Rohith Reddy Bellibatlu、Zichong Wang、Wenbin Zhang
译注:本篇续上篇,从原文 V-B3 起,至参考文献。
#### V-B3 Q3,检查器在阅读源码之外增加了什么
比较的对象是阅读源码,发现就是这样做出的:表 IV 的八个实例中有七个由手工审计浮出,发现 8 由静态一半浮出,没有一个由动态检查器浮出;动态检查器在它们身上、在它运行的地方,角色是对照已执行的状态来确认,并做追溯。
##### 静态扫描器
扫描器就是检查器的静态一半(§ IV-B),因此 Q3 比较的是两半与手工阅读,而不是与一种外部方法;若干检查取了已经在手的发现的形状,所以它在这些发现上的命中部分是按构造而来的。它在 49 个工具的扫描器总体上运行(§ V-A),规则在运行之前固定:一个标记只有在同时命名该工具和已确认位点时才是真阳性,每一个其他标记——没有一个因未分诊而被丢弃——都是假阳性。它发出 23 个标记,14 个真阳性、9 个假阳性(2 个在 venmo_social 的错误位点,7 个在没有发现的工具上),并标出了 17 个已确认位点中的 14 个:它漏掉发现 5 的成功返回和两个盲日历位点,在 calendar_client.py 的任何地方都不发标记。在整个文件上,一位维护者会看到 32 个标记(14 真、18 假),多出来的九个全是假的,并且落在没有契约的邻居上;总体数字是标题数字,因为计划固定了总体,这个选择对动态一半不利。
##### 盲审计
这十二个位于六个模块,其中四个此前从未产生发现;add_calendar_event_participants 被声明为事先候选。在另外十一个里,8 个 CONFORM,1 个 VIOLATES,2 个 UNTESTABLE;UNTESTABLE 占 65 行条款中的 14 行。那个 VIOLATES 是 cancel_calendar_event,智能体可见层级上的 Partial Effect。它的文档字符串说该事件「will be marked as canceled and no longer appear in the calendar」,但 Calendar.cancel_event(calendar_client.py:58-61)只设置 status,而文件里没有任何东西读取它。get_by_day 按日期过滤,search_events 只按文本过滤,因此两个列表工具仍然返回一个已取消的事件。经源码阅读确认,这是动态检查器在事先无人标记的代码里发现的第一处缺陷。与该结果并列报告、绝不算进该结果的是:add_calendar_event_participants 只经源码确认:它的文档字符串向新参与者承诺一封电子邮件,但与它的三个兄弟日历工具不同,它不接受收件箱依赖,因此没有任何代码路径能发出邮件。它、create_calendar_event 和 send_email,十二个中的 3 个,在一次崩溃上是 UNTESTABLE,TypeError: unhashable type: 'list',来自对列表值参数的探测去重哈希,更早的契约里没有这种参数。
##### 留出审计
六个留出工具最先运行。事先知识已声明:update_user_info 已经是账本候选,而且扫描器已经在全仓库运行过。五个 CONFORM;update_user_info 在四条智能体可见的效果条款上 VIOLATES,重复了发现 5 的真值守卫形状(user_account.py:61-68),是该类别的第二个实例,不是一个新格子。UNTESTABLE 占 43 行条款中的 3 行。
##### 完整的 AgentDojo 表面
设置的实现侧规则在 AgentDojo 的 v1 套件上枚举了 25 个会改状态的工具,产物里恰好持有这 25 份契约,在该规则下是完整的,尽管该规则不纳入那种宣称改变却什么都不写的工具,即 MedAgentBench 的形状。检测并不完整。25 个中有五个带有检查器确认的 VIOLATES,每一个都经源码阅读确认:发现 5、6 和 8,留出的 update_user_info,以及盲审计的 cancel_calendar_event。三个在上面那次崩溃上是 UNTESTABLE,其中包含只经源码确认的 add_calendar_event_participants。其余 17 个在一个召回很低的程序下 CONFORM(Q4),这并不确立不存在。
因此我们报告的比率是至少 25 个中的 5 个,UNTESTABLE 留在分母里;在检查器评了分的 22 个工具上是 22 个中的 5 个,更高只是因为三个因检查器的限制而掉出。该程序恰好检测出这五个,所以这个比率是对我们的契约所读到的、偏离所宣称表面的工具数的一个下界。它是按工具的,一个工具可能带有多个实例,它不是患病率估计、缺陷率或严重性声称,也不关于另外三个基准。对 Q3 的回答:在锚点发现之外——扫描器几乎与之相当——检查器在事先无人标记的代码里增加了一处已确认缺陷,并对一个基准给出一个完整、尽管并非一律盲目的表面,其上至少 25 个工具中有 5 个偏离,其中四个事先已知。
#### V-B4 Q4,检查器有多可靠
用变异测试的词汇 [50],合成故障(变异体)被放进真实工具,也被放进产物里附带的一个小玩具域,存活的变异体从下方给漏检一个界。两臂都评测整条流水线:契约、探测和检查器。计划在任何变异体存在之前就固定了每一臂能许可什么:封闭世界臂,即六个类别的变异,「检查器检测对我们所写条款的违反」,绝不是「工具契约缺陷」;开放世界臂,即不顾分类法而做的变异,是流水线所漏掉的东西的一个下界,并按原因分解。每一个区间界都是双侧 95% Wilson 区间的下限;召回率按工具聚类做了设计效应调整(Kish 设计效应,Rao-Scott 单向方差分析的 ICC 估计),有效分母写在旁边;合并的精确率和逃逸率在其 $n$ 上不做聚类。
| Operator | n drawn | eff. n | detected | missed | untestable | error | Recall (Wilson LB) |
|---|---|---|---|---|---|---|---|
| M-PHANTOM | 7 | 7 | 5 | 0 | 0 | 2 | $\geq$0.359 |
| M-PRECOND | 7 | 5 | 1 | 6 | 0 | 0 | $\geq$0.020 |
| M-IGNARG | 21 | 15.13 | 4 | 12 | 1 | 4 | $\geq$0.066 |
| M-PARTIAL | 8 | 6 | 1 | 7 | 0 | 0 | $\geq$0.018 |
| M-INVAR | 8 | 8 | 0 | 8 | 0 | 0 | $\geq$0.000 |
| M-RESET | n/a | n/a | n/a | n/a | n/a | n/a | no data |
表 VII:按变异算子划分的真实工具封闭世界召回;eff. n(经设计效应调整)送进每一个 Wilson 界。
##### 封闭世界召回
召回全程都很低(表 VII)。一项事后诊断把 33 个真实工具漏检各自追溯到原因。其中 2 个没有任何条款覆盖该变异。29 个已有条款,但一份独立冻结语料的探测没有揭示任何行为差异,变异体未被触及或是惰性的。剩下 2 个是探测缺口和目标未找到。只有第一个关系到契约覆盖;那 29 个指向探测阶段——流水线的一部分——或指向一个惰性变异体。因此 M-INVAR 的 0.000 应读作「没有任何探测到达一条被变异的不变量路径」,而不是「检查器不能检测不变量破坏」。M-PHANTOM 依赖于双条件成功信号,它在 19 份 tau2-bench 契约中的 18 份、7 份 AgentDojo 契约中的 1 份、5 份 MM-ToolSandbox 契约中的 0 份上被声明。只有 M-PRECOND 和 M-IGNARG 达到了预先登记的每类约 25 个的目标,真实位点与玩具位点一起计数,这就是为什么只计真实工具的抽出数列读作 7 和 21;另外四个达不到,是因为语料在结构上很小,不是出于选择。
##### 精确率
在封闭世界臂里,检查器对任何注入的变异体都没有产生假阳性,合并的玩具加真实样本共 25 个标记(TP=25,FP=0;另有 24 个保持语义的对照一并评分)。精确率 $\geq$ 0.867,绝不在没有下面的阴性对照时单独报告。
##### 阴性对照
五个被做成像缺陷、但不是缺陷的输入,对着未修改的检查器运行,每个裁决都在运行前预测,之后没有增加或删除任何一个。两个被标出:以该预订当前的行李数调用 update_reservation_baggages(对照 1),以及给 reserve_hotel 一个带秒字段和不带秒字段的 ISO 日期(4b)。两者都是 Ignored Argument 规则的假阳性,机制就是计划所命名的那个,其修复未被应用(§ V-C):整个后状态的相等,无法区分「一个有效参数在所尝试的取值上效果相同」和「代码丢掉了这个参数」。预测在 5 个里错了 3 个,每一个都追溯到源码。对照 2 为 CONFORMS,未被标出:add_user_to_channel 在没有去重守卫的情况下追加一个已有成员。对照 4a 为 UNTESTABLE,未被标出:Python 相等把 gb_amount 的 2 和 2.0 在相异性门上折叠到一起。对照 3,即 update_reservation_flights 已披露的航班库存捷径(第 689 行),是 UNTESTABLE 而不是 CONFORMS:不存在针对 List[FlightInfo] 参数的合成器,因此探测在效果代码之前就使工具崩溃。
##### 开放世界逃逸率
在玩具域上,Cosmic Ray 变异工具在 4,048 个(变异,工具)对上评了 368 个变异;229 个在行为上是活的,其中 225 个逃过了检查器,漏掉的份额的 Wilson 下限为 0.956(点估计 0.983)。按原因,225 个逃逸中有 119 个没有条款覆盖该变异,86 个有条款但其探测从未把工具驱动到揭示性状态,20 个在求值前使检查器崩溃;只有那 119 个关系到契约覆盖。只运行了那一条机械的「已声明易变字段」规则,因此 0.956 给的是这一条规则之下逃逸率的界,如果有什么的话,它夸大了流水线的盲目,并且不是反对封闭世界数字的证据。在 tau2-bench 电信域上,对着该域五个没有发现或候选的工具,2,325 个对上的 465 个变异留下零个行为上活的变异,因为探测阶段已记录的真实调用成分并不存在,它的占位符通不过 tau2 按实体键的检查。这个零分母不是契约覆盖良好的证据。对 Q4 的回答:检查器在它所标出的东西上是精确的,25 个注入标记上零假阳性,对着五个阴性对照中的两个;它漏掉了大多数它应当抓住的东西,主要是因为没有任何探测揭示一个条款已经覆盖的变异体。
#### V-B5 Q5,契约撰写是否稳定
两组标注者,都是同一模型族上的智能体会话,且只有 B 是盲的,对着一份预先承诺的探测语料,为发现 2、3 和 5–8 的六个工具撰写契约;这测量的是一个句子是否两次变成同一个谓词,而不是两个人是否会同意。cancel_reservation——B 读过它的一个演算例子——是一个受污染的层,从不与盲结果合并。五个盲工具中的四个贡献配对;venmo_social 一个也不贡献,这是一个切分产物,它也因此失去了发现 7 背后的那条条款。按协议的规则,把 UNTESTABLE 对任何结果都计为不一致,盲层在 99 次探测比较中有 98 次一致;那一次不一致,reserve_car_rental 的 arg.end_time(A 下为 VIOLATES,B 下为 UNTESTABLE),是缺少 ISO 字符串标注,不是语义分裂。一项事后的可比较性过滤限制在成功调用上,它是随结果而来而不是随协议而来的,通过排除这一次,在 16 对条款上给出 98/98。对 Q5 的回答:在盲层上,99 次里有 98 次。
V-C 对效度的威胁
分类法、语法和语料的限制。六个类别不是可能缺陷的空间。框架路径语法不能排除单个键,因此「没有其他预订被修改」与被宣称的效果相撞,而随附的 cancel_reservation 契约在一个无关集合上陈述了一个更弱的声称。探测阶段缺失的「已记录真实调用」成分最可能移动结论:它使真实基准臂没有可用的逃逸率,并且可能解释封闭世界 33 个漏检中那 29 个没有任何探测揭示的情形。M-RESET 没有数据,不是零召回:重置住在适配器层,该层整份重建环境,四个基准里没有任何工具文件定义一个恢复状态的函数。
冻结的检查器、预先登记,以及已知限制。每一个数字都在一次检查器冻结之下评分,评分一开始就不再打补丁。整个后状态规则的两个已确认假阳性、把 2 和 2.0 折叠的相等门,以及使三个盲工具成为 UNTESTABLE 的列表参数缺口,因此保持未修复;前者预先承诺的修复会需要第三次冻结。两个被标出的对照使变异臂的零不能成为关于已发布工具的精确率声称;Ignored Argument 的发现依靠源码阅读,不只依靠该规则;同样的门给召回表一个界。更早的一次重新冻结被披露:对着第一次冻结的一次扫查发现四项背后没有代码路径的分类法声称(Reset Leak 和 Invariant Break 裁决、35 条框架条款,以及 19 份 tau2 契约中的 17 份被静默地从未动态行使),全部在第二次冻结给这里的任何数字评分之前修复。子进程边界吸收检查器从未看到的异常:在封闭世界运行里,一个玩具适配器的 invoke() 只捕获它声明的错误类型,一个越过被删除守卫的原始异常使变异体中止且没有违反。它位于每一个真实适配器之下;一次被吸收的崩溃被计为检测到还是沉默,未经检查,并给每一个真实工具召回数字一个界。git init 在 2026-08-21 运行,在大部分设计工作之后,第一次提交把项目作为一个树导入,因此我们不声称任何预先登记早于它本应冻结的那些决定;后来的提交核实:第一次冻结早于第一个被评分的变异体,智能体实验计划早于第一条被记录的轨迹,第二轮计划早于每一个第二轮数字。
追溯的第二位读者是一次模型会话。一位作者写了读取点提取器,并判断它应当找到什么。到目前为止,预先登记的第二遍阅读只来自计划的回退:一次模型会话只得到 40 个评分器函数和说明,对提取器、发现和论文都是盲的;这比一位人类读者更弱。它为 22 个函数命名了字段;在全部 22 个上,提取器的集合都是严格超集,没有漏掉,中位数是标注者计数的 1.7 倍,最坏 10 倍。在另外 18 个上,即整个环境相等或函数不读状态,它一个也没命名,而提取器独立地把其中 14 个标为 unresolved。六个旅行函数被部分阅读,它们的门控辅助函数不在包里,因为随附版本就是这样。每一次不一致都列在产物里,没有系数;表 V 的 20 行 unresolved 仍然是回退的输出,不是一次测量。
由锚点驱动的基准选择。基准因已知缺陷或为了测试推广而进入(§ V-A),因此跨它们的患病率声称得不到支持。在 AgentDojo 内部,发现不再是一个样本,但盲审计在十一个里的那一处缺陷,是动态检查器能在已经怀疑的代码之外找到任何东西的唯一证据;在其他地方,每一项发现都由锚点驱动。
VI 结论
本文在四个基准里测试了所调查分类法的类别之下的工具层,因而也测试了它们分数的来源。对 AgentDojo,每一个被枚举的会改状态工具都有一份契约,25 个中至少有 5 个偏离其宣称表面,这是只属于该基准的一个比率。由锚点驱动的审计是存在性证明,不是比率;一个暴露计数是一面尽职标记,不是对已发表分数的修正;检查器的低召回意味着一个 CONFORM 裁决并不确立符合。维护者可以把写入评分器建立在存储的状态上,而不是工具的成功字符串上,审计工具层,而不只是任务和黄金解,并在智能体读得到的地方披露每一次有意的简化。
##### 协调披露
三个团队在 2026-09-12 收到了发现、复现和修复(MedAgentBench issue 10,tau2-bench issue 541,AgentDojo issue 194),每一项够格登上标题的发现都在当天于其默认分支上重新检查。MM-ToolSandbox 关闭了 issue,并在其 SECURITY.md 里拒绝外部报告,因此发现 7 没有渠道。留出和盲审计的发现,连同被标为仅源码阅读的 add_calendar_event_participants,于 2026-09-24 提交到 AgentDojo 的讨论串。按一条事先固定的规则,披露日志按实质报告回应,按日期记录不回应且不从沉默做推断,并把有争议的发现连同维护者的理由一并标出。
##### 致谢
AI 工具协助了分析代码和实验运行;作者审阅了全部内容并对其负责。
参考文献
- [1] Long、Du、Xu 等,「LiveClawBench:在复杂的真实世界助手任务上给 LLM 智能体做基准」,2026,arXiv:2604.13072。
- [2] Tu、Wang 等,「BenchGuard:谁来守卫基准?对 LLM 智能体基准的自动审计」,2026,已接收,Conference on Language Modeling (COLM) 2026。
- [3] Wang、Bianchi 等,「面向 AI 智能体与大语言模型的自动基准审计」,2026,arXiv:2605.26079。
- [4] Bhat、Vaghasiya、Mohsin 与 Aali,「给基准做基准:对工具调用评测的一项效度审计」,2026,arXiv:2607.02577。
- [5] Chen、Yan、Zhang 与 Zhang,「谁来测试测试者?对 LLM 智能体工具调用安全的系统枚举与覆盖审计」,2026,arXiv:2603.18245。
- [6] Jiang、Black 等,「MedAgentBench:用于给医学 LLM 智能体做基准的虚拟电子健康记录环境」,NEJM AI,第 2 卷,第 9 期,2025,arXiv:2501.14654。
- [7] Wang 与 Strong,「超出准确:数据质量对数据消费者意味着什么」,J. Manage. Inf. Syst.,第 12 卷,第 4 期,1996。
- [8] Buneman、Khanna 与 Tan,「为什么与在哪里:数据来源的一种刻画」,Proc. ICDT,Lect. Notes Comput. Sci. 丛书,第 1973 卷,Springer,2001。
- [9] Simmhan、Plale 与 Gannon,「电子科学中数据来源综述」,ACM SIGMOD Record,第 34 卷,第 3 期,2005。
- [10] Zhou、Xu、Zhu 等,「WebArena:用于构建自主智能体的真实网页环境」,2024,ICLR 2024。
- [11] Trivedi、Khot、Hartmann 等,「AppWorld:用于给交互式编码智能体做基准的可控应用与人物世界」,2024,ACL 2024。
- [12] Xie、Zhang、Chen 等,「OSWorld:在真实计算机环境的开放式任务上给多模态智能体做基准」,2024,NeurIPS 2024 D&B Track。
- [13] Rawles、Clinckemaillie、Chang 等,「AndroidWorld:面向自主智能体的动态基准环境」,2025,ICLR 2025。
- [14] Barres、Dong 等,「$\tau^{2}$-bench:在双控制环境中评测对话智能体」,2025。
- [15] Debenedetti、Zhang、Balunović、Beurer-Kellner、Fischer 与 Tramèr,「AgentDojo:用于评测 LLM 智能体提示注入攻击与防御的动态环境」,2024,NeurIPS 2024;D&B 分轨标签未经确认。
- [16] Gao 与 Zhou,「智能体基准能否支撑它们的分数?交互式智能体评测的有证据支持的界」,2026,预印本;摘要页上没有会议声称。
- [17] Bellibatlu、Raff 与 Zhang,「JudgeSense:LLM 充当评判器系统中提示敏感度的基准」,2026。
- [18] Pysklo、Zhuravel 与 Watson,「Agent-Diff:经由代码执行、以状态差评测,在企业 API 任务上给 LLM 智能体做基准」,Proc. ACM SIGKDD Conf. (KDD),2026。
- [19] Advani,「从自信收尾到沉默失败:刻画 LLM 智能体中的虚假成功」,2026,已接收,ICML 2026 的 FAGEN 研讨会(非存档)。
- [20] B. Gurram,「审计使用工具的语言智能体中的自动评测、错误传播与运行时缓解」,2026,预印本,未声称会议。
- [21] Reuel、Hardy 等,「BetterBench:评估 AI 基准、揭露问题并建立最佳实践」,NeurIPS D&B Track,2024。
- [22] Yu、Zhu、He 与 Kang,「UTBoost:对 SWE-bench 上编码智能体的严格评测」,Proc. ACL,2025。
- [23] Kapoor、Vaithilingam 等,「要紧的 AI 智能体」,Trans. Mach. Learn. Res.,2024。
- [24] Zhu、Jin、Pruksachatkun 等,「为构建严格的智能体基准建立最佳实践」,2025,预印本;正文中称为 Agentic Benchmark Checklist。
- [25] Yao、Shinn、Razavi 与 Narasimhan,「$\tau$-bench:真实世界领域中工具—智能体—用户交互的基准」,2024,预印本;与 $\tau^{2}$-bench [14] 是不同的产物和代码库(§ II)。
- [26] Bean、Kearns、Romanou 等,「测量要紧的东西:大语言模型基准中的构念效度」,2025,NeurIPS 2025 Datasets and Benchmarks Track;未经独立确认。
- [27] Milev、Balunović、Baader 与 Vechev,「ToolFuzz:自动的智能体工具测试」,2025。
- [28] Karaorman 与 Abercrombie,「jContractor:用反射字节码插桩把契约式设计引入 Java」,Form. Methods Syst. Des.,第 27 卷,第 3 期,2005。
- [29] Bartetzko、Fischer、Möller 与 Wehrheim,「Jass:带断言的 Java」,Electron. Notes Theor. Comput. Sci.,第 55 卷,第 2 期,2001。
- [30] Deng、Ma、Gao 与 Sun,「通过推断指针状态转移的隐式 API 契约来高效检测缺陷」,Proc. IEEE/IFIP Int. Conf. Dependable Syst. Netw. (DSN),2026。
- [31] Ribeiro、Mamede 与 Ferreira,「通过模型检验和可执行契约做系统化 API 测试」,Proc. ICST,2026。
- [32] Alonso、Ernst、Segura 与 Ruiz-Cortés,「为 REST API 生成测试预言机」,ACM Trans. Softw. Eng. Methodol.,第 35 卷,第 1 期,第 19 篇,2025。
- [33] Cheon 等,「用框架说明增强契约式设计」,Proc. ICSOFT,SCITEPRESS,2025。
- [34] Ghosal、Jonsson 与 Rümmer,「一种合成程序契约的主动学习方法」,Lect. Notes Comput. Sci.,第 14323 卷,Springer,2023。
- [35] Ahmed、Cruz 等,「深度学习 API 的契约式设计」,Proc. ESEC/FSE,2023。
- [36] Segura、Parejo、Troya 与 Ruiz-Cortés,「RESTful Web API 的蜕变测试」,IEEE Trans. Softw. Eng.,第 44 卷,第 11 期,2018。
- [37] Segura、Fraser、Sanchez 与 Ruiz-Cortés,「蜕变测试综述」,IEEE Trans. Softw. Eng.,第 42 卷,第 9 期,2016。
- [38] Chen、Kuo 等,「蜕变测试:挑战与机会综述」,ACM Comput. Surv.,第 51 卷,第 1 期,第 4 篇,2019。
- [39] Atlidakis、Godefroid 与 Polishchuk,「RESTler:有状态的 REST API 模糊测试」,Proc. ICSE,2019。
- [40] Godefroid、Lehmann 与 Polishchuk,「REST API 的差异回归测试」,Proc. ISSTA,2020。
- [41] Gyori、Shi、Hariri 与 Marinov,「可靠测试:检测污染状态的测试以防止测试依赖」,Proc. ISSTA,2015。
- [42] Lam、Oei 等,「iDFlakies:检测并部分分类不稳定测试的框架」,Proc. ICST,2019。
- [43] Liu、Peng 等,「ToolGate:为 LLM 提供以契约为据并经核实的工具执行」,2026。
- [44] Bhardwaj,「智能体行为契约:可靠自主 AI 智能体的形式化说明与运行时强制」,Zenodo,2026,预印本,未经同行评审。
- [45] Babu 与 Iyer,「Contract2Tool:为可靠的工具增强 LLM 智能体学习前置条件与效果」,2026。
- [46] Wang、He 等,「ContractBench:LLM 智能体能保持观察契约吗?」,2026。
- [47] Shah、Morovati、Rahman 与 Khomh,「刻画智能体 AI 中的故障:类型、症状与根因的分类法」,2026。
- [48] Ning、Zhang 等,「定义并检测基于大语言模型的自主智能体的缺陷」,IEEE Trans. Softw. Eng.,2026。
- [49] Ma、Feng 等,「MM-ToolSandBox:评测视觉工具调用智能体的统一框架」,2026。
- [50] Jia 与 Harman,「变异测试发展的分析与综述」,IEEE Trans. Softw. Eng.,第 37 卷,第 5 期,2011。
觉得有用,转给同事
微信扫码
用微信扫一扫,在手机上打开后即可转发。