ActiveSaddler: Automated Curriculum Learning for Agent Harness Optimization
Sungho Park, Wonjoong Kim, Jue Zhang, Wook-Shin Han, Pengfei Gao, Chanyoung Park, Yongqiang Yao, Rao Fu, Elsie Nallipogu, Qingwei Lin, Victor Rühle
cs.AI, cs.CL, cs.LG, cs.MA, cs.SE
2026-10-01
把「用哪些训练场景」也交给优化器动态决定,同预算下 GAIA2 与 Terminal-Bench 2.0 各多涨 4.4 与 7.5 个点。
LLM agent 能否可靠完成多步任务,很大程度取决于包在模型外面的 harness:prompt、工具接口、运行时控制逻辑。自动 harness 优化(AHO)让当前 harness 在训练场景上执行,从轨迹里诊断缺陷、打补丁、评估候选,GEPA、Meta-Harness、AutoSaddler 都在这条线上。
这类方法只优化「怎么改 harness」,「用哪些场景产生反馈」在优化开始前就定死了:全量训练集或预先排好的 mini-batch。可 harness 在变,场景的价值也在变。没修好的失败值得再练一轮,修好的不值得再花钱;新失败模式还没被发现,旧失败可能已无剩余价值。固定顺序两头都顾不上:固定顺序下训练中暴露的很多失败,到优化结束仍没解决(Figure 3b)。rollout 预算有限时,这种浪费更疼。
ActiveSaddler 把「每轮选哪批训练场景」建成非平稳多臂老虎机。臂不是任务类别也不是单个场景,是失败模式:一次诊断出的、可能修得好的 harness 缺陷,横跨多个场景与轨迹。课程层套在优化器外面,优化器怎么更新 harness 完全不动,主实验用 AutoSaddler。
为什么用失败模式做臂?消融给了直接答案。类别臂太粗:GAIA2 一个案例里,仍失败的场景被并进宽泛的 time 类别臂,同类其他场景通过后,臂的 severity 从 0.62 跌到 0.12,该场景再没被抽到。场景臂太细:同一弱点散进最多 75 个臂(GAIA2),是失败模式臂上限 35 个的两倍多,有限预算下很难被重访。
两个基准,task agent 与优化器都用 gpt-5.5(推理档 medium 与 xhigh),共享 rollout 预算(GAIA2 1,400 次、TB2 490 次),测试取三次执行平均:
| 方法 | GAIA2 Pass@1 | TB2 Pass@1 |
| 手写 harness | 53.6 ± 1.1 | 64.2 ± 2.9(Terminus 2) |
| GEPA | 54.2 ± 2.2 | 65.8 ± 5.2 |
| Meta-Harness | 54.2 ± 1.2 | 66.7 ± 5.2 |
| AutoSaddler(固定随机顺序) | 55.4 ± 1.2 | 72.5 ± 0.0 |
| 难度排序固定课程 | 55.9 / 55.7 | 70.8 / 73.3 |
| ActiveSaddler | 59.8 ± 1.0 | 80.0 ± 2.5 |
同优化器、同预算,+4.4 与 +7.5 个点;对难度排序固定课程最多多 +9.2 个点(TB2);80.0 还比人工精调的 Terminus-KIRA(69.2)高 10.8 个点。
三个组件缺一不可:换类别臂 -3.0/-10.8,换场景臂 -3.6/-6.7,去掉 Arm Prioritizer -4.5/-7.5,去掉 Exploration Controller -4.5/-8.3(GAIA2/TB2,单位 pp)。非 LLM 替代也不行:EMA 失败持续性打分 56.7%、UCB-AIR 计数式探索 55.6%,比 59.8% 低 3.1 与 4.2 个点(GAIA2)。
机制证据有两条。失败模式臂把迭代更多打在仍失败的场景上,命中率比类别/场景臂高 16.5/35.3 个点(GAIA2)、29.9/23.8 个点(TB2);训练中见过的失败被最终 harness 修成成功的比例,GAIA2 上 75.0% 对 AutoSaddler 的 50.0%。DRAW 率从前半程 44% 降到后半程 20%,PULL 时未解决臂数是 DRAW 时的 2.0 倍(GAIA2)、6.9 倍(TB2),固定调度这一比值接近 1,对状态几乎不敏感。
换优化器仍然成立:套在 GEPA 上,GAIA2 从 54.2 涨到 57.2;第二次独立 run 得 61.6%,仍高于全部固定顺序基线。成本上,课程层把每个补丁的 optimizer 侧开销从 $7.87 抬到 $11.44(GAIA2),但端到端更省:GAIA2 到 58.5% dev 精度花 $298,AutoSaddler 要 $1,360;TB2 上 $128 到 78.9%,AutoSaddler 要 $220。
做 agent 优化的团队大多在卷「怎么改」:GEPA 的反思进化、AutoSaddler 的诊断补丁。这篇证明「练什么」单独就值几个点,而且即插即用,GEPA 上验证过。省下的是 rollout 预算,任务执行又贵又慢,把预算花在没修好的弱点上,比均匀过一遍训练集划算。同样的思路大概率能搬到其他从执行反馈迭代改进的循环,比如工具定义或 skill 库的优化。
也要说清:这是渐进改进,不替代任何优化器,只是让现有优化器每个 rollout 换来更多收益。
论文没有单独的局限章节,以下结合自述与实验空白: