长程 agent 的自改进循环:缺哪一样,就停在哪一样
10 月 13 日同日的六篇论文拼出一条完整的 agent 训练流水线——环境与验证器、逐步进度信号、失败恢复、中止交接,缺任何一环,循环就停在那一环。
10 月 13 日这一天,Hugging Face 日榜前一百篇里有六篇在做同一件事:让长程 agent 靠自己变强。它们分属不同团队、不同基准、不同基座模型,合起来却拼出一条完整的训练流水线——环境与验证器从哪来、每一步拿什么信号、失败后能不能从中间接续、什么时候该交给人接手。
任何一环缺位,循环就停在那一环:环境造不出来就没得训,没有逐步信号就学不动长程,不能从失败状态接续就只剩终局一个样本,判断不了该不该继续就没法交给人。下面按这条流水线从下往上排四环,每环给一组实测数字、一条能照做的操作,以及一个真实的踩坑点。
一、环境与验证器:先写隐藏规格,再渲染成环境
AutoEnvScaling(arXiv:2610.14163,10 月 9 日提交)把环境设计本身当成一道 terminal 任务:proposer agent 从正在训练的 solver 的 rollout 里造新环境,solver 的新 rollout 再引导下一轮。相比纯提示生成,有效环境率最高涨 25 倍,单个有效环境成本最高降 75%。用 GPT-5.6-sol 造出的环境训练 Qwen3.5-35B-A3B,Terminal-Bench 2.1 在同等训练步数下比静态环境池基线高 4.3 点(34.6 ± 1.9 → 38.9 ± 2.4,avg@5,± 为置信区间);换 Claude Opus 5 当 proposer 时增益是 3.8 点(35.5 ± 1.6 → 39.3 ± 1.6),同一批环境换到 Qwen3.5-9B 上是 6.3 与 7.4 点。让 Qwen3.6-35B-A3B 一人分饰两角,TB 2.1 从 41.1 涨到 53.3(+12.2,比静态池高 6.1 点),TB 4.0 从 1.6 涨到 3.2。
⚠️ 原稿把这里的基线写成「同等 token 预算」,回源后不成立。论文表 3 的对照物是 static Tmax pool under matched training steps——Tmax(Ivison et al., arXiv:2606.23321《Tmax: A simple recipe for terminal agents》)是一套静态 terminal 环境池,不是 token 预算;附录 G.3 原文写着 “Training comparisons match the number of solver updates, not total compute or elapsed time”,完整对照跑满 288 个 solver update。口径从「算力相等」变成「步数相等」,结论的读法不一样:它证明的是同样的更新次数下课程更好,不是同样的钱下更划算。
这个区分对工程决策反而有利,因为论文还给了两个跟成本直接相关的数:课程更贴合 solver 当前能力之后,AutoEnvScaling 的可用 rollout 组率是静态池的 3.1 倍,每步采集 rollout 的平均耗时少 42%。也就是说在步数相等的对照下,它还更快——同一步数内拿到更多能用的训练组。
两处消融值得抄进配置里。一是 proposer 的自检开关:GPT-5.6-sol 的有效环境率在关闭自检时只有 19.5%,打开后是 84.8%(Claude Opus 5 是 52.0% → 94.0%),这个开关对成本的影响比换 proposer 模型还大。二是把 solver 的历史 rollout 从 proposer 工作区里摘掉,Qwen3.5-35B-A3B 的成绩掉 3.6 分(GPT-5.6-sol)与 6.7 分(Claude Opus 5),后者反而落到静态池之下 2.9 分——增益来自「proposer 看着 solver 的失败造环境」这个闭环,不是来自「用 agent 造环境」本身。
Tev(arXiv:2610.18868)给出的是另一侧的工程做法:latent-world-first。先构造一份完整且正确的隐藏规格——任务领域、工作流、每一步之后的预期状态,再把这份规格渐进渲染成 agent 面对的环境,于是复杂度可控,进度指标也是天然自带的。Tev-Gym 有 7 个领域共 1,170 个可验证任务环境;配合 PPRS 把进度转成逐步密集奖励后,Tev-27B 在 ALE 计算与数学科学域的 Pass@5 追平 GPT-6 Astra 与 Claude Opus 5,只训 ALE 相关数据却泛化到 TB 3.0 与 4.0,超过 GLM 5.2 与 Gemini 3.7 Flash,并在 TB 2.1 这类中程任务上达到 Claude Opus 4.8 的水平。
「1,170 个」这个数字看着比同类语料小一个量级(SETA 4.5k、Endless Terminals 3.3k、CLI-Gym 1.7k),比的是长度不是数量:论文表 1 用 Gemini 3.6 Flash 实测单条 rollout 的墙钟时间,Tev-Gym 的中位/平均是 12.4 / 14.8 分钟,SETA 是 1.2 / 2.1,Endless Terminals 只有 0.5 / 0.7;同一个模型在 Tev-Gym 上的 Pass@k 是 29% / 40%,而在 SETA 上是 80% / 88%。7 个领域就是 ALE 计算与数学域的七个子域:软件工程、数据与分析工程、AI 工程与安全/CS 研究、数学与运筹学、网络安全与数字取证、基础设施工程与云运维、量子计算。论文也把现有 agentic 语料概括得很直白——它们「每个只是一次 PR 规模的修复或一段短 terminal 会话」。
同一套配方也在 320B 基座上跑过(Tev-320B,从 GLM-5.3-Flash 起训),说明 PPRS 的收益不只在小模型上成立。论文自己写的限制也要一起记:环境是合成 terminal 环境,在最难的基准上与前沿 agent 仍有差距,新增工作流还得另行编写并验证环境组件。
环境造出来还得能改。WorkRover(arXiv:2610.18067)的 harness-driven 合成让构建 agent 一次性产出三样东西——语义对齐的工作上下文、可执行任务、证据化的验证器,动作随工作区状态与执行反馈调整,而不是照一条固定的构建流程走。改的时候用 FCR:拿 rollout 反馈评估组件修订的组合,按依赖闭合的方式重放,在通过验证的候选里挑最小的那处修复,并保住原有任务需求与评测约束。训练信号这边是 VTCA,把确定性工作区进度检查的结果加进轨迹级 GRPO 优势,按记录下来的工具输出与产物依赖,把有界份额的正进度信用分给前置回合。
最终 WorkRover-35B-A3B 相对基座 Qwen3.5-35B-A3B:JobBench +26.27 个百分点、OfficeQA Pro +29.32 个百分点、GDPval v2 +413.25 Elo。这三个数读作「后训练模型的得分超出基座多少」,不是基座自身的涨幅。
照做:把「环境规格」与「环境渲染」拆成两个产物。规格层写清每一步之后的预期状态,渲染层只负责把它变成 agent 看得见的界面。验证器必须证据化——检查工作区里的具体产物,不靠模型打分。改环境时按依赖闭包重放,别只重跑被改的那一个文件。
二、进度信号:先训一个进度计,再拿它重分配优势
多轮 agent 的 RLVR 靠稀疏终局奖励,一条几十步的轨迹只有一个 0/1。DeltaTTG(arXiv:2610.17666)用「离完成还剩多少 token」(Token-to-Go)当剩余工作量的可观测代理,先用不同策略录下的轨迹训一个进度计,训练 actor 时把进度计冻结,用它估计值在相邻决策历史之间的变化去重新分配步间优势——奖励总量、每条轨迹的优势符号与 token 平均尺度都不动。
在 ALFWorld、PaperSearchQA、BFCLv3 上,它比 GRPO 平均分高 5.7(Qwen3-4B)与 7.2(Llama-3.1-8B)个百分点,actor 训练的 GPU 小时数与 GRPO 接近。仓库里另有一组分布外评测(BrowseComp-Plus、tau2-bench、Terminal-Bench 2.0),说明进度计不是只在训练域上有效。官方脚本把三阶段串成一条命令:
# 1) 训进度计:先 SFT,再 RL
bash scripts/train.sh --kind meter_sft --task alfworld \
--set MODEL_PATH=./models/Qwen3-4B-Instruct-2507 --dry-run
bash scripts/train.sh --kind meter_rl --task alfworld \
--set MODEL_PATH=./models/meter-sft --dry-run
# 2) 冻结进度计,训 actor
bash scripts/train.sh --kind actor --task alfworld --model qwen3_4b \
--set MODEL_PATH=./models/Qwen3-4B \
--set METER_MODEL=./models/meter --dry-run
环境这一层的现实约束:仓库要求 Linux + Python 3.11 + CUDA 12.8,锁 torch 2.8.0、vLLM 0.11.0、Transformers 4.57.3、TensorDict 0.10.0,flash-attn 2.8.3 要在 torch 之后单独装。它自带一份 verl 包,不能与另装的 verl 共存,必须新建环境。默认关闭 fused kernels;ALFWorld 的 actor 训练、进度计 RL 与进度计 SFT 每 20 步存一次检查点(--set SAVE_FREQ= 可改)。GRPO、DAPO、GiGPO、HGPO 共用同一个 launcher 且不需要进度计,基线对照几乎是零成本——这一点让「到底有没有增益」变得容易自查。
踩坑一:进度计不是免费的。ACTOR_GPUS 只统计 actor 训练与 rollout 的卡,进度计跑在独立的 vLLM Ray worker 上,默认后端 ray_vllm 要求除 ACTOR_GPUS=2 之外再给一张专用卡,也就是三张卡对同一个 Ray 作业可见:
CUDA_VISIBLE_DEVICES=0,1,2 bash scripts/train.sh --kind actor \
--task alfworld --model qwen3_4b --set METER_MODEL=./models/meter
踩坑二(最容易被忽略):DeltaTTG 只在一条轨迹共享同一个输入优势时才重分配信用。一旦开启非法动作惩罚(显式加 --action-penalty-mode on,每个非法动作从奖励里扣 0.1,系数可用 --set INVALID_ACTION_PENALTY_COEF= 改),逐步优势不再统一,这些轨迹会保留原始逐步值、跳过进度计打分,计数落在 credit/nonuniform_advantage_fallback_count。你以为在跑 DeltaTTG,实际相当一部分轨迹在走 GRPO 老路。上线前把这个计数器做成看板指标。
顺带说清默认值:两个任务、两个模型的默认都是 off,而 off 才是论文里终局奖励配方的做法。所以正常配置下这个回落根本不会触发;它只在你想用非法动作惩罚压格式噪声时才会变成一条安静的旁路。
踩坑三:换自研的价值计时,输出必须是 <answer>{"value":0.7}</answer> 或裸 0.7,是有限 JSON 数字;带散文、布尔、NaN、inf 全判非法(科学计数法可以)。解析失败有一次重试,再失败就整组回退到 GRPO——回退同样是静默的。还有三条容易被误判的规则:零值是合法分数,不算预测失败;进度按 S(next) − S(current) 算;终值取的是记录下来的 outcome_reward(含小数分),不是二值成功标志,也不含非法动作惩罚。符号感知分配、均匀混合、token 权重归一这几个环节不受影响。
三、失败恢复:环境要能存快照,才能从半路重新出发
ReTerm(arXiv:2610.18484)分两步。先造 ReTerm-10K:收集基座模型的失败轨迹以及它们留下的环境状态,让更强的 teacher 从这些状态出发做恢复,再滤掉不成功、格式错、不合规、低效的样本;SFT 时失败交互史只作上下文,监督信号施加在 teacher 的恢复回复上。接着是 ReTerm-GRPO:从训练中收集的失败状态分叉出多个独立的自我恢复尝试,用验证器结果算组内相对信号,普通尝试与恢复尝试优化同一个策略,优势各自在组内计算。失败状态存在一个有界队列里,新收集的优先采样,超容量就丢最旧的。
Qwen3.5-9B 之上做出来的 ReTerm-9B,Terminal-Bench 2.0 的 Pass@1 是 34.8%,比基座高 14.6 点;SWE-bench Verified 58.4%、OpenThoughts-TBLite 60.6%。仓库 README 给的完整一栏是七个基准:
| 基准 | Pass@1 |
|---|---|
| OpenThoughts-TBLite | 60.6% |
| Terminal-Bench 2.0 | 34.8% |
| SWE-bench Verified | 58.4% |
| AIME 2024 | 86.7% |
| AIME 2025 | 93.3% |
| Aider Polyglot | 20.4% |
| SpreadsheetBench Verified | 48.8% |
ReTerm-GRPO 的分组是可配的 a+b:a 是普通任务组数,b 是恢复组数,这个比例直接决定「学新任务」与「学恢复」之间的算力分配,是上线前唯一需要调的平衡旋钮。模型与数据集都已放出(ReTerm-9B、ReTerm-10K),冷启动阶段可以直接跳过造数据。
前置条件(写在仓库 Setup 里,最容易被低估):RL 训练额外需要一个支持「动作执行、状态保存与恢复、任务验证」的任务环境。这三个动词是硬门槛——环境不能只跑得起来,要能在任意一步存下快照,并能从快照分叉出多条后续。README 把这三项接到一个具体的接口文件上:rl/reterm_rl/task_adapter.py,你要做的适配就是实现它。SFT 与 RL 还要各建一套 Python 环境(sft/requirements.txt 与 rl/requirements.txt),配置走 profiles/sft.example.toml 与 profiles/rl.example.toml 两份示例(都是两张八卡机的配置)。
Agent-Reflex(arXiv:2610.17953)补的是噪声那一侧:真实 MCP 工具会超时、拒权限、返回畸形结果,用户会在中途打断纠正,而训练环境返回的一直是干净反馈。它往环境里注入真实失败族的工具反馈扰动,采样能力多样的模型池,挖出配对的成功-失败样本,总结成可复用的反思元技能——1,170 条元技能覆盖 557 个环境。接着用 ReSFT 把每条技能转成自我反思、技能恢复、用户纠正三类监督数据,再用 ORPO 在有噪声的 agent RL 上叠加同 token 的技能引导蒸馏。
一个值得抄的部署决策:技能只在训练时用,训完部署出去的 agent 不带任何技能提示——推理时既不加载技能库也不拼技能 prompt,训出来的行为已经内化进权重。Qwen3-8B 之上,五个长程工具基准 Overall 从 40.2 涨到 58.6(比基座 +18.4,比 EnvScaler-8B +7.7),噪声基准 AgentNoiseBench 从 12.3 涨到 29.1(Reflexion 13.7、EnvScaler-8B 18.2)。同表里的 Agent-World-8B Overall 是 53.6(噪声列未报),说明「靠扩大环境规模」这条路本身也能走。但两者不是叠罗汉关系:README 写明 Agent-Reflex 的 backbone 是 Qwen3-8B,+18.4 是相对 Qwen3-8B 的 40.2,不是相对 Agent-World-8B 的 53.6;Agent-World 提供的是环境合成与环境基础设施,不是初始权重。想跟环境规模这条路线比,用同表的 53.6 当对照,差值是 5.0 分。
数据规模也一并公开:ReSFT 用 54,663 条轨迹(2.6 GB),ORPO 用 2,550 条带技能的任务(152 MB),RSD 技能库 1,170 条 22 MB 且中英双语。ReSFT 是全参数微调,ZeRO-3、3 个 epoch、5,127 步,跑在 2×8 张 80 GB 卡上(需 CUDA 12.8 驱动);ORPO 从 ReSFT 检查点起训,1×8 卡。代价是三套环境:ReSFT 用 Python 3.12 + torch 2.6.0 + transformers 5.8 + DeepSpeed 0.19,ORPO 用 Python 3.10 + torch 2.7.1 + verl 0.5 + SGLang 0.4.10.post2 + Ray 2.57,serving 又是 vLLM 0.27.1,每个基准再各配一套 venv。
四、中止与交接:校准目标必须是整段任务的结局
长程任务里每一步都要决定一件事:信它下一步、弃权、还是交给人。最自然的候选是 agent 自己说出的置信度,但现有 RL 方法拿「当前这一步决策对不对」当校准目标——那不是部署时真正要问的问题。
《Can an Agent Learn to Predict Its Own Failure?》(arXiv:2610.18614)把校准目标换成整段 episode 的最终结局:GRPO 里同一任务的一组 rollout 提供成功标签,用一个 proper scoring rule 逐步给置信度打分。Qwen2.5-7B 在 ALFWorld、TextWorld、WebShop 的离线轨迹上训练后,逐步置信度对 episode 结果的 AUROC 从接近随机升到 0.68–0.85,最自信的那 10% 步成功率约为平均的 4.3 倍。在线 RL 下,预期校准误差从 0.42 降到 0.12 以下(未训练基线实测 0.419,95% 置信区间 [.398, .438];Qwen2.5-14B 上是 0.425),选择性执行优于未训练 agent 与只做格式 RL 的对照,且没有拖累任务成功率。
⚠️ 「AUROC 从接近随机升到 0.68–0.85」这句要配一个前提才成立,否则容易高估。论文自己做了 texture control:只用步深度与
log(1 + 内容 token 数)这两个跟置信度无关的特征做一次 OLS,在未训练的轨迹上就能拿到 0.769 / 0.849 / 0.858(ALFWorld / TextWorld / WebShop),与训练后的置信度在 ALFWorld、TextWorld 上持平甚至更高——池化口径下的 AUROC 有相当一部分来自「走得越靠后越接近成功」这个平凡规律。把深度与输出长度回归掉之后,训练后仍剩 0.626 / 0.677 / 0.811,未训练的置信度则掉到 0.534 / 0.479 / 0.509,也就是原文说的 near chance。深度无关的那部分信号才是训练真正带来的,定交接阈值时按 0.63–0.81 估,不要按 0.85 估。同类的免训练对照还有一组:直接拿负的平均 token 熵当置信度,AUROC 是 0.741 / 0.667 / 0.806,最自信 10% 步的成功倍率 4.22× / 2.97× / 3.34×——已经离训练后的 4.3× 不远。想省掉训练就先试这个基线。
论文还专门拆了一件事:训练后的 agent 从第一步就能认出哪些任务会失败,但同一个任务下区分「这次会成功」与「这次会失败」要难得多,早期窗口信号只在 TextWorld 上浮现。照做:把置信度分数按 episode 结局记,不按单步正确性记;交接阈值按「弃权率 × 人工接手成本」定,别按准确率定。
收口:按排查成本排顺序
四环不是平铺的清单,排查成本差着一个量级。
小时级先查两件事:环境能不能在任意一步存快照并从快照分叉(第三环的前置,也是第一环的要求),以及进度计的 nonuniform_advantage_fallback_count 是不是在涨(第二环)。天级把失败状态队列接上,让每次失败的中间状态进池子(第三环)。周级才轮到训进度计与做置信度校准(第二、四环)——这两样都要先有一批录好的轨迹才能动手。
顺序反过来做会卡住:先训进度计却没有能从快照恢复的环境,进度计只能在完整重跑的轨迹上打分,成本高得跑不动;先把置信度校好却没有失败状态队列,agent 说「我不行」之后你也拿不出第二条路给它走。
引用核验记录
本轮对 7 篇一手来源逐条回源(arXiv abs 页 citation_title/citation_date + 摘要原文,数值类另取 arXiv HTML 全文与官方仓库 README),60 余条声明中订正 2 处、补记 20 余处。关键几条:
| 声明 | 一手来源 | 结果 |
|---|---|---|
| 有效环境率最高 25 倍、单环境成本最高降 75% | 2610.14163 摘要 | ✅ 吻合 |
| TB 2.1 +4.3 点的对照是「同等 token 预算」 | 2610.14163 表 3 + 附录 G.3 | ❌ 订正:对照是静态 Tmax 环境池,匹配的是 solver 更新步数(288 步),原文明示不匹配算力与时间 |
| TB 2.1 41.1→53.3、TB 4.0 1.6→3.2(Qwen3.6-35B-A3B) | 2610.14163 §4.3 | ✅ 吻合,另补 TB 4.0 的 Tmax 基线为 1.4 |
| Tev-Gym 7 域 1,170 环境、PPRS、追平 GPT-6 Astra 与 Opus 5 | 2610.18868 摘要 + 表 1 | ✅ 吻合,另补七子域名与 12.4/14.8 分钟墙钟对照 |
| WorkRover 三项增幅 | 2610.18067 摘要 | ✅ 数值吻合,归属订正为「WorkRover-35B-A3B 相对基座」 |
| DeltaTTG +5.7 / +7.2 点、GPU 小时接近 GRPO | 2610.17666 摘要 | ✅ 吻合 |
| 进度计独占一张卡、三卡可见 | DeltaTTG README | ✅ 吻合(默认 ACTOR_GPUS=2 + METER_BACKEND=ray_vllm) |
非均匀优势回落计数 credit/nonuniform_advantage_fallback_count | DeltaTTG README | ✅ 吻合,另补默认 off 与系数可调 |
| 价值计输出格式与解析回退 | DeltaTTG README | ✅ 吻合,另补零值合法、S(next) − S(current)、终值取 outcome_reward |
| ReTerm-9B TB 2.0 34.8%(+14.6)、SWE-bench Verified 58.4%、TBLite 60.6% | ReTerm README | ✅ 吻合,另补 AIME/Aider/SpreadsheetBench 四项 |
| 失败状态存在有界队列、新收集优先、超容量丢最旧 | ReTerm README §ReTerm-GRPO | ✅ 吻合 |
| Agent-Reflex 1,170 元技能 / 557 环境、Overall 58.6、噪声 29.1 | Agent-Reflex README | ✅ 吻合,另补 +18.4 / +7.7 对照与 Agent-World-8B 53.6 |
| 技能只在训练时用、部署不带技能提示 | Agent-Reflex README §Stage 3 | ✅ 原文 “Skills are used only in training; the deployed agent is skill-free” |
| 三套环境版本(含 torch 2.6.0 / 2.7.1、vLLM 0.27.1)与 2×8 / 1×8 卡 | Agent-Reflex README 环境表 | ✅ 逐项吻合 |
| TB 2.1 的 34.6 → 38.9 配「95% 置信区间 ±2.3」 | 2610.14163 表 3 | ❌ 终审订正:±2.3 取自同表 w/o solver feedback 行(35.3),34.6 的区间是 ±1.9、38.9 是 ±2.4;表 3 只写 “\pm gives the confidence interval”,未声明 95% |
| Agent-Reflex 的 +18.4 是「在 Agent-World-8B 之上再叠反射」 | Agent-Reflex README 结果表 | ❌ 终审订正:backbone 是 Qwen3-8B(40.2),Agent-World 只提供环境基础设施;与 Agent-World-8B 的差是 5.0 分 |
| AUROC 从近随机升到 0.68–0.85 | 2610.18614 摘要 + §5 | ⚠️ 需加前提:池化口径含步深度混淆,剔除后为 0.626 / 0.677 / 0.811 |
| ECE 0.42 → <0.12 | 2610.18614 表 11 | ✅ 吻合(未训练 0.419 [.398,.438]) |
| 训练后 agent 首步即能认出会失败的任务 | 2610.18614 摘要 | ✅ 吻合,另补同任务内区分成败更难、早期窗口信号仅 TextWorld 浮现 |
本轮未核到的边界
- 开头「10 月 13 日 HF 日榜前一百篇里有六篇」这个计数依赖榜单快照,本轮未取到当日榜单页,不把它当作可复核的断言,只作为选题来源。
- Tev-9B 在 ALE-CM 上的具体 Pass@5 数值只在摘要里以相对增益形式出现(「improves Pass@5 by 83…」),本轮未在正文表中定位到绝对值,未写入。
- WorkRover 的 GDPval v2 Elo 口径(413.25 是 Elo 点而非百分点)沿用摘要原写法,未做二次换算。
参考来源
- Tev: Scaling Long-Horizon Agentic Environments with Dense Progress Rewards(arXiv,2026/10/13)
- WorkRover: Scaling Long-Horizon Cowork Agent Training Via Recursive Environment Evolution(arXiv,2026/10/13)
- DeltaTTG: Training Multi-Turn Agents with a Token-to-Go Progress Meter(arXiv,2026/10/13)· 代码
- ReTerm: Recovery Training for Self-Improving Terminal Agents(arXiv,2026/10/13)· 代码 · ReTerm-9B 模型 · ReTerm-10K 数据集
- Agent-Reflex: Teaching Language Agents to Act Reflectively(arXiv,2026/10/13)· 代码
- AutoEnvScaling: Automating the Data Flywheel with Terminal Agents(arXiv,2026/10/9)
- Can an Agent Learn to Predict Its Own Failure?(arXiv,2026/10/13)
- Tmax: A simple recipe for terminal agents(arXiv,AutoEnvScaling 的对照基线)
- Hugging Face Daily Papers(2026/10/14 榜单)