Fail-Fast, Restart-Smart:SWE 智能体任务的早期失败预测与重启
论文信息
- 标题:Fail-Fast, Restart-Smart: Early Failure Prediction and Restart for SWE Agentic Tasks
- 作者:Chenyu Wang, Yunbo Lyu, Junda He, Zhou Yang, Chenxing Zhong, Yaniv Harel, David Lo
- 发表:arXiv:2608.03222(2026 年 8 月 4 日提交,v1)
- 链接:https://arxiv.org/abs/2608.03222
- 领域:Software Engineering (cs.SE); Artificial Intelligence (cs.AI)
一句话总结
针对 SWE 智能体长轨迹中"失败运行更长、更烧钱"的问题,作者提出两阶段控制器 FailFast-RestartSmart:用一个 0.6B 轻量监控器(FailFast)基于轨迹前缀预测失败并提前中止,再以同策略新 rollout 重启(RestartSmart),将被中止运行的仓库 diff 作为"可选 overlay"提供给新 agent 参考,在 SWE-bench Verified 上以 5% 误报率节省 14.6%–20.4% token,并在 25% 误报率下将 Qwen3.6-27B 解决率从 66.6% 提升至 71.8%。
研究动机
- Token 雪崩效应:SWE agents 通过长轨迹解决仓库级 issue,随上下文累积,每步成本递增。
- 失败轨迹代价更高:失败运行往往更长,表现出冗余探索、重复或循环(looping),暗示部分失败可在结束前被检测出来。
- 早停的两难:
- 过早终止是干预而非纯预测问题——误报会中止本会成功的轨迹,即使预测准确也可能降低端到端性能;
- 但失败并非毫无价值——AgentLens 将 54.9% 的失败轨迹归类为 Partial-fail(结构上接近已知良好流程),说明失败尝试中可能含有可恢复的部分进展。
- 研究空白:先前工作将"早期终止"与"恢复"孤立研究。真正开放的问题不仅是何时停止,而是什么信息应跨越重启边界,使恢复收益超过误报损害与重试成本。
核心研究问题:"Can we stop a likely-to-fail trajectory early and turn the saved compute and partial progress into a more successful retry?"
方法:FailFast-RestartSmart
整体框架是针对单条活跃轨迹的两阶段控制器:(i) FailFast 决定何时中止;(ii) RestartSmart 决定携带什么进入重试。
3.1 FailFast 监控器
问题形式化:将早期终止建模为逐步(per-step)失败预测;部署决策为预算化警报——在固定误报率(FPR,被错误中止的成功运行比例)下最大化召回率(被捕获的失败运行比例)。
训练数据: - 由被评估策略模型 Qwen3.6-27B-FP8 在 SWE-bench Verified 上、使用 mini-swe-agent 框架、以 seeds 0–10 采样产生的轨迹; - 每个训练样本是截断于第 t 步的轨迹前缀。
状态表示(仅含严格在线信息),序列化为两部分: - [ISSUE]:任务说明书(issue 描述); - [WINDOW]:最近 8 步的 thought、action、observation,外加一个持久钉选(pin)的最近产生补丁的步骤。
监督信号: 1. 终端标签 y_final ∈ {0,1}:最终是否成功(稀疏、延迟的监督); 2. 密集进度目标 g_f2p, g_p2p ∈ [0,1]:在全新实例环境中重放前缀的 bash 命令提取中间补丁,再用官方终端评估器计算 fail-to-pass 与 pass-to-pass 通过率。初始值为 (0,1),仅在有效编辑时更新;非编辑步骤或畸形补丁沿用上次有效分数;若 agent 还原工作树则重置为 (0,1); 3. Bradley–Terry 偏好对:将成功与失败前缀配对,在每个 step-fraction 十分位桶内匹配,以控制实例难度与轨迹进度,分离出实例不变的排序信号。
架构: - 冻结的 LM 主干(Qwen3-0.6B)+ LoRA(作用于 attention 与 MLP 投影); - 在池化的最后 token 隐藏状态上挂三个 fp32 线性头:value head s(预测最终解决)、F2P head、P2P head; - 仅训练 LoRA 适配器与三个头。
训练目标(Eq. 1):
经验设定 λ_p = 0(F2P 信号有稳定提升,P2P 无);部署配置 λ_f = 0.5, λ_r = 0.25。
校准与部署策略: - Platt scaling 将原始 value logit 校准为概率; - meta score:p_fail = σ(wᵀ[v, ĝ_f, φ] + b),逻辑回归融合校准值 v、F2P 进度估计 ĝ_f 与步数比例 φ(优于纯 value 阈值,能有效惩罚低进度、后期状态); - 门控:最小步数比例 φ ≥ φ_min(实验显示 φ_min = 20 步最佳),完全跳过早期步的监控推理; - 警报规则:累积投票达阈值 M(count-M)或连续 K 次投票(sustained-K)触发中止; - 通过预算约束网格搜索选择工作点(在目标 FPR 下最大化召回); - 监控器完全 out-of-fold 训练;仅校准与阈值选择在评估折预测上拟合;嵌套实例级 cross-fit 产生几乎相同的工作点(排除测试标签过拟合)。
3.2 RestartSmart 重启策略
设计理念:当监控器在 t_f 步中止运行时,以全新预算启动同策略新 rollout——不携带先前 prompt 历史,但温启动以访问被中止仓库的编辑。作者发现文本摘要会诱发严重的 LLM 锚定效应(anchoring effects),使重启 agent 过早锁定先前错误推理路径,因此改为保留物理代码编辑作为干净的环境级 overlay。
编辑提取: - 重放被中止轨迹的 bash 命令,每条命令后捕获 git diff HEAD,diff 变化时记录快照; - 仅限任务基线时已存在的文件(排除 agent 新建文件); - 关键:不在 t_f 处精确切割——定位 t_f 处或之后的第一个编辑(若无则回退到最近先前的编辑),并延伸切割点直至连续 g 步无进一步编辑,确保 overlay Δ 是"已安定"的完整补丁而非编辑中片段。
Overlay 携带机制(offered, not forced): - Δ 作为可移除的、git-apply 支持的工具挂载,而非拼入 prompt; - agent 可执行 overlay diff(查看)、overlay on(应用)、overlay off(还原)、overlay status(查询); - overlay 初始为 off,prompt 将其框架为来自被停尝试的未验证(unverified)线索(附录 C 给出逐字 prompt:明确警告 "those changes are NOT applied — the source is pristine"、"do NOT assume they are right",要求 agent 先复现 issue 再验证继承编辑); - 重启在实例预备的 test-bed 环境中执行;不注入自动生成的复现脚本(避免有缺陷的复现脚本成为 agent 过度信任的假 oracle)。
实验设置
数据集
- SWE-bench Verified:500 个实例,每个实例 11 次独立运行(seeds 0–10);
- 划分:350 训练 / 50 验证 / 100 测试(instance-grouped、seeded、冻结为 JSON,同一实例的全部 11 次运行不跨集合泄漏);
- 每条轨迹最多 100 步(遵循 SWE-bench Leaderboard)。
模型
| 角色 | 模型 | 原生 SWE-bench Verified 解决率 |
|---|---|---|
| 监控器主干 | Qwen3-0.6B(含上下文仅约 2GB VRAM) | — |
| 策略模型(开放权重) | Qwen3.5-9B | 48% |
| 策略模型(开放权重) | Qwen3.6-27B | 66% |
| 策略模型(开放权重) | Gemma4-31B | 62% |
| 策略模型(闭源 API) | Gemini3-Flash | 67% |
- FailFast 独立评估:单个监控器仅在 Qwen3.6-27B 轨迹上训练,零权重更新迁移至全部四个策略;
- RestartSmart 评估:使用策略专属监控器(在各模型自身轨迹上训练)。
基线
- AgentStop(Pham et al. 2026):将 token log-probabilities、token 计数、步骤重复输入梯度提升树;原设计在预定检查点做一次决策,作者从官方代码复现并扩展为逐步设置(显著提升其召回);
- Duration 控制:无监督基线,仅用步数打分,同样校准和阈值化(严格上界无信号停止);
- SWE-PRM(Gandhi et al. 2025):推理时 Process Reward Model,通过分类法引导的 prompt 反馈纠错,使用其最强配置 Claude-Sonnet-4;
- Cold restart:被 FailFast 中止的任务不带任何先前上下文重新运行。
训练超参数
- LoRA r=16,α=32;峰值 LR 1e-4,cosine 调度 1500 步;weight decay 0.01;LoRA dropout 0.05;
- 中止规则搜索空间:步数比例下限 {0.20,…,0.50}、分数阈值 0.30–0.96(步长 0.02)、M∈[1,12]、K∈[1,8]、校准正则 C∈{0.1,0.3,1,3};
- 所有报告指标为 5 次独立运行平均;100 个留出实例 × 5 次 = 500 条轨迹。
主要结果
FailFast 早停性能(Table 1,开放权重模型)
Qwen3.6-27B(原生策略):
| FPR | 方法 | Recall | Prec. | Fired | Saved |
|---|---|---|---|---|---|
| 5% | FailFast | 30.5 | 76.1 | 13.4 | 20.4 |
| AgentStop | 21.0 | 68.6 | 10.2 | 12.5 | |
| Duration | 19.8 | 67.3 | 9.8 | 11.4 | |
| 25% | FailFast | 68.3 | 58.8 | 38.8 | 49.0 |
| AgentStop | 54.5 | 52.3 | 34.8 | 37.2 | |
| Duration | 50.9 | 51.8 | 32.8 | 33.7 |
Qwen3.5-9B:5% FPR 时三家召回相近(34.7/35.1/34.7,弱策略的极长失败可被步数规则捕获),但 FailFast 节省 15.7% tokens vs. AgentStop 10.2%、Duration 10.9%;25% FPR 时 FailFast Recall 72.2、Saved 50.1%。
Gemma4-31B(跨家族迁移):5% FPR 时 Recall 27.2、Saved 14.6%(vs. AgentStop 23.8/10.3);25% FPR 时 Recall 57.4 vs. AgentStop 51.5。
核心数字:5% FPR 下,单个 27B 训练的监控器在三个策略上稳定节省 14.6%–20.4% 总 token 成本;25% FPR 时在 Qwen3.6-27B 上拦截 68.3% 失败运行并回收 49.0% tokens,为重启提供算力缓冲。
闭源 API 迁移(Table 2,Gemini 3 Flash)
AgentStop 结构性不适用(专有 API 不暴露内部 token logprobs)。
| FPR | FailFast Recall | Prec. | Fired | Saved | Duration Saved |
|---|---|---|---|---|---|
| 5% | 22.7 | 69.8 | 10.6 | 16.0 | 12.0 |
| 25% | 44.8 | 46.8 | 31.2 | 37.1 | 30.2 |
召回略有下降,但 token 节省仍居首位。
能耗与碳排放估算
- 按 2N FLOPs/token 近似,0.6B 监控器每 token 比 9–31B 策略便宜 15×–52×;
- 监控器仅增加 0.1%–0.6% 估计计算开销;
- 扣除监控开销后,净推理能耗/运营碳节省约 14.5%–20.3%(三个开放权重策略)。
RestartSmart 重启性能(Table 3)
| 策略(原生解决率) | FPR | 方法 | FP lost | TP rec. | Resolve rate | Token overhead |
|---|---|---|---|---|---|---|
| Qwen3.5-9B (48.2) | — | SWE-PRM | — | — | 52.4 (+4.2) | $0.15/t. |
| 10% | RestartSmart | 45.8 | 21.7 | 52.2 (+4.0) | +36.9% | |
| 10% | Cold Restart | 45.8 | 16.8 | 50.8 (+2.6) | +12.1% | |
| 25% | RestartSmart | 25.0 | 19.0 | 52.0 (+3.8) | +39.2% | |
| Qwen3.6-27B (66.6) | — | SWE-PRM | — | — | 63.4 (−3.2) | $0.12/t. |
| 10% | RestartSmart | 15.2 | 27.6 | 69.8 (+3.2) | +30.3% | |
| 25% | RestartSmart | 8.8 | 28.9 | 71.8 (+5.2) | +43.8% | |
| 25% | Cold Restart | 27.5 | 20.2 | 66.8 (+0.2) | +18.2% | |
| Gemma4-31B (62.2) | — | SWE-PRM | — | — | 63.0 (+0.8) | $0.12/t. |
| 10% | RestartSmart | 12.9 | 24.4 | 65.2 (+3.0) | +20.5% | |
| 25% | RestartSmart | 9.1 | 17.5 | 65.2 (+3.0) | +36.9% |
关键发现: 1. 轨迹上下文的必要性:RestartSmart 显著优于 cold restart(Qwen3.6-27B 在 25% FPR 下 +5.2% vs. +0.2%);cold restart 会破坏多达 36.4% 的误报运行(27B、10% FPR),而 RestartSmart 仅损失 15.2%(25% FPR 下 8.8% vs. 27.5%); 2. 更强模型更能利用 overlay:Qwen3.6-27B 能批判性评估先前修改、保留可行编辑并将误报运行恢复至完成; 3. SWE-PRM 的反转效应:对弱模型 Qwen3.5-9B 有效(+4.2%),但对强模型 Qwen3.6-27B 反而降低 3.2%——侵入式 prompt 干预会扰乱强模型的连贯推理;且 SWE-PRM 无 FPR 预算控制机制; 4. 可控的算力-性能权衡:27B 在 10% FPR 为高性价比点(+3.2% 解决率换 +30.3% 算力);9B 的甜点位在 10% FPR(峰值 +4.0%,+36.9%);总开销远低于一次完整额外 rollout 及 test-time scaling 预先承诺的采样预算。
消融实验
监控器主干容量(Table 4)
Qwen3-0.6B vs. Qwen3-4B:扩参无意义提升,0.6B 相当甚至更优(如 27B、10% FPR:45.5 vs. 41.3)——前缀级失败信号很早就饱和,与标量奖励建模的扩展瓶颈一致。
输入特征(Table 5)
- +S(加入全程结构化摘要):无收益且多数情况有害(27B、15% FPR:58.1 → 55.1)——LM 监控器可直接分析原始执行文本时,粗粒度启发式摘要是干扰项;
- −W(去掉最近执行历史):召回下降最剧烈(27B、15% FPR:58.1 → 44.9,−13.2)——FailFast 的决策紧密依赖动态轨迹行为;
- −I(去掉问题描述):同样退化,说明任务意图提供必要的基线上下文。
编辑完成耐心度(Table 6,RestartSmart)
| FPR | 策略 | FP lost | TP rec. | Resolve |
|---|---|---|---|---|
| 25% | Immediate | 18.8 | 22.8 | 68.8 (+2.2) |
| 25% | Wait (Ours) | 8.8 | 28.9 | 71.8 (+5.2) |
立即切割产生碎片化 overlay,错误破坏本可成功的运行;默认等待 5 步无编辑后再切割。
附录补充消融
- 观察窗口大小 k(Table 9):k∈{2,4,8,16};k=2 上下文不足;k=8 与 k=16 在多数预算下处于评估噪声内,故选 k=8(窗口翻倍则监控输入成本翻倍而无可靠收益);
- 进度目标头(Table 10):V Only vs. V+F2P vs. V+F2P+P2P;F2P 密集监督提供正向表示对齐(5% FPR 下 +6.2%),P2P 无额外收益,验证 V+F2P 为最优目标;
- 训练种子数 N(Table 11):N∈{3,6,11};N=3 与 N=6 相近,N=11 在中等预算下带来最高约 10 点提升(暴露更丰富的失败模式多样性),轨迹收集为一次性前置成本;
- 策略专属监控器(Table 12):如 Qwen3.5-9B 在 5% FPR 时 Recall 39.8、Saved 27.4;Gemma4-31B 在 25% FPR 时 Recall 66.7、Saved 54.2。
统计显著性(附录 A)
- Table 7:McNemar 配对检验,FailFast 在 30 项比较中 25 项显著更优、从未显著更差;
- Table 8:RestartSmart 在每个策略与预算下收益均显著(p ≤ 9.4×10⁻³,最强 4.2×10⁻⁵);对 cold restart 在 27B 上及三策略汇总显著;SWE-PRM 在任何策略上均无 α=0.05 显著的改进(9B p=0.050、27B p=0.060 净下降、Gemma4 p=0.73)。
图表说明
该论文无插图(figures),全部实验证据以 12 个表格呈现:主文 Table 1–6(早停性能、闭源迁移、重启性能、主干规模、输入消融、编辑耐心度),附录 Table 7–12(统计检验、窗口大小、进度目标、种子数、策略专属监控器)。
局限性
- 评估范围有限:仅在 SWE-bench Verified + mini-swe-agent 上评估,结论可能无法推广到其他软件工程任务或 agent 框架;
- 跨策略泛化虽由多规模、多家族(含闭源 API)模型的一致结果支持,但闭源模型上检测召回有所下降(Gemini 3 Flash 5% FPR 时 22.7% vs. 开放权重 27.2%–30.5%);
- 5% FPR 工作点拦截轨迹过少,无法有效服务重启,重启需 10%/25% 的更宽松预算(以更多误报为代价);
- RestartSmart 需等待中止信号后的编辑安定,token 占用高于 cold restart。
结论与未来工作
结论:FailFast–RestartSmart 通过轻量级 0.6B 监控器提前终止疑似失败轨迹(5% FPR、即 ×0.95 基础性能下节省高达 20.4% 执行 tokens),并提取部分代码编辑 overlay 引导同模型重试,以 20.5%–43.8% 的适度 token 开销提升解决率(最高 +5.2%),无需昂贵的过采样。
未来工作方向: 1. 训练更高精度的监控器以获得更大的 token 节省; 2. 提取更广的非锚定(non-anchoring)工件,在保护被误分类运行成功率的同时,将更多失败轨迹转化为成功。
个人点评
- 问题切中要害:agentic 长轨迹的成本控制是当前 LLM agent 落地的核心痛点,本文把"早停"与"重启恢复"统一到一个预算化框架中,FPR 预算的设定非常工程友好。
- 设计细节扎实:dense F2P/P2P 重放监督、Bradley-Terry 偏好对、meta score 融合、count-M/sustained-K 警报规则、overlay "offered not forced" 机制、编辑安定等待——每个环节都有消融支撑。
- 意外发现有价值:0.6B 监控器即可饱和(容量扩展无效)、SWE-PRM 对强模型反而有害、文本摘要诱发锚定效应——这些结论对后续 agent 监控研究有直接借鉴意义。
- 落地成本低:监控器仅 2GB VRAM、0.1%–0.6% 计算开销,6 小时内可在 2 张 GPU 上训完,且能跨模型家族、跨闭源 API 迁移,实用性强。