面向长程终端智能体的框架自进化方法 RiseHarness Harness Self-Evolution for Long-Horizon Terminal Agents
固定模型权重,用成功-失败对比与外部设计检索迭代进化智能体框架,提升重复运行可靠性
前置知识
Agent Harness(智能体执行框架)
harness 是包裹模型的运行时层,负责组织模型与环境的交互:它解析模型输出的命令并分发执行、把终端观察构造成反馈(必要时截断)、管理上下文窗口、并决定任务何时可以判定完成。模型权重不变时,harness 的设计直接决定同一模型的表现差异,SWE-agent 已证明接口设计本身就能影响任务性能。Terminus-2 就是本文使用的种子 harness。
本文的全部改进都发生在 harness 层而非模型层,理解 harness 控制哪些环节是理解整个方法的前提。
翻转任务(Flipping Task)
指在同一模型、同一 harness 配置下,多次重复运行中既有成功又有失败的任务。形式化定义为 $F_t = \{i : 0 < \sum_{j=1}^{r_t} y_{i,j}(H_t) < r_t\}$,其中 $y_{i,j}(H_t) \in \{0,1\}$ 表示任务 $i$ 第 $j$ 次运行是否通过。这类任务是分析的最佳切入点:成功运行证明当前系统有能力解出该任务,失败不是能力缺失所致,且成功运行可作为失败分析的直接参照。
翻转任务是 RiseHarness 整个进化循环的输入单元,论文的方法设计、算法与实验指标(Flip 率)都围绕它展开。
重复运行可靠性指标:Pass@1 / Pass$_r$ / Pass@$r$ / Flip
对任务集 $S$ 每个任务跑 $r$ 次重复:Pass@1 是所有任务所有重复的平均通过率,衡量单次表现;Pass$_r$ 是 $r$ 次全部通过的任务比例,衡量重复成功可靠性;Pass@$r$ 是至少通过一次的任务比例,衡量任务覆盖;$\mathrm{Flip} = \mathrm{Pass@}r - \mathrm{Pass}_r$ 是既有成功又有失败的任务比例,衡量结果不一致性。注意 Flip 低不代表更可靠——翻转任务可能变成全失败任务,必须与 Pass$_r$ 联合解读。
论文的核心主张是把可靠性(Pass$_r$)与平均成功率区分开,所有主实验表和消融都用这四个指标报告。
双轨迹(Dual Traces):agent 轨迹与 harness 轨迹
agent 轨迹记录模型接收的信息、模型响应与工具交互,但无法暴露框架内部处理:模型请求的命令可能没被分发,终端输出可能未完整返回给模型。RiseHarness 用运行时监视器在选定 harness 函数边界记录调用关系、参数、返回值、异常与源码位置,生成 harness 轨迹;再通过 run 标识符和 episode 索引把两条轨迹按运行和步骤对齐,从而追踪一个模型请求经过的处理链路与最终反馈。
双轨迹是论文的关键消融对象:去掉 harness 轨迹后 DeepSeek 在 TBH 上 Pass@1 和 Pass4 分别损失 7% 和 8%,证明它是方法有效性的核心。
Harness Handbook(框架手册)
一份与当前源码保持对齐的行为文档,描述每个 harness 行为的职责、触发条件、实现函数与退出条件。因为单个行为可能横跨多个函数,仅凭函数级调用记录无法理解机制全貌;Handbook 把具体调用关联网到命令执行、观察处理、上下文管理、完成检查等行为语义及其代码位置,使执行证据可以被解释并定位到源码。每个被采纳的 harness 版本都附带更新后的 Handbook。
Handbook 是把'发生了什么'(轨迹)连接到'这是哪个行为、代码在哪'(实现)的桥梁,也是候选版本发布时必须同步维护的组件。
Terminal-Bench Hard(TBH)与 Terminal-Bench 2.1(TB2.1)
TBH 是包含 100 个高难度终端任务的基准,任务需要数百次交互的持续工作流,本文在其上做 harness 进化(既是行为分析素材也是版本选择依据)。TB2.1 包含 89 个任务,仅用于迁移评测:冻结进化后的 harness,在不参与任何修改决策的前提下测试改进是否泛化到未见任务。两者任务不重叠,构成进化集与留出集的标准划分。
理解'进化基准/迁移基准'的划分才能正确解读主结果表:TBH 上的提升证明方法有效,TB2.1 上的保持证明改进不是基准过拟合。
研究动机
长程终端任务需要数百次交互与持续推进,同一个模型在同一任务上往往'能做对一次,却不能稳定做对多次'。论文实测显示,在未修改的 Terminus-2 种子框架下,DeepSeek-V4-Flash 在 Terminal-Bench Hard 上有 34% 的任务处于翻转状态(r=4 次重复运行中既有成功也有失败),GPT-6-sol 也有 20%;这意味着平均通过率(DeepSeek 56.75、GPT 50.25)严重低估或高估了系统的真实可靠性。根本原因在于随机生成会引入局部错误:一条错误命令或一次遗漏的观察会改变环境状态并污染后续决策可用的上下文,误差沿动作序列传播放大,最终造成'任务解决能力'与'可靠执行'之间的鸿沟。现有工作要么通过强化学习与已验证任务合成改进模型本身,要么只做失败诊断与运行时干预(如 FIRE),缺少把成功与失败的差异系统归因到框架内部机制、并据此闭环改进框架的完整方法。
本文的目标是本文的目标是:在模型权重完全固定、任务协议与验收规则不变的前提下,通过迭代改进 agent harness——即控制命令执行、观察反馈、上下文管理与完成判定的运行时层——缩小任务解决能力与可靠执行之间的差距。具体而言,RiseHarness 以同一配置下既有成功又有失败的翻转任务为切入点:成功运行证明当前系统具备解出该任务的能力,可作为失败分析的对照参照。系统将成功/失败轨迹对比、内部 harness 执行轨迹与 Harness Handbook 三者关联,定位跨任务共享的行为缺陷;再检索其他框架对同类问题的实现作为设计参考,生成适配当前执行流与模型行为的候选修改;候选经独立行为检查与开发集重复评测,只有聚合通过率超过确认基线的版本才被采纳,并连同更新版 Handbook 与新执行证据一起作为下一轮迭代的基础,逐轮累积提升任务成功率与重复运行可靠性。
与已有工作不同的是,本文的独特切入角度有三点。其一,以'同配置成功-失败运行对'为基本分析单元而非只看失败:成功运行既证明系统有能力完成任务,又为归因提供直接参照,这与 HarnessEvolve 依赖 ground-truth 答案合成和验证成功参照的做法形成鲜明对比——本文只用真实产生的成功运行,适用面更广。其二,强调双轨迹证据链:仅凭 agent 轨迹无法区分'模型请求了但框架没执行'与'框架执行了但反馈不完整',RiseHarness 用运行时监视器记录函数调用、参数、返回值与异常,并借助 Harness Handbook 把调用映射到行为职责与源码位置,通过 Revise 操作判断所需信息是否可得、机制是否已执行过,避免把模型自身失误误归因为框架缺陷。其三,外部实现借鉴但绝不照搬:检索其他框架、源码与技术文档中处理同类问题的方式,研究其所需信号与接口,再结合当前 harness 的执行流、交互协议与轨迹中观察到的模型行为做适配性改造。
核心方法
RiseHarness 是一个固定模型权重的 harness 自进化框架。直觉是:同一模型同一配置下有的运行成功有的失败,成功与失败的差异就蕴含着可修复的框架行为缺陷;把跨任务的共性缺陷归并成组,参考其他框架的成熟实现逐一修复并用重复评测验证,就能不训练模型而系统性提升可靠性。技术路线为迭代循环(Algorithm 1):每轮从参考语料 $R_t$(每任务 $r_t \geq 2$ 次完整重复的结果与双轨迹)中筛选翻转任务集 $F_t = \{i : 0 < \sum_{j=1}^{r_t} y_{i,j}(H_t) < r_t\}$;对每个成功-失败运行对执行 Compare/Wish/Revise 得到发现集 $A$,再用 Group 聚合成共享行为组 $G_t$;对选定组做外部机制研究生成提案 $P_t$;Implement 构建候选 harness $C_t$ 及更新版 Handbook $K_{C_t}$;经 Screen 定向试用后,Evaluate 在开发集 $D$ 上做完整重复评测得到 $E_t$;当记录有效且聚合通过率 $b_p(E_t)$ 高于确认基线 $b_p^{B_{confirm}}(D)$ 时 Publish 采纳,新版本及其轨迹成为下一轮参考语料 $R_{t+1}$。
核心创新是把'执行证据驱动的行为归因'作为 harness 进化的地基,并用通过率门槛保证每一步进化都有度量支撑。与已有工作的本质区别体现在四个方向:(1)AHE、HarnessFix、Meta-Harness 虽用执行证据与评测反馈更新框架,但缺少系统的行为核查流程;(2)ModularRSI 也对比成功失败并跨任务聚合发现,但按模块进化、没有 harness 内部轨迹也没有外部研究环节;(3)HarnessEvolve 同样用成功参照做失败分析,但依赖 ground-truth 答案来生成与验证成功运行,RiseHarness 只需真实运行中自然出现的成功案例;(4)Self-Harness 通过失败分析保留固定模型编辑但依赖回归测试。本文的关键机制是 Compare→Wish→Revise 三操作链:先对比关键交互找执行差异,再用证据形式化'期望框架在何种可观察条件下做什么'的 wish,最后用 harness 轨迹核查所需信息在当时是否可得、现有机制是否已执行过该行为并据此修正 wish——这一核查步骤是区分'模型失误'与'框架机制缺失'的关键,也是区别于纯轨迹对比方法的地方。
方法步骤详情
方法分四阶段。(1)执行记录与行为定位:运行时监视器在选定 harness 函数边界记录调用关系、参数、返回值、异常与源码位置生成 harness 轨迹,通过 run 标识符与 episode 索引和 agent 轨迹对齐;Handbook 把调用映射到命令执行、观察处理、上下文管理、完成检查等行为职责与实现函数。(2)问题发现与分组:对每个翻转任务的成功-失败对依次执行 Compare(对比交互找执行差异、用 Handbook 解释框架角色)、Wish(形式化框架应在什么条件下做什么)、Revise(检查 harness 轨迹确认所需信息是否可得、机制是否已执行过并修正 wish),得到发现集 $A$;Group 将可由同一修改解决的发现归组,经独立评审后按覆盖任务数、失败运行数与发现数排序选出 $G_t$。(3)机制研究与适配:把共同 wish 翻译成检索问题,搜索其他框架对同类问题的处理方式(执行流、状态、反馈),研究外部设计所需信号与接口,结合当前执行流与模型行为设计改动,并检查从未失败任务的轨迹以收窄触发条件、避免破坏成功执行。(4)实现与验证:Implement 构建候选并确认可运行、可记录轨迹,行为检查未过则限时修复;Screen 在提案相关任务上筛选配置,Evaluate 在 $D$ 上收集完整重复运行,仅当记录有效且聚合通过率超过基线时 Publish 采纳,否则保留当前版本,本轮记录进入历史 $L$ 指导后续修复或 Revisit。
技术新颖性
技术新颖性有四层。第一,双轨迹加 Handbook 的证据链:harness 轨迹暴露 agent 轨迹看不到的内部处理(命令是否真的被分发、输出是否被完整返回),Handbook 把函数级记录连接到行为语义与代码位置;消融显示去掉这套证据后 DeepSeek 在 TBH 上 Pass@1 损失 7%、Pass4 损失 8%。第二,外部实现的系统性检索与适配:不是复制代码,而是研究外部设计所需信号与接口、结合本框架可用信息判断可行性,找不到先例时明确标注为本地设计;消融显示去掉外部研究后 TBH 上 Pass@1 损失 5.50%、Pass4 损失 6%。第三,以单个模型为适配单元:对 GPT-6-sol 与 DeepSeek-V4-Flash 分别独立进化,保留的修改截然不同(GPT 侧重会话恢复、工作区 diff、完成上下文;DeepSeek 侧重可执行证据、必要调用、观察结果、独立阅读四项完成证据检查),互换 harness 双双下降,证明 harness 改进本质上是模型相关的。第四,防过拟合设计:候选需在从未失败任务的轨迹上检查潜在破坏,最终在未参与进化的 TB2.1 上验证迁移。与已有工作的区别:AHE/HarnessFix/Meta-Harness 缺行为核查流程;ModularRSI 无 harness 内部轨迹与外部研究;HarnessEvolve 依赖 ground-truth 答案合成成功参照而本文只用真实成功运行;Self-Harness 依赖回归测试。
实验结果
实验在 GPT-6-sol 与 DeepSeek-V4-Flash 上进行,从 Terminus-2 种子出发在 TBH(100 任务)上进化,r=4 次重复,并在 TB2.1(89 任务)上测迁移。RQ1:DeepSeek 上 TBH Pass@1 从 56.75 提至 64.00(+7.25),Pass4 从 37.00 提至 51.00(+14),Flip 从 34% 降至 22%(-12),而 Pass@4 仅 +2(71→73),说明主要收益来自重复运行可靠性而非覆盖扩张;TB2.1 上 Pass@1 +7.3(72.19→79.49)、Pass4 +8.99。GPT-6-sol 上 TBH Pass@1 +5.25(50.25→55.50)、Pass4 +7、Flip 20%→14%;TB2.1 Pass@1 +3.09。两个模型上均优于 ModularRSI 与 AHE Harness。RQ2(消融):去掉 harness 证据(双轨迹+Handbook)后 DeepSeek TBH Pass@1/Pass4 分别损失 7%/8%;去掉外部研究后损失 5.50%/6%,在 TB2.1 上同样成立。RQ3(模型适配):两模型保留的机制不同,互换 harness 后双方性能都下降,如 GPT 用自己的框架 TBH Pass@1 为 55.50、换用 DeepSeek 框架降至 52.75。RQ4(迁移):冻结 harness 后 TB2.1 增益保留,且出现版本排序差异——DeepSeek 三机制版本(+OO)在 TB2.1 最佳(79.49),四机制最终版在 TBH 最佳(64.00),说明改进泛化但最优配置有基准相关性。
查看结构化数据
| 任务 | 指标 | 本文 | 基线 | 提升 |
|---|---|---|---|---|
| TBH(100 终端任务)· DeepSeek-V4-Flash | Pass@1(平均通过率) | 64.00 | Terminus-2 种子 56.75(ModularRSI 58.00,AHE 59.75) | +7.25 |
| TBH · DeepSeek-V4-Flash | Pass4(4 次全通过任务比例) | 51.00 | Terminus-2 37.00(ModularRSI 43.00,AHE 46.00) | +14 |
| TB2.1(89 任务迁移)· DeepSeek-V4-Flash | Pass@1 | 79.49 | Terminus-2 72.19 | +7.30 |
| TBH · GPT-6-sol | Pass@1 | 55.50 | Terminus-2 50.25(ModularRSI 50.75,AHE 54.75) | +5.25 |
| TB2.1 迁移 · GPT-6-sol | Pass@1 | 81.74 | Terminus-2 78.65 | +3.09 |
| TBH · DeepSeek-V4-Flash | Flip(翻转任务比例,越低越好) | 22.00 | Terminus-2 34.00 | -12 |
局限与改进
作者承认的局限:实验仅覆盖两个模型(GPT-6-sol、DeepSeek-V4-Flash)与一个种子框架(Terminus-2);GPT-6-sol 在 TB2.1 上的 Flip 反而从 17.98 升至 19.10(+1.12),可靠性收益并非在所有基准一致;进化评测成本高昂,降低成本被列为未来工作。我的观察有四点:其一,版本采纳只以聚合通过率 $b_p$ 为门槛,可靠性(Pass4)只是附带报告,类别级变化无法定位哪些原本稳定的任务回归了,需逐任务对比才能发现;其二,迁移存在版本选择问题——DeepSeek 需在 TB2.1 改用三机制版本才最优,有'基准特定调优'风险,严格评估应固定单一版本;其三,翻转任务集定义 $0 < \sum_j y_{i,j} < r_t$ 把全失败任务排除在分析单元之外,种子框架若在某任务 0/4 全败,该系统性缺陷永远不会进入成功-失败配对循环;其四,r=4 的小重复数下 +2% 量级的 Pass@1 提升统计功效有限,难以与噪声区分。
独立分析的弱点
弱点一:评测成本与统计功效的矛盾。r=4 次重复对 100 任务而言区分 +2% 左右差异所需样本量偏大,Figure 2/3 显示中间版本(+SE、+DI)性能明显波动甚至一度低于基线,版本采纳基于单点聚合通过率可能与噪声混淆。改进方向:引入序列检验或置信区间驱动的自适应重复次数,把每任务通过次数 $k_i$ 作为二项变量建模。弱点二:全失败任务盲区。$F_t$ 只含翻转任务,种子 harness 在某任务 0/4 全败时该任务永远进不了配对分析,框架级系统性缺陷可能被长期遗漏。改进方向:对全失败任务引入近邻成功任务参照,或借鉴 HarnessEvolve 用可验证答案合成成功参照扩展分析单元。弱点三:外部检索质量不可控。找不到合适先例时只保留检索记录并提出本地设计,但未量化检索命中率与失败时的退化行为,低质量借鉴可能引入与当前执行流不兼容的机制。改进方向:为外部设计建立适用性先验(所需信号在本框架的可得性评分),失败时降级为保守本地方案。弱点四:Handbook 的一致性维护依赖 Publish 时同步更新,缺少强制校验,多轮迭代后行为描述与源码可能失配并污染后续 Revise 判断。改进方向:把 Handbook 条目与代码位置静态绑定,发布前自动验证映射成立。
未来方向
作者明确提出的方向:扩展到更多模型、任务分布与 agent 框架;降低 harness 进化的评测成本。基于成果可延伸的方向有五。其一,把'翻转任务+双轨迹+外部检索'循环迁移到终端之外的长程场景,如 Web agent、GUI agent 与多智能体系统,它们同样存在单次成功与重复可靠的鸿沟。其二,研究 harness 适配与模型训练的联合问题——本文已证明 harness 改进是模型相关的,RL 训练与 harness 进化的收益是否可叠加、交替进行时如何避免抵消值得探索。其三,建立跨模型共享的 harness 改动库:把模型独有机制抽象为带适用性条件的通用模式,新模型接入时先检索候选再做小规模验证,降低从零进化成本。其四,反向利用归因结果诊断模型缺陷:当 Revise 判定'信息可得且框架已执行该行为'而任务仍失败时,失败可归因于模型能力本身,这类案例可为训练数据定向构造提供信号,与训练式方法形成互补闭环。其五,发展替代重复评测的廉价验证手段,如离线轨迹重放与反事实评估,缓解确认基线的算力开销。
复现评估
复现评估:论文未给出开源仓库链接,代码与 Handbook 数据是否开放未知,这是复现的最大不确定性。即使有代码,方法依赖的组件也相当重:(1)推理预算巨大——仅初始语料 $R_0$ 就需要 TBH 100 任务乘以多次重复的长程运行(每次数百交互),加上每轮候选的 Screen 与完整 Evaluate,对 GPT-6-sol 这类闭源模型意味着可观 API 配额;(2)需要对 harness(论文用 Terminus-2)做运行时插桩,在函数边界记录调用、参数、返回值、异常与源码位置,并实现 run/episode 级轨迹对齐,这是独立工程量;(3)需要预先构建与源码对齐的 Harness Handbook(方法出自文献 [13]),行为描述质量直接影响 Revise 归因可靠性;(4)外部研究环节需要能检索 OpenHands、SWE-agent 等框架的源码与文档。数据方面较友好:TBH(100 任务)与 TB2.1(89 任务)均为公开基准,评测协议(r=4、四指标定义、评分与完整性规则)描述清晰。综合判断:有充足 API 预算与工程团队的机构复现难度中等偏高;小团队建议先复现消融部分(去掉双轨迹或外部研究的变体),验证核心假设在自己的模型与框架上是否成立。
论文图表
展示 DeepSeek-V4-Flash 在 TBH 上的两组消融柱状图(Pass@1 与 Pass4):完整 RiseHarness 达到 64.00/51.00;去掉 harness 证据(w/o HE,仅用 agent 轨迹与源码,保留外部研究)降为 57/43;去掉外部研究(w/o ER,保留双轨迹与 Handbook 但不做外部检索)降为 58.5/45。即完整方法相对两个消融分别有 7%/8% 与 5.5%/6% 的 Pass@1/Pass4 优势。
这是方法两个核心组件价值的最直接证据:双轨迹+Handbook 的贡献大于外部研究,但两者缺一不可,是理解'为什么不能只用 agent 轨迹或只做本地分析'的关键。
展示冻结的进化后 harness 在未参与进化的 TB2.1 上与 Terminus-2 的对比(r=4):GPT-6-sol 的 Pass@1 从 78.65 升至 81.74,Pass4 从 68.54 升至 69.66;DeepSeek-V4-Flash(用其三机制 +OO 版本)Pass@1 从 72.19 升至 79.49,Pass4 从 58.43 升至 67.42。两个模型在迁移基准上都保留了平均成功率与全成功任务比例的增益。
它是 RQ4 迁移实验的主图,回答'改进是否只是对进化任务过拟合'这一关键质疑,是论文泛化性主张的核心证据。
方法的伪代码:输入固定模型 $M_\theta$、初始三元组 $(H_0, K_0, R_0)$(种子 harness、Handbook、参考语料)、开发任务集 $D$、轮数上限 $T$ 与策略 $\Pi$。每轮:若处于 discover 阶段则用 Flip($R_t$) 取翻转任务集,对每个成功-失败对执行 Compare/Wish/Revise 得发现集 $A$,Group/Propose 生成分组与提案 $P_t$;否则 Revisit 返回既有提案。随后 Implement 构建候选 $C_t$ 与更新 Handbook $K_{C_t}$,依次过 Screen(定向试用并记录双轨迹)与 Evaluate(开发集完整重复评测);当记录完整有效且聚合通过率 $b_p(E_t)$ 高于确认基线 $b_p^{B_{confirm}}(D)$ 时 Publish 采纳为新版本与新参考语料,否则保持现状;历史 $L$ 更新后进入下一轮。
伪代码精确定义了各组件的接口与调用顺序,尤其是'采纳门槛'与 discover/revisit 两种轮次模式,是任何想复现或实现该框架的读者不可缺少的规范。