论文链接:arxiv.org/abs/2608.06057 HTML 全文:arxiv.org/html/2608.06057v1 发表时间:2026 年 8 月 机构:未明确披露(作者 Xiaoqing Wu, Xingyu Fan, Feifei Li, Wenhao Que) 领域标签:cs.AI(人工智能)、Tool-Use Agent、Policy Distillation、Context Robustness


一、论文背景

1.1 什么是工具调用型 Agent?

近两年的大语言模型不再只是"聊天机器",而是逐渐变成能够动手做事的"代理"(Agent)。其中最核心的能力叫做工具使用(Tool Use)/ 函数调用(Function Calling):模型不再只输出文字回答,而是能输出一条结构化的"工具调用指令",例如 call(update_reservation, {id: "KKKYCG", payment_id: "abc"}),由外部程序去真正执行这条 API,然后把执行结果再喂回模型,模型据此决定下一步。

让这一切运转起来的,是 2022 年 Yao 等人提出的 ReAct(Reasoning and Acting)范式。ReAct 让模型在"思考(Thought)“与"行动(Action,即工具调用)“之间交替循环:模型先推理"我需要查这个订单的状态”,然后发起一次工具调用,拿到"观察(Observation)",再推理下一步,直到任务完成。这种"推理—行动—观察"的多轮循环,让 LLM 从被动的问答系统变成了能自主完成任务的 Agent。

1.2 多轮历史:Agent 的"记忆"从哪里来?

随着交互变长,模型看到的不再是一个干净的初始 prompt,而是一段不断累积的交互记录(Multi-Turn History):

  • 用户会修改之前的请求(“哦不,我要改的不是这单”)
  • 工具会返回部分或失败的结果(API 报错、参数不对、权限不够)
  • 早期的对话轮次会留下标识符、参数值、状态声明(某个订单号、某个城市名、某次"已完成"的声明)

关键问题来了:这些历史信息在"结构上"和"语义上"可能依然合理,但它们对当前动作的"权威性"已经过期了。

举个例子:航司助手在历史里看到一条"用 paymentId(驼峰命名)调用支付接口失败"的记录。这条记录结构上完全合法,语义上也讲得通(确实有过这么一次失败调用)。但是——当前真正的 schema 要求的是 payment_id(蛇形命名),而且这次失败并没有改变订单状态。一个稳健的模型应当遵从当前的 schema 发出 payment_id,而不是去模仿历史里那个错误的命名。

类似的"过期但合理"的历史还有很多:涉及到另一个实体的轨迹(不是用户现在问的这个订单)、不成立的完成声明(历史里声称"已退款"但其实没退)、已下线的旧工具(历史里调过 old_api,但现在工具集里已经没有了)。

1.3 现有基准为什么回答不了这个问题?

作者梳理了已有的工具使用基准,发现它们各有侧重,但都没有隔离“误导性历史是否会让一个本来会做对的模型做错"这一具体问题:

已有工作关注的问题与本论文的区别
BFCL v1/v2/v3/v4、APIGen、APIBench函数选择与参数生成的正确性多为单轮或固定多轮,不显式干预"历史权威性”
τ-bench、ToolSandbox、MMAU有状态多轮交互不专门构造"合理但非权威"的对照历史
ReflecTool-Bench模型能否修复先前的工具调用错误关注"修错”,而非"历史污染是否翻转了本来正确的策略"
InjecAgent、AgentDojo工具内容中的恶意指令注入关注安全攻击,而非"结构合法但非权威"的自然历史
Rabinovich & Anaby Tavor 2025自然查询变化、工具集变化改变的是查询和工具集,本论文则保持它们不变

换句话说:已有基准无法区分两种模型——一种是"根本没有这个能力",另一种是"有能力、在可靠上下文下做对了,但被误导的历史带偏了"。前者是能力问题,后者是可靠性问题。这两类错误在聚合指标上是看不出来的,因为它们都表现为"做错了"。

1.4 为什么这是一个真正重要的问题?

在真实部署中,Agent 几乎从不在"干净的 prompt"上工作。它总是在一条不断累积的交互记录上工作,其中充满用户改主意、工具失败、遗留的标识符和过期的状态声明。如果模型无法判断哪一段历史仍然对当前请求具有权威性,那么它就会在关键时刻被历史惯性带偏——即使它本身已经掌握了正确的策略。

这就引出了本论文要回答的核心问题:

当历史在说谎时,模型是否还能忠于它本该执行的策略?


二、论文定位和关联工作

本论文处在两条研究脉络的交汇处:工具使用评估与鲁棒性 和 上下文与策略蒸馏。

2.1 谱系一:工具使用评估与鲁棒性

前序工作:

  • ReAct(Yao et al. 2023)、Toolformer(Schick et al. 2023)、Gorilla(Patil et al. 2024):奠定了工具调用型 LLM 的基础范式——让模型"学会"在推理中穿插工具调用,并在大规模 API 集合上做选择。
  • APIGen(Qin et al. 2024)、APIGen-MT(Prabhakar et al. 2026):提供了可验证的多轮工具调用训练数据与基准。本论文的 ContextPollute-Bench 正是构建在 APIGen-MT 的航司(airline)和零售(retail)领域轨迹之上。
  • τ-bench、ToolSandbox、When2Call、BFCL v3/v4:覆盖了有状态交互、何时调用(when-to-call)等维度。

鲁棒性子线:

  • Rabinovich & Anaby Tavor 2025:研究自然查询变化和可用工具集变化下的鲁棒性。
  • ReflecTool-Bench(Liu et al. 2026):评估模型能否检测并修复多轮对话中先前的工具调用错误。
  • InjecAgent(Zhan et al. 2024)、AgentDojo(Debenedetti et al. 2024):研究工具内容中的恶意指令注入。

本论文的关键区别:ContextPollute-Bench 保持当前请求、可用工具、gold action 三者完全不变,只对"非权威历史"做干预。这是对上述所有工作的正交补充——它隔离的是"策略保留(policy preservation)",而非任务变化、错误修复或指令注入。

2.2 谱系二:上下文与策略蒸馏

前序工作:

  • 多轮呈现效应(Laban et al. 2026; Chen et al. 2026):即使任务信息不变,多轮的不同呈现方式也会改变模型行为。
  • 经典知识蒸馏(Hinton et al. 2015; Kim & Rush 2016):序列级 / token 级蒸馏迁移教师的分布或解码输出。
  • 反向 KL 与在策略蒸馏(Gu et al. 2024 MiniLLM; Agarwal et al. 2024 GKD; Thinking Machines Lab 2025):在学生自己采样的状态上用教师做监督,缓解 exposure bias(训练看的是教师的轨迹,部署看的是自己的轨迹)。反向 KL 是 mode-seeking 的——鼓励学生集中在教师的高概率模式上,而不是摊薄到所有可能模式。
  • 特权信息学习与上下文蒸馏(Vapnik & Vashist 2009; Lopez-Paz et al. 2016; Snell et al. 2022; Ye et al. 2026; Penaloza et al. 2026):训练时可访问某些特权信息(部署时不可用),把这些特权信息"蒸馏"进学生的权重里。

本论文的专门化:Oracle-OPD 把上述原则专门化到"可靠性不对称的工具使用“场景——教师条件化在"可靠的 Oracle State"上(这是它的特权信息),学生在"可能误导的污染历史"上生成自己的 prefix,教师在同样的 prefix 上提供软监督;部署时只需要学生和普通历史,教师和 Oracle 都被移除。

2.3 本论文在研究脉络中的定位

维度之前的路线本论文的突破
评估对象任务正确性 / 错误修复 / 安全攻击历史权威性下的策略保留
干预变量改查询、改工具集、注入恶意指令只干预历史,请求/工具/gold 完全不变
诊断方式聚合准确率三视图同步对照(Original/Polluted/Oracle)
解决思路提示工程 / SFT / 序列蒸馏Oracle 条件教师 + 反向 KL 在策略蒸馏
部署要求需要提示模板 / 需要教师仅需学生权重 + 普通历史

定位结论:本论文首次把"历史可靠性"作为一个独立可测量、可训练的工具使用瓶颈分离出来,并给出了一个不需要部署时特权的可扩展解法。


三、问题定义

3.1 从具体场景到抽象问题

具体场景:一个航司助手在历史里看到了一条用错误参数名 paymentId 调用支付接口失败的记录。当前的请求是更新订单 KKKYCG,正确的 gold action 是用 payment_id 调用 update_reservation。这条失败历史在结构上合法、语义上合理,但它对当前动作没有权威性——它没有改变订单状态,正确的下一步动作在有它和没它的情况下完全相同。然而模型可能会去模仿历史里的错误命名。

核心洞察:问题的本质不是"模型不会做”,也不是"任务变了",而是——当一段历史在结构上合法、语义上合理、但对当前动作不再具有权威性时,模型能否识别并保留它本已掌握的正确策略?

3.2 类比:把问题映射到一个熟悉的框架

可以把这件事类比成"策略保持(policy preservation)下的对抗性上下文扰动"——类似于经典鲁棒性研究中"输入扰动下分类决策是否保持",但这里被扰动的是 Agent 的上下文历史,要保持的是它的多轮策略:

经典鲁棒性本论文的形式化
输入 $x$当前请求 $u_t$ + 系统 prompt + 可用工具 $\mathcal{T}$
扰动 $\delta$在历史中插入一段"结构合法但非权威"的轨迹
分类器 $f$模型策略 $\pi$(输出 Call 或 Answer)
决策是否翻转gold action 不变的前提下,预测是否从对翻成错

3.3 形式化的问题定义

给定系统策略 $p$、可用工具集 $\mathcal{T}$、历史 $h_t$、最新请求 $u_t$,模型在每个决策点预测:

$$a_t \in \left\{ \text{ANSWER}(y), \text{CALL}(f, \mathbf{z}) \right\} \quad (1)$$
  • Call 决策正确当且仅当调用了 gold 工具且参数对象完全正确。
  • Answer 决策应澄清缺失信息、基于已验证证据回答,或识别当前工具无法完成请求。

本论文为每个决策点构造一个同步三元组:

$$\mathcal{D}_i = (x_i^{\text{orig}}, x_i^{\text{poll}}, x_i^{\text{oracle}}, a_i^\star) \quad (2)$$

三个视图共享相同的系统策略、工具集、最新请求和 gold action,唯一不同的是历史前缀。它们满足关键的 gold-preservation 约束:

$$a^\star(x_i^{\text{orig}}) = a^\star(x_i^{\text{poll}}) = a^\star(x_i^{\text{oracle}}) \quad (3)$$
  • Original:未经修改的原始源轨迹前缀。
  • Polluted:在不变的请求前,插入一段结构合法但非权威的轨迹。
  • Oracle State:只包含可靠的、与决策相关的意图、槽位、观察、策略和证据状态(不暴露 gold 工具名)。

要研究的问题:在 gold action 完全相同的前提下,Polluted 视图相对 Original / Oracle 视图,会翻转多少比例的正确决策? 以及,能否训练出一个学生策略,使它在 Polluted 视图下仍能保留 Oracle 视图所诱导的正确策略?

3.4 这个抽象的精妙之处

这个三视图同步设计有一个极深的妙处:它把"能力缺失"和"可靠性失败"彻底分开了。

  • 如果一个模型在 Original 上做错、在 Oracle State 上也做错,说明它没有这个能力。
  • 如果一个模型在 Oracle State 上做对、在 Original 上做对、但在 Polluted 上做错,说明它有能力但不可靠——历史污染劫持了它本已掌握的策略。

这种"对照实验"式的诊断,是过去任何聚合指标都做不到的。


四、问题解法

论文的解法分两部分:先测量(ContextPollute-Bench),再修复(Oracle-OPD)。

4.1 ContextPollute-Bench:测量历史污染的影响

4.1.1 三视图的构造

从 APIGen-MT 的航司和零售领域轨迹出发,对每个决策点构造三个同步视图(详见 3.3 节)。一个 benchmark 项就是一个四元组 $\mathcal{D}_i$。

如何确定 gold action?

  • Call 决策:保留下一条源消息是"对一个可用工具的有效调用"的决策点,该调用直接给出 gold 工具和 gold 参数。
  • Answer 决策:保留用户轮之后紧跟"实质性非工具回答"的决策点,覆盖三种情况:Clarify(澄清)、Answer-from-Evidence(基于证据回答)、Unsupported(识别当前工具无法完成)。

4.1.2 污染轨迹与 Oracle State 的生成

由 DeepSeek-V4-Flash 生成被插入的污染轨迹和 Oracle State,但不生成源 gold call/answer——这条红线保证了 gold action 来自 APIGen-MT 原始轨迹,而非合成。

4.1.3 十一类干扰算子(核心创新之一)

论文设计了 11 个 gold-preserving 干预算子,覆盖三个维度。这张表是理解整个 benchmark 的关键:

维度算子说明
Decision State(决策状态)不受支持的完成声明声称"已完成 X",但实际未完成
决策无关读取调用一个与当前决策无关的工具读取信息
已废弃的历史工具调用一个当前工具集里已不存在的旧工具
Entity Binding(实体绑定)同一工具不同目标用同一工具调用了另一个实体(另一个订单号)
交替竞争实体历史中交错出现多个相互竞争的实体标识符
Interface Execution(接口执行)错误参数名 + 拒绝用了错误参数名,被接口拒绝
遗留参数 + 表面成功用了旧的/遗留的参数名,但接口表面返回成功
缺失必需参数缺少某个必需参数
多余参数多了一个不该有的参数
格式漂移参数值格式变了(如日期格式、命名风格驼峰↔蛇形)
单位 / 尺度漂移数值的单位或尺度被换了(如美元↔美分)

关键属性:所有 11 个算子都经过确定性验证器校验,保证它们不改变源消息顺序、保持最新请求在最后、给工具调用配上结果、真正实例化了预期的干扰、并且 gold action 不变。Oracle State 若泄露了 gold 工具名或遗漏了决策关键状态,就会被拒绝。

4.1.4 数据划分与质量审计

SplitTotalCallAnswerGold tools
Train9,9015,8284,07314
Validation1,12184627513
Test-Indist2,3751,65172413
OOD-60060060006(训练时未见作为 gold)

轨迹级划分:来自同一源轨迹的所有例子留在同一个 split,杜绝训练/验证/测试之间的泄漏。OOD-600 专门用 6 个训练时从未作为 gold 出现的工具,测真正的泛化。

质量审计(两层):

  • 200 例精细人工审计:97.0% gold 正确率、99.0% Oracle 充分性、98.0% 标注一致;100 例 Call 审计中零例 gold 工具名字面泄漏。
  • 1000 例分层交叉审计:人工联合接受率 93.7%,Claude-Opus-4.7 接受率 91.6%,二者在联合 pass/fail 上一致率 92.5%。

4.1.5 评估指标体系

设 $d^\star$ 与 $\hat{d}$ 为 gold 与预测的决策类型,$(f^\star, \mathbf{z}^\star)$ 与 $(\hat{f}, \hat{\mathbf{z}})$ 为 gold 与预测的工具调用:

$$\text{TCR} = P(\hat{d}=\text{CALL}, \hat{f}=f^\star, \hat{\mathbf{z}}=\mathbf{z}^\star \mid d^\star=\text{CALL}) \quad (4)$$$$\text{OCR} = P(\hat{d}=\text{CALL} \mid d^\star=\text{ANSWER}) \quad (5)$$$$\boxed{\text{BTA} = \tfrac{1}{2}\text{TCR} + \tfrac{1}{2}(1-\text{OCR})} \quad (6)$$
  • TCR(True Call Rate,真正调用率):在应该调用时,完整调用了正确的工具 + 完整正确的参数。这是"该出手时就出手"的能力。
  • OCR(Over-Call Rate,过度调用率):在不该调用(应回答)时却发起了调用。这是"不该出手乱出手"的失败。
  • BTA(Balanced Tool-Use Accuracy,平衡工具使用准确率):把"该调用时调用对"和"不该调用时不调用"做算术平均,是本论文最核心的主指标。

另外还有 Decision Accuracy、Tool Accuracy(在 gold Call 上的工具选择准确率)、ArgExact|Tool(在工具选对条件下的参数完全匹配率),且满足 $\text{TCR} = \text{ToolAcc} \times \text{ArgExact}$。

设计哲学:BTA 之所以是主指标,是因为它同时惩罚两种极端失败模式——一种是"永远不调用"(高 OCR 抑制却低 TCR),另一种是"什么都调用"(高 TCR 却高 OCR)。一个健康的工具使用策略必须在两者之间取得平衡,BTA 正是这种平衡的度量。

4.2 Oracle-OPD:可靠状态策略迁移

诊断完问题后,作者提出了 Oracle-Guided On-Policy Distillation(Oracle-OPD),它由三个组件共同驱动。

4.2.1 三个设计组件

组件类比本论文做法
Reliable-State Conditioning(可靠状态条件化)教师在一个"安静无干扰的房间"里做决策教师条件化在 Oracle State 上,代表由权威任务证据诱导的策略,而非由竞争性历史轨迹诱导的策略
Distributional Policy Transfer(分布式策略迁移)不是只告诉学生"标准答案是 B",而是告诉学生"A 是 0.7、B 是 0.2、C 是 0.1"Token 级软目标保留教师在"回答 vs 调用、选哪个工具、生成什么参数"上的相对偏好,这些信息在单一硬目标序列里会丢失
Student-State Coverage(学生状态覆盖)教练不是在场边喊标准动作,而是上场陪练学生实际走到的每一个位置教师在学生自己生成的 prefix 上做评估,而非在固定的 gold/教师 prefix 上,保证训练时的状态分布与部署时一致

4.2.2 训练目标

设 $\pi_\theta$ 为学生、$\pi_T$ 为冻结教师。给定成对的 Polluted 与 Oracle 输入 $(x_p, x_o)$:

  1. 学生先在污染历史上采样生成一个 prefix:
$$y \sim \pi_\theta(\cdot \mid x_p) \quad (7)$$
  1. 对学生生成的每个 prefix $y_{
$$q_t^S = \pi_\theta(\cdot \mid x_p, y_{
  • 训练目标是在学生的状态分布上最小化学生到教师的反向 KL:
  • $$\boxed{\mathcal{L}_{\text{OPD}} = \mathbb{E}_{(x_p, x_o), y}\left[\frac{1}{|y|}\sum_{t=1}^{|y|} D_{\text{KL}}(q_t^S \,\|\, q_t^T)\right]} \quad (10)$$

    实现细节:

    • 反向 KL 在教师与学生 top-16 token 支持的并集上计算(遵循 Gu et al. 2024 的反向 KL 语言模型蒸馏实践)。
    • 温度 1,每个 prompt 4 次学生 rollout。
    • 不附加额外的 gold-CE 目标。
    • 部署时:只需要训练好的学生 + 普通交互历史;教师与 Oracle State 都被移除。

    4.2.3 为什么是反向 KL + 在策略?

    这两个选择不是随意的,而是各自对应一个根本问题:

    • 为什么反向 KL 而不是前向 KL? 前向 KL(等价于在教师序列上做 SFT)是 mean-seeking 的,会强迫学生覆盖教师所有可能的模式,包括很多低概率的边缘 token,导致长文本生成时分布过于平滑、容易漂移。反向 KL 是 mode-seeking 的,鼓励学生集中在教师高概率的模式上,这正是工具使用这种"需要明确决策"的场景想要的——你要的是"清楚地选一个工具并填对参数",而不是"在多个工具间摊薄概率"。
    • 为什么在策略(学生自己采样 prefix)? 因为训练时如果只看教师生成的 prefix,部署时学生看到的却是自己生成的、可能因为污染历史而走偏的 prefix——这就是经典的 exposure bias(训练分布与部署分布不一致)。让学生自己采样 prefix,教师在这些"学生真正会到达的状态"上做评估,才能把"纠偏信号"精确地送到学生真正会犯错的位置。

    4.2.4 方法全景对比

    方法教师视图监督形式前缀来源部署需要
    Gold-SFT—硬 gold 序列gold学生
    Oracle-SeqKDOracle硬解码序列教师学生
    Off-policy ODOracle软 token 分布gold学生
    Oracle-OPDOracle软 token 分布学生自己采样学生(教师与 Oracle 移除)

    五、评估指标与实验证据

    5.1 实验设置

    • 训练模型:Qwen3-1.7B(主)、Qwen3-8B。
    • 训练配置:3 个 epoch,全参数 FSDP,8 张 H20 GPU,贪心解码,按验证集 BTA 选 checkpoint。
    • Oracle-OPD 超参:学习率 $10^{-6}$,全局批大小 32 prompts,每 prompt 4 次 rollout,prompt/response 限制 12,288/1,024 tokens。
    • 交叉生成器评估:用 Claude-Opus-4.7 独立再生评估上下文,所有 checkpoint 保持固定,不用 Claude 生成的例子做训练/适配/模型选择。

    5.2 诊断实验:历史诱导的策略劫持有多严重?

    Table 2:三视图 BTA 对照(Test-Indist)

    模型P(污染)O(原始)R(Oracle)
    Qwen3-1.7B0.47200.67130.7450
    Qwen3-8B0.68880.84160.8910
    Qwen3-32B0.65870.71700.8773
    DeepSeek-V4-Flash0.56910.58290.6613

    翻转率分析(Qwen3-1.7B):

    • 从 Original → Polluted:总体 32.1%,Call 类 29.4%,Answer 类 40.5%。
    • 从 Oracle → Polluted:总体 40.8%,Call 类 37.5%,Answer 类 50.8%。

    损坏字面量采纳率(证明污染是直接原因):

    干扰类型M₀(未微调)在污染下采纳Oracle-OPD 后采纳
    格式漂移65.8%显著降低
    同工具不同目标34.8%1.0%
    交替竞争实体20.9%0.4%

    结论:32.1% 这个数字本身就是论文最强的论据——接近三分之一的、本来正确的决策,仅仅因为多看了一段结构合法但非权威的历史,就被翻转成了错误。这不是"模型能力不行",而是"模型有能力但被历史带偏了"。格式漂移的 65.8% 采纳率尤其触目惊心:只要历史里出现过一次蛇形↔驼峰的命名变化,模型就会大量跟随那个错误的命名风格。

    5.3 主实验:Oracle-OPD 学到了最强的平衡策略

    Table 3:Qwen3-1.7B 在 ContextPollute-Bench 上的后训练对比

    方法Test-Indist BTA ↑TCR ↑1-OCR ↑Decision Acc. ↑Tool Acc. ↑ArgExact|Tool ↑OOD-600 TCR ↑
    M₀(Polluted 基线)0.47200.58070.36330.79380.89930.64570.6233
    Gold-SFT0.66280.34220.98340.68380.53700.63730.2467
    Sampled-SFT (2:1)0.66200.33920.98480.67280.52370.64770.2400
    SeqNorm-SFT0.59830.19661.00000.47600.24580.80000.1000
    SFT→DPO0.63500.27001.00000.53840.33430.80760.1300
    Oracle-SeqKD0.82290.76880.87710.94100.90660.84810.7133
    Off-policy OD0.84990.90410.79560.93760.96420.93770.7433
    Oracle-OPD0.87030.91320.82730.94730.98240.92960.7433

    关键证据:

    1. 渐进改进:Oracle-SeqKD(0.8229)→ Off-policy OD(0.8499)→ Oracle-OPD(0.8703)。
    2. 统计显著性:相对 Off-policy OD 提升 +0.0204 BTA,95% CI [+0.0118, +0.0295],p < 10⁻⁴。
    3. SFT 家族的根本缺陷:Gold-SFT 及其变体虽然"非调用召回率"接近完美(0.98+),但"完整调用召回率"极低(0.34)——它们学会了停止边界,却丧失了执行召回。这是一个被 BTA 揭露、被单看 TCR 或 OCR 会掩盖的关键失败模式。

    5.4 平衡策略的三个模式(Figure 3 解读)

    策略模式TCR非调用召回率 (1-OCR)特点
    仅 Call 训练的 Gold-SFT0.87620.2942高执行召回,但无法学会何时停止
    混合 Gold-SFT0.34220.9834学会了停止边界,但执行召回极低
    混合 Oracle-OPD0.91320.8273兼顾高执行召回与选择性控制

    这个"工具使用策略平面"图(横轴 TCR、纵轴 1-OCR)是本文最直观的证据:BTA 等值线是反对角线,所有 SFT 变体都挤在"高抑制—低召回"的角落,而 Oracle-OPD 把策略推向了右上角——既该出手时出手(TCR=0.91),又该收手时收手(1-OCR=0.83)。

    5.5 鲁棒性迁移到干净历史

    一个合理的担忧是:“Oracle-OPD 会不会只是学到了修正特定污染模式,反而对干净历史过敏?“作者冻结 checkpoint,在 Original 视图上重新评估:

    模型方法Polluted BTA ↑Original BTA ↑
    1.7BOff-policy OD0.84990.8205
    1.7BOracle-OPD0.87030.8450
    8BOracle-OPD(Oracle-SFT 教师)0.93010.9260

    结论:可靠状态蒸馏学到的是通用的策略保留能力,而不是针对特定污染模板的修正规则——它在干净历史上同样有效(0.8450 vs 污染下的 0.8703,几乎无损)。

    5.6 跨干扰算子的鲁棒性

    Table 5(Call 侧 8 个算子的 TCR %):

    算子M₀Gold-SFTOff-ODOracle-OPD
    同工具不同目标50.732.690.391.6
    交替竞争实体53.428.589.291.6
    错误参数名+错误73.542.891.689.3
    缺失必需参数62.941.291.291.2
    多余参数68.934.291.492.3
    遗留参数+表面成功60.732.990.991.8
    格式漂移40.035.893.393.3
    单位/尺度漂移44.524.484.089.1
    算子宏平均56.834.190.391.3

    结论:Oracle-OPD 在 8 个算子中的 7 个上达到最佳或并列最佳。最大提升出现在单位/尺度漂移(+5.1pp)和两个实体绑定干扰上——这些恰恰是"语义合理但目标错误"的难点。

    交叉生成器迁移:在不重新训练的情况下,仅把污染轨迹换成 Claude-Opus-4.7 独立再生成的版本,Oracle-OPD 仍是最强的 1.7B 后训练模型(0.814 BTA,Off-OD 0.792,Oracle-SeqKD 0.761)。这证明改进不依赖于单一污染生成器的风格。

    5.7 驱动可靠状态策略迁移的三大因子(消融)

    Table 6(因子化消融):

    方法教师视图目标类型前缀来源BTA ↑
    Original-OPDOriginalSoftStudent0.7562
    Oracle-SeqKDOracleHardTeacher0.8229
    Off-policy ODOracleSoftGold0.8499
    Teacher-prefix ODOracleSoftTeacher0.8479
    Curriculum OPDOracleSoftT→S0.7923
    Oracle-OPDOracleSoftStudent0.8703

    因子贡献分解:

    • 因子 1(Oracle vs Original 教师视图):固定软目标 + 学生前缀,把教师视图从 Original 换成 Oracle → +11.41 pp(0.7562 → 0.8703)。这是最大的单一因子,说明"教师在可靠状态下诱导的策略"才是要迁移的真正对象。
    • 因子 2(软目标 vs 硬序列):固定 Oracle 视图,软 token 分布 vs 硬解码序列 → +2.70 pp(0.8229 → 0.8499 的差距,以及 0.8479 vs 0.8229 的对比)。软目标保留了教师关于"回答/调用、工具选择、参数生成"的相对偏好。
    • 因子 3(学生前缀 vs 教师前缀):固定 Oracle 视图 + 软目标,学生自己采样 vs 教师/gold 前缀 → +2.24 pp(0.8703 vs 0.8479/0.8499)。学生前缀覆盖了部署时学生真正会到达的状态。

    结论:三个因子任何一个单独都不够——Original-OPD 只有 0.7562,Off-policy OD(少学生前缀)只有 0.8499,Teacher-prefix OD(少学生前缀)只有 0.8479。三者合在一起才达到 0.8703。

    5.8 扩展教师与学生容量

    Table 7(两个互补扩展轴):

    学生训练方法/教师Test-Indist BTA ↑OOD TCR ↑
    1.7BGold-SFT0.66280.2467
    1.7BOracle-OPD,1.7B 教师0.87030.7433
    1.7BOracle-OPD,8B 教师0.91930.7500
    8BGold-SFT0.92210.7967
    8BOracle-OPD,8B base 教师0.90770.8200
    8BOracle-OPD,Oracle-SFT 教师0.93010.8217

    结论:8B 教师把同一个 1.7B 学生从 0.8703 提到 0.9193,且不增加任何推理成本(部署仍是 1.7B)。这证明"可靠 Oracle 视图下的策略知识"可以跨模型尺寸迁移。更强的教师和更有能力的学生都能从可靠状态蒸馏中获益。

    5.9 外部能力、调用控制与噪声鲁棒性迁移

    Table 8(外部基准):

    方法BFCL ↑W2C ↑Halluc. ↓
    M₀79.580.27010.5000
    Gold-SFT55.550.29950.4767
    Off-policy OD79.190.28420.4535
    Oracle-OPD79.770.30030.3915
    Oracle-OPD,8B 教师80.450.32940.3411

    三大迁移验证:

    1. 广泛函数调用能力保持:8B 教师蒸馏的 1.7B 学生在 BFCL v4 Non-Live 上达 80.45(甚至略高于未微调的 79.58),证明可靠状态特化没有以牺牲通用函数调用能力为代价。
    2. 调用控制跨基准迁移:When2Call Macro-F1 从 0.2701 提到 0.3294;支持工具幻觉率从 0.5000 降到 0.3411——这些改进发生在完全没有受控历史干扰的外部基准上。
    3. 噪声鲁棒性迁移到工具使用之外:在 HotpotQA-Distractor 验证集(7,405 例)上零样本评估,8B 教师蒸馏的 1.7B 学生在噪声上下文下达 0.5015 F1,比次优训练 checkpoint 高 2.97 F1 点,且 clean-to-noisy F1 差距是所有训练 1.7B 模型中最小的(0.1596)。

    Prompt-only 对照组:直接用 prompt 指示模型"忽略失败或无关历史”,BTA 只从 0.4720 提到 0.4849(+0.013);Oracle-OPD 达 0.8703(+0.398)。这说明问题不是"提醒一下就行”——模型需要学会区分哪段历史仍然具有权威性,这是一个需要训练而非提示的能力。


    六、效果优势的根源解释

    为什么 Oracle-OPD 能在 BTA 上系统性超越所有 baseline?要从机制因果链上解释,而不是停留在"它用了 X 所以好"。

    6.1 baseline 的根本局限在哪里?

    Gold-SFT 家族的根本缺陷:训练分布与部署分布的结构性错配。 Gold-SFT 在源 gold 动作上做 SFT,本质上是前向 KL:让学生覆盖教师(这里是 gold)的模式。但工具使用是一个高度类别不平衡的任务——训练数据里 Call 与 Answer 的比例、不同工具的比例都严重不均。SFT 家族试图用重采样(Sampled-SFT 2:1)、序列归一化(SeqNorm-SFT)来补救,但这些都是在改变训练数据分布,而没有改变"学生看到的 prefix 来自 gold 而非自己"这一根本错配。结果就是:它们学到了"高非调用召回"(因为 Answer 例子被放大),却丧失了"完整调用召回"(因为 Call 的执行没被在学生真实状态下纠正)。这不是"没做 X",而是"前向 KL + 离策略 prefix 这个组合结构上无法同时优化两端"。

    Oracle-SeqKD 的局限:硬序列丢失了相对偏好。 序列级蒸馏只迁移教师解码出的"一个"序列,丢掉了教师在每个 token 位置上的完整分布。工具使用的关键决策点(调用还是回答?选哪个工具?填什么参数?)恰恰需要的是相对偏好信息——“调用比回答更可能、工具 A 比工具 B 更可能、参数 payment_id 比 paymentId 更可能”。这些相对偏好一旦塌缩成硬序列,就只剩"标准答案",学生无法学到"为什么是这个答案而不是那个"。

    Off-policy OD 的局限:训练状态与部署状态不匹配。 Off-policy OD 虽然用了软 token 分布,但它的前缀来自 gold(或教师),而不是学生自己在污染历史下会到达的状态。部署时,学生在污染历史下会生成一个"被污染影响过的 prefix",而这个 prefix 在 Off-policy OD 训练中从未出现过——教师从未在这个被带偏的状态上给过纠偏信号。这就是经典的 exposure bias:训练看的是干净世界的轨迹,部署看的是污染世界的轨迹。

    6.2 Oracle-OPD 的根本性改变

    Oracle-OPD 的三个组件各自针对上述一个根本局限,组合起来改变了信息流与约束:

    改变 1:Oracle 视图把"可靠策略"作为迁移目标(+11.41 pp)。 把教师条件从 Original 换成 Oracle State,根本上是改变了"要迁移什么策略"这个问题的答案。Original 视图下的教师本身也会受到历史污染的影响——它在 Original 上诱导的策略已经不是"理想策略",而是"被原始历史稍微带偏的策略"。Oracle State 只包含可靠的、决策相关的状态,教师在它上面诱导的策略才是"没有历史污染的理想策略"。这一步把迁移目标从"一个被污染的策略"换成了"理想的可靠策略",是整个方法最大的单一增益来源。

    改变 2:软 token 分布保留了相对偏好(+2.70 pp)。 软目标在每个 token 位置传递的不是"标准答案",而是"教师在 answer/call/tool/arg 上的完整偏好分布"。对于工具使用这种"在多个合理选项间做明确选择"的任务,相对偏好正是关键信息。硬序列蒸馏相当于把教师的知识有损压缩成一个序列,而软目标保留了完整的相对结构。

    改变 3:学生前缀把纠偏信号精确送到学生真正会犯错的位置(+2.24 pp)。 这是"在策略"的核心价值。学生在污染历史下会到达一些"被带偏的状态"——比如它已经生成了一个模仿历史错误命名的 token,下一步它在这个错误基础上继续生成。教师在这个学生真实到达的错误状态上给软监督,相当于在"学生真正会跌倒的那个台阶"上贴了纠偏标签。Off-policy OD 的监督贴在 gold/教师 prefix 上,那些是干净世界的台阶,学生跌倒的污染台阶上没有标签。

    6.3 因果链总结

    把三个改变串起来:

    Oracle 视图(定义了"什么是可靠策略")→ 软目标(保留了可靠策略的完整相对偏好)→ 学生前缀(把这些偏好精确地迁移到学生真实到达的状态)→ 学生在污染历史下也能保留可靠策略 → BTA 从 0.4720 提升到 0.8703,再到 0.9193。

    6.4 反事实推理

    如果去掉任何一个组件会怎样?消融实验已经给出了答案:

    • 去掉 Oracle 视图(用 Original-OPD):BTA 从 0.8703 掉到 0.7562(-11.41 pp)。
    • 去掉软目标(用 Oracle-SeqKD 硬序列):BTA 掉到 0.8229(-4.74 pp)。
    • 去掉学生前缀(用 Teacher-prefix OD 或 Off-policy OD):BTA 掉到 0.8479 / 0.8499(-2.04 到 -2.24 pp)。

    每一个组件的缺失都会导致可测量的退化,且 Oracle 视图的缺失退化最严重——这反证了三个设计的必要性,也定位了可靠状态条件化是整个方法最关键的支柱。


    七、必要知识反推

    假设找一个完全没有相关知识的人去做这项工作,他最少必须掌握哪些知识?

    7.1 领域知识层:工具使用 Agent 的实际运作机制

    必须知道:

    • 工具调用型 Agent 如何在多轮历史中决策——不理解"模型在每个决策点看到的是累积历史 + 当前请求 + 可用工具"这个输入结构,就无法意识到"历史"是一个独立的、可干预的变量。
    • 为什么历史会过期但仍然合法——不理解 API 的 schema、参数命名约定、实体标识符的概念,就无法构造"结构合法但非权威"的污染轨迹。航司/零售领域的实际业务逻辑(订单更新、退款、库存查询)是构造真实污染的前提。
    • 工具使用的两种决策类型——Call 与 Answer 的区别,以及 Answer 的三个子类(Clarify / Answer-from-Evidence / Unsupported)。不理解这个分类,就无法设计覆盖"何时调用"与"如何调用"两端的 BTA 指标。

    为什么必须:没有这些领域知识,就不知道要干预什么变量、怎么干预才"结构合法但非权威"、以及怎么评估"对"与"错"。

    7.2 方法论知识层:蒸馏与鲁棒性的研究脉络

    必须知道:

    • 知识蒸馏的两个方向:前向 KL(mean-seeking,等价于 SFT)与反向 KL(mode-seeking,MiniLLM/GKD)。不理解这两个方向的性质差异,就无法解释为什么 Oracle-OPD 选择反向 KL——因为工具使用需要明确的决策,而不是在多个选项间摊薄。
    • exposure bias 与在策略蒸馏:不理解"训练看教师轨迹、部署看自己轨迹"的分布错配,就无法解释为什么必须在学生自己采样的 prefix 上做监督。
    • 特权信息学习(Learning from Privileged Information):不理解"训练时有特权、部署时无特权"这个范式,就无法理解"Oracle State 是教师的特权信息,部署时被移除"的设计。
    • 上下文鲁棒性研究:不理解已有基准(BFCL、τ-bench、ReflecTool-Bench、InjecAgent 等)各自评估什么、不评估什么,就无法定位"历史权威性"这个空白。

    为什么必须:没有这些方法论知识,就无法把"可靠状态策略迁移"这个直觉转化成一个有理论基础、可实现、可评估的方法。

    7.3 工程知识层:基准构建与评估设计

    必须知道:

    • 如何做轨迹级数据划分——来自同一源轨迹的所有例子必须留在同一个 split,否则训练/测试泄漏会让指标虚高。
    • 如何做确定性验证——污染轨迹必须经过"保持源消息顺序、最新请求在最后、工具调用配结果、实例化预期干扰、gold action 不变"这一连串程序化校验。这保证了 benchmark 的"gold-preservation"属性是可验证的,而不是靠人工目测。
    • 如何做分层审计——200 例精细人工审计 + 1000 例分层交叉审计 + 与独立 LLM(Claude-Opus-4.7)的一致性校验。没有这套审计,benchmark 的质量就是空中楼阁。
    • 如何设计平衡指标——BTA 之所以是主指标,是因为它同时惩罚"永远不调用"和"什么都调用"两种极端。不理解这个,就会设计出会被某一种极端"刷分"的指标。

    为什么必须:没有这些工程知识,benchmark 的质量不可信,方法的效果也无法被可信地测量。

    7.4 知识融合的关键节点

    这些知识不是简单叠加,而是在三个创造性节点上产生了化学反应:

    融合节点 1:三视图同步设计。把"工具使用评估"(领域知识)与"对照实验"(方法论知识)融合,创造出 Original/Polluted/Oracle 三视图——这是把"能力缺失"和"可靠性失败"分开的关键。没有领域知识不知道要控制什么,没有方法论知识不知道怎么控制。

    融合节点 2:Oracle-OPD = 反向 KL + 在策略 + 特权信息。把"反向 KL 的 mode-seeking 性质"、“在策略蒸馏的 exposure bias 修复”、“特权信息学习的训练时有部署时无"三个本来独立的技术融合成一个统一方法。三者的必要性由因子化消融证实——任何一个去掉都会显著退化。

    融合节点 3:十一类干扰算子的三维分类。把"工具使用的三个失败维度”(决策状态、实体绑定、接口执行)与"受控干预"(工程知识)融合,创造出一个既覆盖全面又每个算子都 gold-preserving 的算子体系。这保证了 benchmark 既能覆盖真实世界的多种历史污染模式,又每个例子都能做"gold 不变"的严格对照。


    八、论文中可以提取的通用性灵感

    8.1 灵感一:用"同步多视图对照"分离能力缺失与可靠性失败

    核心思想:当一个系统的失败可能有多个原因时,构造一组"目标不变、只改变某一维度"的同步多视图,可以把不同原因的失败彻底分开。

    论文证据:Original / Polluted / Oracle State 三视图共享系统策略、工具、请求、gold action,只改历史。32.1% 的翻转率直接证明了"可靠性失败"是独立于"能力缺失"的失败模式。

    推广场景:

    1. 代码生成:同一题意,构造"干净 prompt / 带误导性注释的 prompt / 规范化 prompt"三视图,分离"模型不会写"与"模型被误导性注释带偏"。
    2. 检索增强生成(RAG):同一问题,构造"无检索 / 检索到相关文档 / 检索到看似相关实则干扰的文档"三视图,分离"模型不知道答案"与"模型被错误检索带偏"。
    3. 多语言理解:同一语义,构造"母语 / 字面翻译 / 文化适配"三视图,分离"语义能力缺失"与"语言形式导致的判断偏差"。
    4. 多智能体协作:同一任务,构造"无历史沟通 / 带误导性历史沟通 / 真实历史沟通"三视图,分离"Agent 不会协作"与"Agent 被错误历史沟通带偏"。

    8.2 灵感二:特权信息蒸馏——训练时有特权、部署时无特权

    核心思想:如果某种"理想信息"在部署时不可得但在训练时可构造,可以把它作为教师的特权条件,再通过蒸馏把"在特权下诱导的策略"迁移到无特权的学生。

    论文证据:Oracle State 是教师的特权(只含可靠状态),学生在污染历史上自采样 prefix,教师在这些 prefix 上给软监督。部署时只有学生 + 普通历史,却保留了 Oracle 诱导的可靠策略——BTA 从 0.4720 提升到 0.8703,且不需要部署时 Oracle。

    推广场景:

    1. 自动驾驶:训练时教师可访问"上帝视角的全局地图与所有车辆意图"(特权),学生只有车载传感器输入;把"上帝视角下的安全驾驶策略"蒸馏进只有局部感知的学生。
    2. 医疗诊断:训练时教师可访问"病理金标准"(特权),学生只有症状与问诊;把"金标准下的诊断策略"蒸馏进只有症状的学生。
    3. 对话系统:训练时教师可访问"用户真实意图标注"(特权),学生只有对话历史;把"知道真实意图后的应答策略"蒸馏进只能推测意图的学生。
    4. 代码 review:训练时教师可访问"作者的真实意图与后续 bug 历史"(特权),学生只有代码 diff;把"知道真实意图与后果后的 review 策略"蒸馏进只能看 diff 的学生。

    8.3 灵感三:在策略蒸馏——把监督送到学生真正会跌倒的台阶

    核心思想:训练时的监督应贴在"学生自己会到达的状态"上,而不是"标准答案预设的状态"上。这样才能修复部署时真正会发生的错误。

    论文证据:学生前缀 vs 教师/gold 前缀的消融显示,学生前缀贡献 +2.24 pp BTA。Off-policy OD(在 gold 前缀上监督)只有 0.8499,Oracle-OPD(在学生前缀上监督)达 0.8703。

    推广场景:

    1. 数学推理蒸馏:让强教师不再只在"标准解题步骤"上打分,而是在"弱学生自己的推理轨迹(包括错误尝试)“上逐 token 评分,把纠偏信号精确送到学生真正会卡住的步骤。
    2. 代码补全:让强教师不再只在"正确代码"上训练弱模型,而是在"弱模型自己生成的(可能有 bug 的)代码"上逐 token 评分,修复弱模型真正会写的错误模式。
    3. RLHF 的 reward model:不再只在"理想回答"上训练 reward model,而是在"策略自己生成的回答"上打分,让 reward 信号覆盖策略真实访问的状态分布。
    4. 多语言翻译:让强教师不再只在"参考译文"上训练,而是在"弱模型自己的(可能有偏的)译文"上逐 token 评分,修复弱模型真正会犯的翻译错误。

    8.4 灵感四:平衡指标——同时惩罚两种对立的极端失败

    核心思想:当一个任务有两种对立的失败模式(“该做不做"与"不该做乱做”)时,主指标应当是两者的平衡平均,而不是任一单端,否则会被某种极端策略刷分。

    论文证据:BTA = ½·TCR + ½·(1-OCR)。Gold-SFT 家族在 1-OCR 上接近完美(0.98+),但 TCR 极低(0.34),BTA 只有 0.66。如果只看 TCR 或只看 OCR,都会被这类极端策略误导。BTA 把策略推向"既该出手时出手、又该收手时收手"的右上角。

    推广场景:

    1. 搜索引擎的召回与精确:F1 是两者的调和平均,避免"全召回不精确"或"高精确不召回"两种极端。
    2. 欺诈检测的漏报与误报:主指标应是两者的平衡,而不是任一单端,否则会被"全标欺诈"或"全标正常"刷分。
    3. 推荐系统的探索与利用:主指标应平衡"推荐已知用户喜欢的"与"探索用户新兴趣”,而不是只优化点击率。
    4. 安全过滤的过度拦截与漏放:主指标应平衡"拦截有害内容"与"不误伤合法内容",而不是只优化任一端。

    8.5 灵感五:提示不够时要靠训练——区分"提醒"与"能力"

    核心思想:有些问题表面看是"模型不知道要注意",实际上是"模型没有学会区分的能力"。前者用 prompt 提醒即可,后者必须靠训练。

    论文证据:Prompt-only 对照组(直接指示"忽略失败或无关历史")只把 BTA 从 0.4720 提到 0.4849(+0.013),而 Oracle-OPD 训练达到 0.8703(+0.398)。差距 30 倍。这说明"区分哪段历史仍具权威性"是一个需要训练的能力,不是一个提示能解决的注意事项。

    推广场景:

    1. 对抗样本鲁棒性:提示模型"注意输入可能有扰动"几乎无效,必须靠对抗训练才能获得真正的鲁棒性。
    2. 幻觉控制:提示模型"不要编造"效果有限,必须靠基于事实监督的训练(如 RAG + grounded loss)才能系统性降低幻觉。
    3. 偏见纠正:提示模型"不要有偏见"效果有限,必须靠平衡训练数据与去偏损失才能系统性减少偏见。
    4. 长上下文遵循:提示模型"注意中间的内容"效果有限,必须靠"针在 haystack"式的训练才能提升长上下文中的指令遵循。

    附录:论文核心贡献一览

    ContextPollute-Bench 的核心属性:

    • 首个隔离"历史诱导策略劫持"的基准。
    • 三视图同步(Original / Polluted / Oracle State),gold action 完全一致。
    • 11 个 gold-preserving 干扰算子,覆盖 Decision State / Entity Binding / Interface Execution 三维。
    • 两层质量审计:200 例(97% gold 正确率)+ 1000 例(93.7% 人工接受率)。

    Oracle-OPD 的核心属性:

    • 教师条件化在 Oracle State(特权),学生在污染历史自采样 prefix。
    • 反向 KL + 软目标 + 在策略三合一。
    • 部署时仅需学生 + 普通历史,教师与 Oracle 完全移除。
    • 1.7B 学生:BTA 47.20% → 87.03%;8B 教师蒸馏:91.93%;8B 学生:93.01%。
    • 迁移到:干净历史、未见工具、独立再生的评估上下文、BFCL v4、When2Call、HotpotQA 噪声多跳 QA。

    核心一句话:当历史在说谎时,模型需要的不是一句"别信历史"的提示,而是一个在"可靠状态"下被教师手把手纠偏过的策略——而这个策略,部署时自己就能站稳。