Self-Distilled Agentic Reinforcement Learning

Paper: arXiv:2605.15155 Code: ZJU-REAL/SDAR Code reference: master @ 78e3cfb6 (2026-05-20)

1. Motivation (研究动机)

这篇论文关注的是 multi-turn LLM agent 的 post-training:agent 不是一次性回答问题,而是在 ALFWorld、WebShop、Search-QA 这类环境里连续观察、行动、再观察。现有 RL 方法(尤其是 GRPO)能把环境成功率或 verifier reward 作为优化信号,但这个 reward 通常是 trajectory-level 的:一条轨迹最后成功或失败,训练时再把同一个 sequence-level advantage 广播到许多 token 上。它能告诉模型“这条轨迹总体好不好”,却很难告诉模型“到底是哪几个 token 的动作选择、工具调用、检索查询或购买动作改变了结果”。对于长 horizon agent,这种 credit assignment 粗粒度问题会越来越严重,因为早期一个动作可能改变后续 observation,而后续 token 又会把前面的错误带入下一轮上下文。

另一个看似互补的方向是 On-Policy Self-Distillation (OPSD)。OPSD 试图让 teacher branch 提供 dense token-level guidance,从而补上 RL 稀疏奖励的不足。本文的 teacher 并不是另一个更大模型,而是同一个 policy 在训练期额外看到 privileged context(例如 retrieved skills)之后形成的 skill-conditioned branch。这个 branch 理论上能告诉 student:在当前状态和已生成前缀下,哪些 token 更符合技能知识。

但论文指出,把 OPSD 直接搬到 multi-turn agent 会出现两个核心问题:第一,multi-turn drift 会让 teacher-supported trajectory 与 student 实际轨迹逐步偏离,早期还有效的 token-level guidance 到后期可能变成不稳定甚至错误的监督;

第二,skill-conditioned privileged guidance 是不对称的,正向 endorsement 往往有价值,但负向 rejection 不一定可靠,因为 teacher 对某个 student-sampled token 低概率,可能是 skill 检索错了、skill 本身不完整、teacher branch 没有用好 skill,或者多轮状态漂移导致上下文已经不匹配。

Figure 1 解读:左侧对比的是 naive GRPO+OPSD 与 SDAR 的优化形态。GRPO+OPSD 把 OPSD 作为均匀的辅助损失直接加到 RL 上,容易把所有 teacher signal 都当成可信监督;SDAR 则只把 token-level OPSD 当作被 gate 调制的辅助项,仍然保留 verifier-driven GRPO 作为主干。右侧汇总展示 SDAR 在多个环境上的整体优势,论文想证明的不是“skill prompt 更强”,而是“把 privileged teacher signal 以 token-level、asymmetric、bounded 的方式注入 RL 更稳”。

本文要解决的具体问题可以概括为:如何在不破坏 RL sequence-level advantage 语义的前提下,把 skill-conditioned OPSD 的 token-level signal 稳定地蒸馏进 multi-turn agent policy。这比简单提高 benchmark 分数更重要,因为一旦这个机制成立,agent 训练就可以同时利用两种互补监督:环境 reward 负责最终任务目标,privileged context 负责局部 token 级纠偏;推理时又不需要继续提供 skills,从而把训练期的外部知识内化到模型参数中。

Figure 2 解读:这张 preliminary study 支撑了论文的两个动机。左侧展示 multi-turn OPSD 的不稳定:当 student 轨迹偏离 teacher-supported trajectory 后,KL 与 performance 都会恶化,说明 dense supervision 并不自动等价于稳定训练。右侧展示 RLSD-style 方案也会因为把 teacher gap 直接放进 advantage reweighting 而放大早期 mismatch。也就是说,问题不是“是否需要 teacher”,而是“teacher signal 应该以多大强度、对哪些 token 生效”。

Figure 3 解读:左图把 token 按 Teacher-Student log-probability gap 分桶,显示负 gap token 占比很高;中图显示 gap 会随 multi-turn step 变化,说明 teacher-student mismatch 不是静态噪声,而会沿着交互过程累积;右图按 turn 内相对位置观察 gap,进一步说明 token 重要性与可信度并不均匀。这个分析直接导出 SDAR 的核心判断:positive-gap token 可以更强蒸馏,negative-gap token 要软化处理,而不能被一刀切地优化。

2. Idea (核心思想)

SDAR 的核心 insight 是:让每个 token 自己决定接受多少 privileged teacher supervision。具体做法是把 teacher-student log-probability gap detach 后送入 sigmoid gate,得到 ;当 teacher 对 student 已经采样出来的 token 更有信心时,gate 变大,蒸馏信号增强;当 teacher 不认可该 token 或 gap 为负时,gate 变小,只做保守的软衰减。

这与 naive GRPO+OPSD 的根本区别在于:naive 方案把 OPSD loss 当成 uniform auxiliary loss,所有 token 共享同样信任强度;SDAR 则把 OPSD 明确降级为 gated auxiliary objective,主优化仍是 GRPO。它也不同于 RLSD:RLSD 会用 teacher gap 重新加权 token-level advantage,可能改变 RL advantage 的语义;SDAR 不改 advantage,只在 actor update 内额外加一个 bounded token-level loss,因此 verifier reward 的优化方向更干净。

可以把 SDAR 理解成一个 self-paced curriculum:不是按训练步数、turn depth 或人工 schedule 决定何时蒸馏,而是按 token 处的 teacher-student gap 决定当前 token 是否值得被 teacher 指导。这个设计尤其适合 skill-conditioned teacher,因为 skills 的质量、检索匹配度、teacher utilization 都不稳定;强行相信所有负向 teacher rejection 会引入噪声,而只抓住 positive endorsement 可以把有用技能知识逐步内化进 student。

更具体地说,论文的创新点不在于引入一个更强的 teacher,而在于把“同一 policy 在普通上下文与 privileged context 下的分布差”变成可训练的 reliability signal。这样 student 在推理时不需要额外 skills,却能在训练中吸收那些 teacher branch 明确更偏好的 token;这比直接 imitation 更稳,也比把 teacher gap 混入 RL advantage 更少破坏环境 reward 的信用分配。

3. Method (方法)

3.1 Overall framework:GRPO 主干 + token-level gated OPSD 辅助项

论文把训练目标写成: 这里的关键不是“多加一个 loss”,而是两个 loss 的职责被刻意分开: 仍然来自环境/verifier reward,保持 task-level objective; 只负责在 token 层面调节 teacher guidance。若 表示 response token 是否有效,论文使用 masked aggregation: GRPO 部分对每个输入 采样一组 responses ,从环境 reward 得到 group-relative advantage ,再用 clipped surrogate 优化 token ratio 。SDAR 不改变这些 ,这点非常重要:agent 最终目标仍由环境成功率、WebShop score/acc 或 Search-QA accuracy 决定,teacher 只是提供“哪些 token 更值得被局部模仿”的辅助形状。

Figure 4 解读:图中底部是 environment-driven RL loop:agent 多轮与环境交互,得到 trajectory reward,再形成 GRPO advantage。上方是 privileged teacher branch:训练期先检索 skill,把 skill 作为额外 context 加到 teacher prompt 中,计算同一个 response token 在 teacher-conditioned prompt 与 student prompt 下的 log-prob gap。右侧 token-level gating 把 gap 转成 ,最后形成 OPSD loss + GRPO loss。推理时不需要 skills,因为目标是把 skills 中有用的行为偏好蒸馏进 student policy。

3.2 Skill retrieval:privileged context 的来源

论文把 skill library 写成 。训练时每个 task 会取一个 skill 作为 teacher branch 的 privileged context。作者评估了四类 retrieval strategy:UCB Retrieval、Keyword Matching (KM)、Full Retrieval、Random Retrieval。UCB 把 skill 选择视为 multi-armed bandit: 其中 是 skill 过去被用作 context 时的平均 reward, 是被选择次数, 是同一任务类型的总检索次数, 控制 exploration-exploitation。KM 则按任务描述与预定义类别标签做关键词匹配。这个模块的作用不是要证明“检索越准越好”这么简单,而是给 SDAR 提供一个可变质量的 privileged signal;后续 robustness 结果显示,即使 Random Retrieval 也能超过 w/o OPSD,说明 gate 对低质量 skill 噪声有一定过滤能力。

3.3 OPSD gap 与 gated token loss

在 token 位置 ,student distribution 是 ,teacher distribution 是带 privileged context 的 。论文用 reverse-KL 方向定义 per-token divergence: 完整 vocabulary summation 很贵,所以 SDAR 对 student-sampled token 做 single-sample estimate,并取其相反数作为 gap: 随后把 detach 后的 gap 映射到 sigmoid gate: 最终 token-level loss 是: 这里有一个容易误解的地方:当 为正,teacher 比 student 更支持当前 token,gate 接近 1,蒸馏项会鼓励 student 提高该 token 的 log-prob;当 为负,teacher 不支持当前 token,但这个 rejection 在 skill-conditioned setting 中不一定可信,所以 sigmoid gate 让蒸馏强度变小,而不是完全按 teacher 的负信号强推。 控制 gate sharpness: 等价于 uniform distillation; 太大则接近 hard binary gate,失去 soft modulation。

3.4 三种 gating signal 与默认选择

论文比较了三种 token-level gate:

  • Entropy gating:,其中 。它假设高 entropy token 更需要 teacher 指导,但 entropy 只是 student uncertainty,并不直接代表 teacher 是否更懂。
  • Gap gating:。这是本文默认方法,因为它直接衡量 teacher 对 student sampled token 的相对 endorsement。
  • Soft-OR gating:,试图结合 uncertainty 与 gap,但容易因为任一信号中等偏高就触发,从而降低选择性。

直觉上,gap gating 最符合本文问题结构:多轮 agent 的 teacher 不总是强者,因此“不确定”本身不能说明应当模仿;只有 teacher 对 student 已经生成的 token 给出更高概率时,才更像一个值得内化的 positive signal。

3.5 训练流程伪代码(基于 released code)

Code reference: master @ 78e3cfb6 (2026-05-20) — pseudocode and mapping based on this commit

def build_teacher_batch(batch, skill_provider, tokenizer, max_prompt_length):
    teacher_inputs = []
    for sample in batch:
        prompt_text = tokenizer.decode(sample.prompt_ids)
        skill_text = skill_provider.get_privileged_info(sample.task_metadata, prompt_text)
        teacher_prompt = "[Privileged Skill Information]\n" + skill_text + "\n\n" + prompt_text
        teacher_prompt_ids = tokenizer.encode(teacher_prompt, add_special_tokens=False)
        teacher_prompt_ids = teacher_prompt_ids[-max_prompt_length:]
        teacher_inputs.append(concat_with_original_response(teacher_prompt_ids, sample.response_ids))
    return collate_teacher_inputs(teacher_inputs)
def compute_sdar_loss(student_log_probs, teacher_log_probs, response_mask, gate_beta=5.0):
    teacher_log_probs = teacher_log_probs.detach()
    delta_t = teacher_log_probs - student_log_probs.detach()
    gate = torch.sigmoid(gate_beta * delta_t).detach()
    kl_per_token = teacher_log_probs - student_log_probs
    gated_kl = gate * kl_per_token
    loss = agg_loss(gated_kl, response_mask, loss_agg_mode="token-mean")
    metrics = {
        "sdar/gate_mean": masked_mean(gate, response_mask),
        "sdar/gate_active_ratio": masked_mean((gate > 0.5).float(), response_mask),
        "sdar/teacher_gap_mean": masked_mean(delta_t, response_mask),
        "sdar/loss": loss.detach(),
    }
    return loss, metrics
def sdar_actor_update(batch, actor, optimizer, cfg):
    log_prob = actor.forward_log_probs(batch.input_ids, batch.responses)
    pg_loss = compute_grpo_policy_loss(
        old_log_prob=batch.old_log_probs,
        log_prob=log_prob,
        advantages=batch.advantages,
        response_mask=batch.response_mask,
        cliprange=cfg.clip_ratio,
    )
    policy_loss = pg_loss
    if cfg.use_kl_loss:
        policy_loss = policy_loss + cfg.kl_loss_coef * compute_ref_kl(log_prob, batch.ref_log_prob)
    if cfg.use_sdar_loss:
        sdar_loss, sdar_metrics = compute_sdar_loss(
            student_log_probs=log_prob,
            teacher_log_probs=batch.teacher_log_probs,
            response_mask=batch.response_mask,
            gate_beta=cfg.sdar_gate_beta,
        )
        policy_loss = policy_loss + cfg.sdar_loss_coef * sdar_loss
    optimizer.zero_grad()
    policy_loss.backward()
    optimizer.step()
    return policy_loss

论文公式与 released code 实现差异:论文主文有时用 表示 teacher distribution,也用 表示 privileged-context branch;released code 没有单独加载一个 frozen teacher model,而是在 build_teacher_batch 中把 [Privileged Skill Information] prepend 到 prompt,再用同一个 actor worker 计算 teacher_log_probs。差异的实质是:teacher 是“同一 policy 的 skill-conditioned forward pass”,不是另一个独立 teacher;在 compute_sdar_loss 中 only the teacher log-probs and gate are detached,梯度只通过 student log-prob 回到 actor。

Paper ConceptSource FileKey Class/Function
SDAR Hydra entry 与训练器装配verl/trainer/main_sdar.pyrun_sdar, SDARTaskRunner.run; 设置 use_sdar_loss=True, sdar_loss_coef, sdar_gate_beta
Skill-conditioned teacher batchverl/trainer/ppo/rlsd_ray_trainer.pybuild_teacher_batch, _compute_teacher_log_probs; prepend skill 并用 actor 计算 teacher log-probs
SDAR gated distillation lossverl/trainer/ppo/sdar_utils.pycompute_sdar_loss; delta_t, gate, gated_kl, metrics
Actor policy update 中合并 GRPO 与 SDARverl/workers/actor/dp_actor.pyupdate_policy; policy_loss += sdar_coef * sdar_loss
Multi-turn rollout、reward、advantage 与 teacher forward loopverl/trainer/ppo/skillsd_ray_trainer.pySkillSDRayTrainer.fit; 保留 GRPO advantages,不替换为 token advantage
Skill provider 与 baseline RLSD 工具verl/trainer/ppo/rlsd_utils.pySkillProvider, compute_rlsd_token_advantage
复现实验启动配置examples/sdar_trainer/run_*.shrun_alfworld_3b.sh, run_search_3b.sh, run_webshop_3b.sh

4. Experimental Setup (实验设置)

4.1 Benchmarks 与数据规模

论文在三个 agent benchmark 上评估。ALFWorld 是 text-based household game,来自 ALFRED embodied AI benchmark,包含 3,827 个 task instances,分为 Pick and Place、Look at Obj in Light、Pick Clean then Place in Recep、Pick Heat then Place in Recep、Pick Cool then Place in Recep、Pick Two Obj and Place 六类。Search-QA 使用 search-augmented QA 任务,包括 single-hop 的 NQ、TriviaQA、PopQA,以及 multi-hop 的 HotpotQA、2Wiki、MuSiQue、Bamboogle;训练数据来自 NQ 与 HotpotQA,因此这两个是 in-domain,其余是 out-of-domain evaluation。WebShop 是 web-based interactive shopping environment,论文选择 128 个固定 validation tasks,与 Feng et al. (2025) 对齐。

4.2 Models, baselines, metrics

模型覆盖 Qwen2.5-3B-Instruct、Qwen2.5-7B-Instruct、Qwen3-1.7B-Instruct。Baseline 分三类:training-free 的 Vanilla 与 Skill-Prompt*;post-training 的 GRPO、OPSD、Skill-GRPO、Skill-GRPO*;hybrid RL-OPSD 的 GRPO+OPSD、Skill-SD、RLSD。指标按环境区分:ALFWorld 报 success rate (%);Search-QA 报 accuracy (%),并给出 NQ、TriviaQA、PopQA、HotpotQA、2Wiki、MuSiQue、Bamboogle 的平均;WebShop 同时报 Score 与 Acc (%)。

4.3 Training config:论文描述与 released script 对齐

论文称 SDAR 使用 Qwen2.5-Instruct 与 Qwen3-Instruct 系列,在 8 H800 GPUs 上训练 150 steps。

更具体的 released script 显示:examples/sdar_trainer/run_alfworld_3b.shsdar_coef=0.01gate_beta=5.0train_data_size=16val_data_size=128group_size=8actor_rollout_ref.actor.optim.lr=1e-6data.max_prompt_length=2048data.max_response_length=512ppo_mini_batch_size=256ppo_micro_batch_size_per_gpu=32kl_loss_coef=0.01invalid_action_penalty_coef=0.1env.max_steps=50trainer.n_gpus_per_node=8trainer.total_epochs=150

examples/sdar_trainer/run_search_3b.sh 使用 train_data_size=128val_data_size=512、prompt length 4096、response length 512、micro batch 16、kl_loss_coef=0.001invalid_action_penalty_coef=0.01env.max_steps=4、4 GPUs、trainer.total_training_steps=150

examples/sdar_trainer/run_webshop_3b.sh 使用 train_data_size=16val_data_size=128、prompt length 4096、response length 512、mini batch 64、micro batch 8、env.max_steps=15、2 GPUs、total_epochs=150。这些数值来自实际 launch scripts,而不是 base config defaults。

附录 hyperparameter table 进一步汇总:GRPO、Skill-GRPO、Skill-SD、GRPO+OPSD、RLSD、SDAR 均用 learning rate ,group size (OPSD 不适用),PPO clip ratio ,reference KL coefficient ;SDAR 的 、skill retrieval strategy 为 KM。Skill-SD 的 ,RLSD 的 ,GRPO+OPSD 的 ,对应 no-gate uniform distillation。

5. Experimental Results (实验结果)

5.1 Main results:SDAR 相比 GRPO 与 hybrid baselines 的收益

主表的关键信息是:SDAR 并不在所有单项子任务都第一,但在平均指标与推理不带 skills 的设置下更稳定。下表摘出每个 model 上最重要的平均列,数值均来自 Table 1。

Model / MethodALFWorld AvgSearch-QA AvgWebShop ScoreWebShop Acc
Qwen2.5-3B GRPO75.036.479.863.3
Qwen2.5-3B Skill-GRPO*80.536.176.366.4
Qwen2.5-3B GRPO+OPSD81.244.677.866.4
Qwen2.5-3B Skill-SD73.444.175.964.0
Qwen2.5-3B RLSD79.743.884.466.4
Qwen2.5-3B SDAR84.443.485.068.0
Qwen2.5-7B GRPO81.242.080.972.6
Qwen2.5-7B Skill-GRPO*88.347.587.081.2
Qwen2.5-7B GRPO+OPSD80.447.086.876.5
Qwen2.5-7B Skill-SD85.147.886.176.5
Qwen2.5-7B RLSD82.049.087.477.3
Qwen2.5-7B SDAR85.949.089.482.8
Qwen3-1.7B GRPO46.140.867.338.3
Qwen3-1.7B Skill-GRPO*28.140.780.450.0
Qwen3-1.7B GRPO+OPSD32.042.270.738.3
Qwen3-1.7B Skill-SD52.340.881.853.9
Qwen3-1.7B RLSD42.240.674.050.8
Qwen3-1.7B SDAR53.941.976.858.6

最直接的结论:在 Qwen2.5-3B 上,SDAR 的 ALFWorld Avg 从 GRPO 的 75.0 提到 84.4,WebShop Acc 从 63.3 提到 68.0;在 Qwen2.5-7B 上,SDAR 的 Search-QA Avg 达到 49.0,与 RLSD 持平,并把 WebShop Acc 提到 82.8;在更难的 Qwen3-1.7B 上,SDAR 的 ALFWorld Avg 为 53.9,高于 GRPO 的 46.1,也高于 Skill-SD 的 52.3,WebShop Acc 为 58.6,高于 Skill-SD 的 53.9 和 RLSD 的 50.8。论文摘要里的提升“+9.4% on ALFWorld, +7.0% on Search-QA, +10.2% on WebShop-Acc for 7B”对应的是相对 GRPO 或相关 7B 设置的主指标差异。

一个值得注意的现象是 Skill-GRPO* 在 7B ALFWorld 上有 88.3,超过 SDAR 的 85.9;但星号表示 validation with skills,推理期仍依赖外部 skills。SDAR 的目标更偏向 internalization:训练时看 skills,推理时不需要 skills。对于 3B,Skill-GRPO 测试不带 skills 时 ALFWorld 只有 60.2,而 Skill-GRPO* 带 skills 有 80.5,说明 prompt-level skill dependency 很强;SDAR 不带 skills 仍达到 84.4,说明 gated distillation 的确把部分技能知识写进 policy。

5.2 Training dynamics:负 gap 不等于不能蒸馏

Figure 5 解读:左图显示 Qwen2.5-7B 在 ALFWorld 训练时平均 Teacher-Student gap 长期为负,说明 teacher branch 平均看并不比 student 更支持 sampled tokens;这正是 naive distillation 容易出错的地方。右图显示 gate activation ratio 大部分早期训练低于 0.5,意味着 SDAR 没有盲目把所有 teacher signal 注入 student;随着训练推进,activation ratio 上升,表示更多 token 进入 constructive teacher guidance 区间。

Figure 10 解读:附录的 Gate Active Ratio 曲线把上述现象扩展到不同模型和环境。它不是一个固定阈值 schedule,而是在训练中随 token gap 自适应变化;不同环境曲线形状不同,说明 gate 学到的是当前 teacher-student relation,而不是简单按 step 递增。

Figure 11 解读:Gate Mean 与 active ratio 相互补充。active ratio 只看 的比例,Gate Mean 反映所有 token 的平均权重。若某个环境里 active ratio 不高但 gate mean 平滑上升,说明 SDAR 对 borderline tokens 仍有软权重,而不是 hard filter;这也解释了为什么 太大表现会变差。

Figure 12 解读:OPSD Loss 曲线用于观察辅助项是否在训练中压过 RL 主目标。结合论文对 的 ablation 解释,若 distillation loss 权重过大,负 gap teacher 会迫使 policy 远离 reward-preferred behavior;SDAR 默认用 ,让它作为 shaping signal,而不是主优化目标。

Figure 13 解读:Teacher-Student Gap Mean 直接监控 privileged teacher 与 student 在 sampled tokens 上的相对 log-prob。平均 gap 常为负,强调本文的 asymmetric trust 不是假设,而是实验观测。SDAR 的成功点在于从总体偏负的 signal 中挑出局部 positive endorsement。

Figure 14 解读:Reward Curve 展示了最终任务 reward 随训练推进的变化。它与前几张 diagnostic figures 一起说明:gate 不是为了让 teacher gap 本身变好看,而是为了让 reward-driven learning 更稳定。若 gate 指标变化但 reward 不涨,说明 auxiliary distillation 没有真正转化为 agent 能力;论文用 reward curve 将机制指标与任务指标连接起来。

5.3 Robustness:检索质量下降时仍能受益

鲁棒性实验固定 ,比较不同 skill retrieval。结果为:UCB 得到 ALFWorld 86.8、WebShop-Score 87.5、WebShop-Acc 81.2;KM 得到 85.9、89.4、82.8;Full 得到 83.2、87.2、78.1;Random 得到 83.1、82.5、73.6;w/o OPSD baseline 是 81.2、80.9、72.6。即使 Random Retrieval 完全没有任务意识,也分别带来 +1.9、+1.6、+1.0 的提升。KM 带来 +4.7、+8.5、+10.2,并在 WebShop 上超过 UCB。这说明 SDAR 的收益并非完全依赖 perfect retrieval;低质量 skills 会制造噪声,但 gate 能把一部分 negative 或不确定 teacher rejection 软化。

5.4 Ablation:为什么是 gap gate、、reverse KL

Figure 6 解读:Teacher-Student Gap gating 明显优于 entropy 和 soft-OR,最终 success rate 接近 ,并且 100 steps 后爬升更快。原因是 gap 直接比较 teacher 与 student 对当前 token 的相对偏好;entropy 只代表 student 是否犹豫,不代表 teacher 是否可靠;soft-OR 容易把两个信号混在一起,降低选择性。

Figure 7 解读: 的 sweep 表明 最好。 等价于去掉 gate,uniform distillation 会继承 naive OPSD 的不稳定; 让 gate 太接近二值化,borderline token 没有平滑部分 credit; 在保守抑制与正向激活之间达到平衡。

Figure 8 解读: 的结果显示 最稳。 太弱,无法提供足够 token-level corrective signal; 太强,会让 distillation gradient 压过 GRPO reward signal。由于平均 teacher gap 经常为负,过大的 可能把 student 推向 teacher 低置信的行为,导致性能下降。

Figure 9 解读:reverse KL 优于 forward KL 与 JSD。论文的解释是 reverse KL 更 mode-seeking,更倾向于让 student 集中到 teacher 支持的 modes;在 partial weak teacher setting 下,这种选择性比 forward KL 的 mode-covering 更安全。forward KL 会让 student 覆盖 teacher 分布支持的更多 token,可能把不可靠的 privileged guidance 一并吸收;JSD 作为对称折中仍带有 mode-covering 倾向。

5.5 Limitations 与读者应注意的边界

论文没有把 SDAR 描述成通用无条件提升。第一,它仍需要训练期可用的 skill library 或 privileged context;若完全没有可检索技能,teacher branch 的优势来源会减弱。第二,SDAR 的收益依赖 gate 能从 noisy teacher signal 中识别 positive endorsement;当 teacher branch 系统性错误、或 skills 与任务分布严重错配时,sigmoid gate 只能软化负信号,不能创造正确知识。第三,实验集中在 ALFWorld、Search-QA、WebShop 三类 agent 任务与 Qwen2.5/Qwen3 family,尚未证明对更长 horizon 的真实网页/软件工程 agent、强工具调用环境或多模态 embodied agent 同样有效。第四,released code 中 teacher forward 使用同一个 actor worker 与 skill-augmented prompt,这个设计高效且符合 self-distillation,但也意味着 teacher 的质量随当前 policy 变化;若 policy 初期极弱,positive-gap token 可能稀少,需要依赖 GRPO 主干先提供基本行为能力。

总体来看,SDAR 的贡献不在于提出一个复杂的新 agent architecture,而在于给 RL + OPSD 的结合方式加了一个关键约束:RL advantage 不被 teacher gap 改写,teacher signal 不被 uniformly trusted,distillation 强度由 detached token-level gap 自适应控制。这让它在多轮 agent 的稀疏 reward 与 dense but noisy teacher supervision 之间取得比较干净的折中。