文章背景与核心概要
本文探讨了AI智能体(AI Agent)评测中一个常被忽视但至关重要的脱节现象:模型可能成功生成了合法的工具调用,但服务栈或接口却在下游系统接收到之前,静默地“审查”并过滤掉了这些轨迹。作者通过严谨的控制实验发现,仅仅改变服务适配器(在保持模型权重、评测用例、解码设置和随机种子完全不变的情况下),就能导致基准测试分数发生剧烈波动(例如在 BFCL v4 上分数在 \(0.00\) 到 \(0.96\) 之间狂野振荡)。
这种现象的根源并非组件或模型本身存在缺陷,而是聊天模板(chat template)与解析器(parser)之间交互不匹配所致。修复契约的一端往往无济于事。为了解决这一痛点,作者开源了一个简洁的 98行预检脚本(preflight check),旨在捕捉并防止这类静默失效,确保真实反映模型的工具调用能力。
Interface-Induced Trajectory Censoring
Authors: Wenbo Wang
Primary Subject: Artificial Intelligence (cs.AI)
arXiv ID: arXiv:2609.03966
Submitted on: September 3, 2026
Links: View PDF | HTML Version | GitHub Repository
📌 核心摘要 (Executive Summary)
本文研究了AI智能体评测中的一个关键脱节:模型可能成功生成了有效的工具调用,但服务栈或接口在下游系统接收到之前,静默地审查了这些轨迹。
严格通过服务栈来评测工具使用可能会具有极大的误导性。作者证明,仅仅改变服务适配器(同时保持模型权重、评测用例、解码设置和随机种子完全固定)就会剧烈改变基准测试分数(例如在 BFCL v4 上在 \(0.00\) 和 \(0.96\) 之间大幅波动)。该问题并非源于有缺陷的组件或模型,而是源于聊天模板与解析器之间的交互。为了解决这个问题,论文发布了一个精炼的 98行预检脚本,旨在捕获并防止这些静默失效。
This paper investigates a critical disconnect in AI agent evaluations: models may be successfully generating valid tool calls, yet the serving stack or interface silently censors these trajectories before downstream systems ever receive them.
Evaluating tool use strictly via the serving stack can be highly misleading. The author demonstrates that changing only the serving adapter—while keeping model weights, evaluation cases, decoding settings, and seeds completely fixed—drastically alters benchmark scores (e.g., oscillating wildly between \(0.00\) and \(0.96\) on BFCL v4). The issue stems not from defective components or models, but from the interaction between chat templates and parsers. To address this, the paper releases a concise 98-line preflight check designed to catch and prevent these silent failures.
📄 摘要 (Abstract)
Agent evaluations report a tool-call rate read off the serving stack. That number can be zero while the model is emitting well-formed calls: the interface censors the trajectory before anything downstream sees it.
On BFCL v4's own data, executor and scorer, holding weights, cases, decoding and seeds fixed and changing only the serving adapter, the same model scores 0.00 or 0.96 / 0.19. A 2x2 over chat template and parser locates the effect exactly: both main effects are exactly zero and all of it sits in the interaction -- no component is defective, and repairing one side of the contract buys precisely nothing. On tau-bench's 115 interactive retail tasks the same swap moves server-parsed calls from 0 to 636 and tasks reaching any tool execution from 0 to 103. Our probe reproduces the funnel across a 21x scale range of Qwen2.5-Coder: the server parses 0/100 at every size while well-formed emitted calls rise to 80/100 at 32B (~72 after calibration against an adjudicated gold standard). Under a matched envelope, across a comparable scale span, the silent fraction stays at 0-2, a prediction committed to the repository before the run. Llama-3.1-8B's 23% rate of calling the task function itself as a tool falls to 0 under one strict:true flag.
The mismatch reaches inside the training loop, and its consequence is scale-dependent: in verl's AgentLoop at 7B, 45 of 115 generations carry a complete call; 0 are accepted, 0 execute, 0 return an observation. At 1.5B the same zero is over-determined, so we report the two scales separately. At evaluation time, repairing the adapter restores the mechanism but not a significant outcome gain: parsing 0->84, rescues 0->9, pass rate 53->62 (n.s.). We release a 98-line preflight check that catches every silent failure here. The observed tool-call rate is not a property of the model alone; it is a property of the model-interface stack that measures it.
智能体评测报告中的工具调用率是从服务栈中读取的。当模型正在发出格式良好的调用时,这个数字可能为零:因为在下游任何系统看到它之前,接口就已经审查了该轨迹。
在 BFCL v4 自己的数据、执行器和评分器上,在保持权重、用例、解码和随机种子固定、仅改变服务适配器的前提下,同一模型的得分为 0.00、0.96 或 0.19。通过对聊天模板和解析器进行 2x2 的析因分析,可以精确定位该效应:两个主效应完全为零,所有的效应都存在于交互作用中——没有哪个组件是有缺陷的,修复契约的一端完全没有任何作用。在 tau-bench 的 115 个交互式零售任务中,同样的替换使服务器解析的调用从 0 增加到 636,达到任意工具执行的任务从 0 增加到 103。我们的探针在 Qwen2.5-Coder 的 21 倍规模范围内复现了这一漏斗效应:在所有规模下,服务器解析出的均为 0/100,而在 32B 规模下,格式良好的发出调用上升至 80/100(根据裁决的标准金标准校准后约为 72)。在匹配的上下文中、跨越可比的规模跨度,静默比例保持在 0-2 之间(这是在运行前提交到代码库的预测)。Llama-3.1-8B 将任务函数本身作为工具调用的比率为 23%,但在设置一个 strict:true 标志后降为 0。
这种不匹配甚至延伸到了训练循环内部,其后果具有规模依赖性:在 verl 的 AgentLoop 7B 模型中,115 个生成中有 45 个带有完整的调用;但 0 个被接受、0 个执行、0 个返回观察结果。在 1.5B 时,同样的零值被过度决定,因此我们分别报告这两个规模。在评估时,修复适配器恢复了底层机制,但并未带来显着的总体收益:解析从 0 提升到 84,拯救了 0 到 9 的失败,通过率从 53 上升到 62(无显着差异)。我们发布了一个 98 行的预检脚本,可以捕获此处的每一次静默失效。观察到的工具调用率不仅仅是模型本身的属性,它是测量它的“模型-接口栈”的属性。
🔍 关键发现与总结 (Key Findings & Takeaways)
-
接口瓶颈:观察到的工具调用成功率根本上是整个模型-接口栈的属性,而不仅仅是底层模型权重的属性。
1. The Interface Bottleneck: The observed tool-call success rate is fundamentally a property of the entire model-interface stack, not just the underlying model weights.
-
交互效应胜过组件缺陷:对照实验表明,聊天模板或解析器本身并没有固有损坏;相反,失效完全是由它们的交互作用引发的。
2. Interaction Effects over Component Defects: Controlled experiments show that neither the chat template nor the parser is inherently broken on its own; rather, the failure emerges entirely from their interaction.
-
规模依赖性失效:跨不同模型规模(如 Qwen2.5-Coder 和
verl在 7B/1.5B 下的 AgentLoop)的探针表明,模型经常会发出有效调用,但这些调用却被严格的解析或适配器不匹配系统性地丢弃了。3. Scale-Dependent Failures: Probes across varying model scales (such as Qwen2.5-Coder and
verl's AgentLoop at 7B/1.5B) reveal that models frequently emit valid calls that are systematically dropped by strict parsing or adapter mismatches. -
实用工具支持:作者通过其 GitHub 仓库 提供了一个 98行的预检检查脚本,能够即时检测并缓解静默轨迹审查问题。
4. Practical Tooling: The author provides a 98-line preflight check script via their GitHub Repository to instantly detect and mitigate silent trajectory censoring.
🔗 更多资源 (Additional Resources)
- BibTeX 引用源: arXiv:2609.03966
BibTeX Citation Source: arXiv:2609.03966
- DOI: 10.48550/arXiv.2609.03966
- 相关工具: 可通过 Google Scholar、Semantic Scholar 和 NASA ADS 访问。
Related Tools: Accessible via Google Scholar, Semantic Scholar, and NASA ADS.