Browse this library

Chinese source article

1.2.1 · 任务构造与基准生命周期

讨论任务污染、基准生命周期、可执行验证器与长程构念效度。

View original Markdown ↗

长任务最诱人的评测方式,是给 Agent 一个任务,等它跑完,再由另一个模型阅读轨迹打分。这样很容易得到一个整齐的总分,也很容易把真正的问题藏起来:环境可能已经被改坏,评审模型却被流畅解释说服;模型可能在第十步完成任务,随后又用九十步把结果破坏;某次成功依赖测试泄漏或人工接管,却与自主完成放在同一列。 Long-Horizon 评测需要把「结果是否正确」「过程是否守约」「状态是否可信」「失败后能否恢复」分开。最终答案仍然重要,但它必须由环境中的可执行证据支撑,并且与任务版本、工具权限和资源预算绑定。

1. 结果证据与恢复基础

Long-Horizon 评测需要固定被测系统和验收对象。模型、Harness、环境、任务与预算任何一项变化,都可能改变结果含义。

终态成功仍是主指标,但必须与中间有效进度共同报告。运行记录可以同时生成可执行验收结果与进度曲线。

评测对象先固定,一次完整运行可以记为

τ=(S0,a0,o1,S1,…,aT−1,oT,ST),(1)\tau=(S_0,a_0,o_1,S_1,\ldots,a_{T-1},o_T,S_T), \tag{1}

S0S_0 是初始任务和环境,ata_t 是 Agent 动作,ot+1o_{t+1} 是工具或环境观测,STS_T 是结束状态。报告结果前需要固定五个对象:

  1. 模型:具体 checkpoint、推理参数、上下文长度和是否允许隐藏思考。
  2. Harness:系统提示、记忆、压缩、计划器、工具 schema、重试和终止规则。
  3. 环境:容器或虚拟机版本、初始文件、依赖、网络状态和随机种子。
  4. 任务:目标、不可违反约束、可接受的多种解和验收脚本。
  5. 预算:token、工具次数、墙钟时间、计算费用、并发数和人工介入。

只写模型名不够。相同模型在能保存 checkpoint、能运行测试的 Harness 中,与只能在聊天窗口输出补丁的系统不是同一个被测对象。相同任务若环境镜像不同,也可能因依赖版本变成另一道题。

最终成功必须可执行,设任务有 mm 个验收条件 q1,…,qmq_1,\ldots,q_m,每个条件由环境检查器返回 vj∈{0,1}v_j\in{0,1}。严格成功率可写为

Sall=∏j=1mvj.(2)S_{all}=\prod_{j=1}^{m}v_j. \tag{2}

只要有一个硬条件失败,整体就不算完成。为了观察接近程度,还可以报告加权部分成功:

Spartial=∑jwjvj∑jwj.(3)S_{partial}=\frac{\sum_j w_jv_j}{\sum_j w_j}. \tag{3}

两者需要同时存在。只报严格成功看不出系统卡在哪里;只报部分分数又可能让 9 个容易检查掩盖 1 个关键安全约束。硬约束应单独列出,不能用其他得分抵消。 验收器也会错。代码任务的单元测试可能覆盖不足,网页任务的 DOM 检查可能忽略视觉遮挡,研究任务的引用存在不代表结论被来源支持。可靠 benchmark 会把检查器分层:语法与文件检查、功能测试、隐蔽测试、状态不变量和少量人工复核。评测结论的上限受验证器质量限制。

1.1. 轨迹中的有效进度

把任务拆成依赖节点 VV,节点 ii 有权重 wiw_i,只有在其验收条件通过后才算完成。第 tt 步的已验证进度为

Pt=∑i∈Vwi1[i 在 t 前已通过]∑i∈Vwi.(4)P_t=\frac{\sum_{i\in V}w_i\mathbf 1[i\text{ 在 }t\text{ 前已通过}]} {\sum_{i\in V}w_i}. \tag{4}

PtP_t 应允许下降:后续动作破坏了已有结果,相应节点要从完成集合移除。只让进度单调上升,会把失效的旧测试永久记成成功。事实状态必须与环境版本关联,任何写入都可能让相关检查过期。 由进度曲线可以得到几项有用指标:首次达到 50% 或 90% 的步骤数;任务结束时的有效进度;重复完成同一节点的次数;进度倒退面积;已经偏离目标后继续消耗的动作。它们能区分“稳定推进但末步失败”和“长时间无效探索后偶然成功”。

例如两个 Agent 都在 20 步完成。A 的进度为 0,0.2,0.4,0.6,0.8,1.00,0.2,0.4,0.6,0.8,1.0 后保持;B 在 0.60.6 与 0.20.2 之间多次往返,第 20 步才到 1.0。最终成功相同,B 的状态稳定性和资源效率明显更差。若真实任务预算稍微收紧,二者成功率会分化。

难度控制与恢复,一组笼统的长任务无法说明系统从哪里开始失稳。评测需要把 horizon 做成可控自变量,并主动改变依赖、验证延迟和环境状态。

恢复实验还要覆盖目标变化。系统是否及时接纳新要求,与它能否从文件或工具故障中恢复,是两类相关但不同的能力。

让 horizon 成为自变量. 评测 Long-Horizon 不能只给一组“很长”的任务,应构造可控难度曲线。结构侧改变依赖深度 LDL_D、同时存活的约束数量与环境状态规模;反馈侧改变验证延迟 Δ\Delta、工具故障与观测噪声;控制侧改变不可逆动作比例、目标变更次数与可用预算。 在其他条件近似固定时,画成功率 S(h)S(h) 随 horizon 难度 hh 的曲线,比混合平均分更有解释力。可以定义某个阈值能力,例如成功率首次低于 50% 时的 h50h_{50},但必须说明 hh 的构造。单纯用轨迹 token 数当 hh,会奖励冗长系统。

任务还要包含“短而深”和“长而浅”两组。若模型只在长而浅任务表现好,说明它能维持较长对话或批量调用,却没有解决深依赖。再加入相同任务的不同表述和环境布局,避免模型记住固定模板。

状态扰动与恢复实验. 真实长任务不会一直沿理想路径运行。评测应主动注入可控扰动:工具超时、文件被并发修改、网页元素变化、依赖安装失败、用户新增约束、先前事实失效。每个扰动记录注入点 tit_i、首次检测点 did_i 和恢复点 rir_i。 检测延迟为

Di=di−ti,(5)D_i=d_i-t_i, \tag{5}

恢复成本可按额外动作、token 或墙钟时间计算:

Cirec=C(ti:ri)−Coracle(ti:ri).(6)C_i^{rec}=C(t_i:r_i)-C_{oracle}(t_i:r_i). \tag{6}

CoracleC_{oracle} 是知道扰动位置的参考恢复成本。系统从未发现扰动时,DiD_i 记为截断值并单独统计漏检率,不能用平均检测延迟把它忽略。 一个完整恢复还要检查三件事:错误影响是否清除;扰动前的有效成果是否保留;事实表和计划是否与恢复后的环境一致。把文件回滚了却仍在记忆中保留“新版本测试通过”,属于环境恢复而认知状态未恢复,后面仍会再次出错。

目标变化不是额外一句提示. 在第 tt 步插入新用户要求时,评测器先标注它与旧目标的关系:补充、收窄、替换、优先级调整或冲突。系统要更新目标版本,并使后续计划引用新版本。可以记录:

  • 接纳延迟:收到新要求到首次产生符合要求动作的步数;
  • 旧目标残留:新目标生效后仍为已取消要求执行的动作;
  • 冲突检测率:新旧约束矛盾时是否停止并暴露冲突;
  • 产物迁移成本:已有成果中能复用多少,必须撤销多少。

如果新消息只是被追加到长上下文,模型可能同时记住两个版本,却没有明确哪个有效。测试应故意把旧要求放在更显眼或更靠近系统提示的位置,检查目标状态是否真的版本化。

1.2. 约束、指标与实验协议

完成任务不能抵消过程中的硬约束违反。评测必须在动作发生时记录权限、副作用和人工介入,而不是只看最终文件树。

资源预算与数据污染同样会扭曲比较。成功率需要与成本曲线一起报告,公开任务还要控制答案泄漏风险。

约束、安全与副作用,约束遵守率不能只在最终产物检查。假设规则禁止写某目录,Agent 曾经写入后又删掉,最终文件树看似合规,过程仍发生了越权副作用。评测 Harness 应在动作执行点记录被拒绝、成功和补偿的操作。 将约束分为硬约束 ChC_h 与软偏好 CsC_s。硬约束任何一次违反都记失败;软偏好可以按次数和严重度计成本。对可逆写入,还要区分“先做后撤销”和“从未做”,因为外部系统可能已经触发通知、构建或计费。

人工介入也必须进入结果。可以把运行分成完全自主、仅批准高风险动作、提供事实纠正和直接接管四档。不同档位分别报告成功率,不能把人工修正后的轨迹当作模型自主能力。

成本与能力一起画,长任务很容易通过增加采样、子 Agent、重试和上下文获得更高成功率。因此每个分数都要绑定预算。总成本可以拆成

C=Ctoken+Ctool+Ccompute+Chuman+Csideeffect.(7)C=C_{token}+C_{tool}+C_{compute}+C_{human}+C_{sideeffect}. \tag{7}

其中副作用成本包括需要撤销的写入、重复外部请求和资源占用。不同单位不必强行折成一个货币数,可以分别报告并画 Pareto 前沿。 比较两个系统时,至少给等 token、等墙钟、等工具调用和各自默认配置四组结果。一个系统用十倍 rollout 获得更高成功率,可以是合理工程选择,却不能表述成无条件能力提升。终止策略也属于系统:过早停止降低成功率,无限重试则让成本失控。

2. 防止 benchmark 被“做熟”

长任务环境往往包含开源仓库、公开 issue 和固定测试。训练数据可能已经出现题目与答案,Agent 还可能在网络上搜到现成补丁。协议应记录网络权限,设置不可公开的环境变体,并通过参数化任务改变文件名、数据值和依赖关系。 验证集与开发集要按任务模板或仓库划分,而不是只随机划分实例。否则模型或 Harness 可以针对同一模板调出专用策略。环境生成任务还要检查生成器是否把答案泄漏进日志、文件名或错误信息。

可复现运行至少保存初始镜像哈希、任务版本、工具定义、模型与 Harness 配置、随机种子、完整动作日志和验收器版本。网页与在线 API 难以冻结时,应保存关键响应或提供可重放代理。没有这些信息,失败无法定位,成功也无法确认来自哪一个环境。

指标体系与现有基准,拆开终态、过程、恢复和资源以后,需要一张统一结果表承载它们。现有基准则提供了不同的长度与验证口径。

人类完成时间、软件终态和密集子任务评分各自回答不同问题。把它们放进同一坐标系,才能避免用一个数字替代全部长程能力。

一张可执行的结果表. 最终报告可以按下列结构组织:

维度 指标 证据来源
最终结果 严格成功、部分进度 环境验收器、隐蔽测试
约束 硬违规次数、软约束成本 动作网关与审计日志
状态 过期事实、目标版本错误 状态快照与环境版本
过程 无效动作、重复工作、进度倒退 依赖节点与轨迹
恢复 检测延迟、恢复成本、漏检率 注入扰动的已知位置
资源 token、工具、时间、计算、人工 系统计量
长度曲线 不同依赖深度下的成功率 分层任务集

这张表依然不能穷尽智能体能力,但它把最常见的混淆拆开了。一个系统可以最终成功率高、约束违规也高;可以短任务很强、horizon 增长后迅速崩溃;可以检测错误快、恢复成本却很大。只有把这些曲线放在一起,才能知道下一步该改模型、记忆、Harness、验证器还是任务环境。 Long-Horizon benchmark 要让“长任务为什么失败”变得可测。排行榜只呈现结果,目标保持、状态一致、错误传播和恢复能力共同解释系统如何到达终点。

三类现有口径怎样放到同一坐标系. 现有基准常用三种「长度」口径,它们各有价值,却不能互相替代。第一类是人类完成时间。METR 的 Task-Completion Time Horizon先估计专业人员完成任务所需时间,再拟合任务时长与 Agent 成功概率的逻辑曲线。若任务 ii 的人类时长为 xix_i,Agent 成败为 yi∈{0,1}y_i\in{0,1},可以拟合

Pr⁡(yi=1∣xi)=σ(a+blog⁡xi),(8)\Pr(y_i=1\mid x_i)=\sigma(a+b\log x_i), \tag{8}

其中 σ(z)=1/(1+e−z)\sigma(z)=1/(1+e^{-z})。50% time horizon 是令右侧等于 0.50.5 时的 xx。因为 σ(0)=0.5\sigma(0)=0.5,所以

a+blog⁡x50=0,x50=exp⁡(−a/b).(9)a+b\log x_{50}=0, \qquad x_{50}=\exp(-a/b). \tag{9}

这个数不是 Agent 实际连续运行了多久。METR 自己也明确说明,它描述的是任务在人类尺度上的长度,以及系统以给定可靠率完成这类任务的能力。它直观、适合观察能力随模型代际变化,但依赖任务分布和人类时长估计;同样是两小时任务,状态规模、不可逆性和验证延迟可能差很多。 第二类是终态可执行的软件任务。SWE-bench Verified由 500 个经人工核验的实例组成,核心优势是可以在仓库与测试环境里判断补丁是否解决问题。它能可靠测最终软件修复,却没有因名称中出现 Verified 就自动成为长程基准:某些实例可能用很短补丁解决,某些需要较长探索。要研究 horizon,还需在同一任务上记录依赖深度、交互步数、进度和恢复。

第三类直接构造长终端任务。Long-Horizon-Terminal-Bench包含 46 个任务,并把任务拆为可评分子任务,因而能给出密集的中间进度;论文报告的运行规模达到每任务平均约 231 个 episode、9.9M token 和 85.3 分钟。这里的数字只属于该论文的实验设置,不能外推为所有长任务的门槛。它的重要变化是把「最终有没有过」扩为「推进到了哪里」,从而减少稀疏终局奖励遮住过程差异的问题。

把三类口径放在一起,可以得到较完整的描述:人类时长提供直观难度轴,可执行环境提供可信终态,细粒度 verifier 提供过程进度。缺任何一项都仍可做有效评测,但结论范围要相应收窄。报告「8 小时 horizon」不能直接推出系统能自主工作 8 小时;报告「通过 60% issue」也不能直接推出它能维护 60 步状态;报告「调用 200 次工具」更不能推出这 200 步存在深依赖。

从事件日志重建指标. 长程指标不应主要依赖运行结束后的回忆,而应从事件日志计算。最小事件结构可以写成

et=(t,actor,action,pre,post,evidence,goalVersion).(10)e_t=(t,\text{actor},\text{action},\text{pre},\text{post},\text{evidence},\text{goalVersion}). \tag{10}

pre 与 post 是动作前后的环境标识,evidence 保存退出码、测试结果或人工批准,goalVersion 表示动作依据哪版目标。若工具产生外部副作用,还要记录幂等键或可追踪 ID。由这些事件可以重建环境变化,也可以发现模型文本与实际执行不一致。 假设一项任务有 5 个等权子目标,Agent 在第 2、4、7 步分别通过前三项,第 9 步的修改破坏了第二项,第 12、15 步通过余下两项并修复第二项。进度曲线关键点为

P2=0.2,P4=0.4,P7=0.6,P9=0.4,P12=0.6,P15=1.(11)P_2=0.2,\quad P_4=0.4,\quad P_7=0.6,\quad P_9=0.4,\quad P_{12}=0.6,\quad P_{15}=1. \tag{11}

若只保存每项「曾经通过」,第 9 步后仍会错误显示 0.60.6。正确做法是让 verifier 结果绑定环境版本,并在相关文件变化后将旧结果标为过期。由式 (11) 还能算进度倒退幅度 0.20.2、首次满分步数 15,以及至少一次返工。 无效动作也要给出可复算规则。一种保守定义是:动作既未改变环境、未产生新证据、未缩小待选集合,也未满足必要的信息收集条件,则记为无效。重复读取同一文件未必无效,因为并发修改后重新读取是在验证状态;相反,连续执行同一失败命令而输入与环境均未变化,通常是无效重试。规则必须结合前后状态,不能只按命令字符串去重。

实验设计与统计报告,扰动实验只有在基线与干预条件可比时才有解释力。配对设计控制任务差异,重复运行与区间估计控制采样噪声。

这些要求还需要写成可以执行的流程。恢复放大率、pass@k 边界和六阶段协议分别约束恢复成本、采样口径与实验顺序。

扰动实验的配对设计. 恢复能力最好用配对实验测量。同一任务、模型、Harness 和随机种子分别运行无扰动基线与扰动版本,只在预定步骤注入变化。若基线成本为 C0C_0,扰动运行成本为 C1C_1,且 oracle 已知扰动后最小必要成本为 Cmin⁡C_{\min},可以报告恢复放大率

Arec=C1−C0Cmin⁡.(12)A_{\mathrm{rec}}=\frac{C_1-C_0}{C_{\min}}. \tag{12}

Arec=1A_{\mathrm{rec}}=1 表示额外成本接近已知最小值,大于 1 表示检测、回滚或重放产生额外浪费。若任务最终未恢复,不应用一个很大的任意常数混入均值,而应同时报告恢复成功率,并对成功样本的成本单独统计。 扰动至少覆盖四类。状态扰动修改文件、数据库或网页;观测扰动制造截断输出、延迟和临时错误;目标扰动追加、替换或冲突用户要求;执行扰动让动作部分成功。执行扰动尤其重要:命令可能修改了前三个文件后失败,HTTP 请求也可能服务端已执行却在客户端超时。若 Harness 把「返回错误」等同于「什么都没发生」,重试会扩大副作用。

为避免扰动强度失控,每项应说明注入位置和影响范围。例如「第 20 步后把一个尚未读取的注释改掉」几乎不构成测试;「在依赖该配置的三个动作完成后修改配置值」才会检验过期事实检测。扰动也不能总发生在固定步数,否则 Harness 可能学会定时检查,而非依据事件触发验证。

统计报告不能只给一次运行. Agent 运行含有采样、工具波动和环境噪声,同一任务一次成功不足以稳定估计能力。对每个难度桶运行 nn 次,成功数为 kk,点估计为

p^=kn.(13)\hat p=\frac{k}{n}. \tag{13}

当 nn 很小时,只报 p^\hat p 会制造虚假的精确感。报告应给二项比例区间,或用 bootstrap 对任务和运行两层重采样。若 10 次里成功 6 次,写成「60%」不能表达不确定性与 100 次里成功 60 次相同。不同系统还应使用相同任务与种子做配对比较,以减少任务难度差异带来的方差。 pass@k 需要谨慎。它回答「给系统 kk 次独立机会,至少一次成功的概率」,不等于一次自主运行的可靠性。若单次成功率为 pp,理想独立假设下

pass@⁡k=1−(1−p)k.(14)\operatorname{pass@}k=1-(1-p)^k. \tag{14}

取 p=0.3,k=4p=0.3,k=4,结果约为 0.7600.760。四次采样把成功机会提高很多,也把 token、计算和外部副作用最多放大四倍;多次运行还可能相关,使理想公式高估收益。因此 pass@1、pass@k 与总预算应并列,不能只挑最好看的列。 比较不同 horizon 桶时,还要防止幸存者偏差。长任务若只由短任务中成功的实例扩展而来,样本会系统性偏向某些领域;若只分析最终成功轨迹,最值得研究的失败传播又被丢掉。任务采样规则、排除原因和中止轨迹都应保留。

一份可以直接执行的协议. 实际落地可以按六个阶段进行。第一,冻结任务定义、环境镜像、目标版本和硬约束。第二,根据依赖图标注子目标、关键前提与 verifier,并对每个检查声明何时会失效。第三,在无扰动条件下运行基线,保存全部动作、观测和环境版本。第四,按预注册方案注入状态、观测与目标扰动。第五,从事件日志计算严格成功、有效进度、违规、检测延迟、恢复放大率和资源成本。第六,按依赖深度与验证延迟分桶,报告多次运行的区间而非单个平均数。

每项结果还应带一个负面边界。例如 METR 的人类时长主要来自其任务分布,不能直接代表所有职业;SWE-bench 的可执行测试不能覆盖未被测试表达的用户意图;LLM judge 即使与人工有较高一致性,也可能在新领域或更长轨迹上漂移。HORIZON使用跨领域轨迹诊断并校验 judge 与人工的一致性,这比无校准的印象分更可靠,但仍不能把 judge 输出当成环境事实。 评测报告应回答一个简单问题:若系统得分提高,究竟是单步策略更准、状态保存更好、验证更密、恢复更快,还是预算更大?不能回答时,总分只能说明某个完整配置在某批任务上更强,无法定位 Long-Horizon 能力的具体进步。明确适用范围,下一轮改进才有对象。

2.1. 可执行指标与基准生命周期

METR 的 time horizon 用人类专家完成时间作为任务难度代理,并在 log⁡x\log x 上拟合逻辑曲线。假设某个 Agent 的拟合参数为 a=2.4,b=−1.2a=2.4,b=-1.2,由式 (9) 得:

x50=exp⁡(−2.4/−1.2)=e2≈7.39.(15)x_{50}=\exp(-2.4/-1.2)=e^2\approx7.39. \tag{15}

若时间单位是小时,50% horizon 约为 7.39 小时。80% 成功对应 logit 值 log⁡(0.8/0.2)=log⁡4\log(0.8/0.2)=\log4,因此:

a+blog⁡x80=log⁡4,x80=exp⁡(log⁡4−ab)≈2.32.(16)a+b\log x_{80}=\log4, \qquad x_{80}=\exp\left(\frac{\log4-a}{b}\right) \approx2.32. \tag{16}

同一模型的 80% horizon 明显短于 50% horizon,这符合可靠率提高后能力边界向短任务收缩的直觉。数字只是演算,不能当成任何真实模型结果。METR 官方页面还提醒,当前任务套件主要来自软件工程、机器学习和网络安全,并将超过 16 小时的测量标为不可靠;任务范围与可测区间都属于指标定义的一部分。 人类时间本身也有不确定性。METR 对多数任务使用成功完成人员用时的几何均值,原因在于完成时间往往右偏。若三位专家分别用 2、4、16 小时,算术均值为 7.33 小时,几何均值为:

xˉg=(2×4×16)1/3≈5.04 小时.(17)\bar x_g=(2\times4\times16)^{1/3}\approx5.04\text{ 小时}. \tag{17}

哪一个更贴近「典型专家」取决于数据生成过程。评测报告应保存原始用时、估计方式与失败尝试的处理规则;只留下一个时长标签,会让后续 logistic fit 看起来比输入事实更精确。

LHTB 的密集奖励怎样解读,Long-Horizon-Terminal-Bench 官方论文与仓库公开了 46 个任务,覆盖九类终端工作流,并用细粒度子任务产生部分奖励。论文同时报告两个 pass@1 阈值:partial reward 至少 0.95 时,最强被测模型为 15.2%;要求 reward 恰好为 1.0 时为 10.9%。两个数字之间的差距说明,一部分轨迹已经非常接近终点,却仍有验收项没有完成。 假设某任务有四个子目标,权重为 (0.1,0.2,0.3,0.4)(0.1,0.2,0.3,0.4),某次运行通过前三项,密集奖励为:

r=0.1+0.2+0.3=0.6.(18)r=0.1+0.2+0.3=0.6. \tag{18}

这个 0.6 只在子目标确实可独立验证、权重有清楚含义时成立。若收尾阶段一项是「系统能够启动」,前三项都只是必要准备,那么 0.6 不代表用户得到了六成可用产品。密集奖励适合比较过程进展,严格成功仍应由全部硬条件决定。 部分奖励还要绑定状态版本。某子目标在第 20 步通过,第 80 步被后续修改破坏,最终 reward 不能继续保留那部分分数。Verifier 若只记录「曾经通过」,长轨迹越长越容易积累虚假进度。每个子目标应保存最近一次验证所对应的产物哈希,相关依赖变化后转回 pending。

截断、超时与删失. 长任务比短任务更容易撞上时间、token 或工具调用上限。把所有超时都算普通失败,会混合两种情况:系统已经走错,与系统仍在推进但预算先结束。后者在统计上属于右删失,至少要单独报告。 设任务上限为 BB,轨迹在 BB 时仍未终止。报告中保留终止原因、当时进度 PBP_B 与最近若干步的进度斜率:

sB=PB−PB−kk.(19)s_B=\frac{P_B-P_{B-k}}{k}. \tag{19}

PB=0.8,sB>0P_B=0.8,s_B>0 表示轨迹仍在推进,增加预算可能有收益;PB=0.2,sB=0P_B=0.2,s_B=0 表示它早已停滞。两者的严格成功都为 0,但诊断含义不同。排行榜仍可按统一预算计算 pass rate,研究报告则应把截断状态展开。 预算扩大也可能掩盖低效。比较系统 A 与 B 时,若 B 获得两倍 token 和四倍工具调用,成功率提高不能直接归给架构。可以画预算曲线 p(B)p(B),并计算达到目标成功率 qq 所需的最小预算:

Bq=inf⁡{B:p(B)≥q}.(20)B_q=\inf\{B:p(B)\ge q\}. \tag{20}

系统在所有预算点都领先,证据最强;曲线交叉则说明各自适用区间不同。只给一个最大预算点,会漏掉前期效率和边际收益。

Verifier 也要接受评测,自动验收给 long-horizon benchmark 带来可重复性,也可能成为新的误差源。Verifier 假阳性会奖励投机,假阴性会惩罚等价解法;验证器崩溃若被记成任务失败,又会把基础设施问题算到 Agent 头上。 构造任务时,可以给 verifier 准备三组校准样本:参考解应稳定通过;删掉关键功能的扰动解应稳定失败;不同实现但语义等价的解法也应通过。重复运行还能检查是否存在残留状态。若同一产物第一次通过、第二次失败,环境清理或 verifier 幂等性有问题。

设人工复核样本中,Verifier 对成功产物的召回为 r+r_+,对失败产物的召回为 r−r_-。二者必须分别报告,因为总体准确率受成功/失败比例影响很大。100 个样本里只有 5 个成功,验证器把全部判失败仍有 95% 准确率,却完全失去衡量能力进步的价值。 LLM judge 适合处理开放语义,但必须保存 rubric、模型版本、采样参数和被评文本。可以让人工在分层样本上估计一致性,并把不确定项交给复核。环境中已有可执行事实时,应优先读取事实;让 judge 猜测试是否通过,只会把确定问题重新变成语言判断。

长度分桶与配对置信区间. 任务分桶时只按人类时长容易混入领域差异。可以同时按依赖深度 DD、验证距离 VV 与不可逆风险 II 分层,再在层内比较系统。样本有限时不必切出几十个小格子,至少应保证所谓「更长」的一组确实在目标维度上增加,而不是恰好换成另一类更难领域。 两套系统在相同任务与种子上运行,可为每对结果定义差值 zi=yiA−yiBz_i=y_i^A-y_i^B。平均差为:

zˉ=1n∑i=1nzi.(21)\bar z=\frac1n\sum_{i=1}^nz_i. \tag{21}

对任务进行配对 bootstrap,能够保留同一任务的难度关联。若还包含多次随机运行,可以先在任务内重采样运行,再重采样任务,形成两层区间。把所有 episode 当成完全独立样本会低估不确定性,因为同一任务的多次运行共享环境和 verifier。 结果表还应给任务级散点。总平均上升可能来自少数任务大幅改善,同时多数任务略降;长程系统常见这种重尾分布。逐任务差值、终止原因和恢复事件让读者能看出增益来自普遍稳定,还是某几个特别适合该 Harness 的案例。

2.2. 一条基准任务的生命周期

可靠 benchmark 从任务提案开始就要版本化。作者先给出目标、初始环境、硬约束与参考完成态;另一位维护者在干净环境中复现;Verifier 用参考解、错误解与扰动解校准;任务随后冻结镜像、资源哈希和网络策略。公开运行时,每条轨迹从相同 checkpoint 启动,完成后由独立进程验收,原始事件日志和最终状态一同保存。 任务升级也要留痕。依赖包下架、网站更新或隐藏测试修复都会改变难度。新版结果不能静默混入旧排行榜,应给 task version 与 verifier version,并在一段重叠期用相同 Agent 同跑两版,估计版本偏移。基准活着并不等于数字可以跨版本直接拼接。

这条生命周期也解释了为何 Long-Horizon 评测成本高。任务必须能运行很久、稳定复位、密集验证,还要容纳失败后的部分状态。减少成本可以依赖容器缓存、增量 checkpoint 和分层抽样,却不能省掉环境隔离与终态验收;省掉这两项后,跑得再多也只是在批量生成难以解释的轨迹。

成本归一化的能力比较,长任务系统可以用更多采样、重试和模型角色换成功率。这个结果有价值,但资源消耗必须一同公开。对运行 ii,总成本可以按部署场景折算:

Ci=ctokTi+ctoolNi+cgpuGi+chumanHi,(22)C_i=c_{tok}T_i+c_{tool}N_i+c_{gpu}G_i+c_{human}H_i, \tag{22}

TiT_i 是 token,NiN_i 是计费工具调用,GiG_i 是计算时间,HiH_i 是人工介入时间。不同团队的单价不同,原始用量与折算单价都应保留;只给一个美元总数会随供应商价格变化而失去可比性。 最直观的指标是每个严格成功的平均成本:

Csucc=∑iCi∑iyi.(23)C_{succ}=\frac{\sum_iC_i}{\sum_i y_i}. \tag{23}

10 次运行共花 100 单位,成功 4 次,Csucc=25C_{succ}=25。若另一系统花 160 单位、成功 8 次,成功率更高且 Csucc=20C_{succ}=20,它在两项上都占优;若花 300 单位成功 8 次,则形成质量与成本的取舍。失败运行也计入分子,因为生产系统无法事先知道哪次会成功。 人工介入不能记成免费工具调用。用户补充原本缺失的信息,与评测人员替 Agent 修复错误,性质不同:前者属于任务输入,后者属于系统恢复成本。报告应记录提问次数、等待时间、人工操作内容,并说明它是否计入成功条件。一个系统靠维护者在关键节点接管,不能与完全自主运行直接放在同一列。

可靠率—预算前沿. 把不同预算下的成功率画成点集,可取 Pareto 前沿。某配置若成本更高、成功率反而更低,就被另一配置支配;未被支配的点展示可用选择。前沿还能比较重试与单次强模型:四次便宜采样或许提高 pass@4,却产生四份外部副作用风险;一次昂贵模型可能成功率相近、状态更容易管理。 对高风险任务,还应把约束违规作为第三个轴。成本低、成功率高但偶尔越权删除数据的系统,不会因为二维前沿漂亮就适合部署。可以先设硬门槛,例如零严重违规,再在合格配置中比较可靠率与成本。

预算曲线要使用相同停止规则。系统 A 达成验收后立即停止,系统 B 仍继续运行二十轮,B 的额外成本属于其 Harness 行为;评测器强制在首次成功时统一截断,则测的是达到目标的最短观测成本。两种口径都可以,必须提前声明。

评测产物的最小发布集. 一个可复核结果至少发布任务与 verifier 版本、Harness 配置、模型端点、采样参数、预算、逐任务结果、终止原因和资源用量。涉及隐私或闭源环境时,可以不公开完整轨迹,但仍应提供事件 schema、聚合故障类别和足以复算表格的匿名记录。 排行榜数字还应链接到不可变 manifest。Manifest 保存容器摘要、代码 commit、数据集 revision 与检查脚本哈希;同名模型或 latest 镜像都会随时间变化,不适合作为实验身份。若某项因服务下线无法复现,结果可以留作历史记录,但要标明外部依赖已经失效。

失败样本也要保留。只发布成功轨迹会让后来者无法研究目标漂移、重复副作用和恢复瓶颈,也容易高估数据质量。失败轨迹按 task failure、timeout、environment error、verifier error 与 policy violation 分桶,训练者才能决定哪些能作为负样本,哪些只是基础设施噪声。

超时、基础设施失败与删失. 固定墙钟或最大步骤下,未完成轨迹不全是同一种失败。模型可能明确走入死路,也可能仍在推进但预算截止;环境还可能崩溃、网络超时或验证器不可用。把它们统一记零分,会混淆策略能力、速度与基础设施可靠性。 令完成时间为随机变量 TT,预算为 BB。成功轨迹观察到 T≤BT\le B,预算截止只知道 T>BT>B,属于右删失。随预算变化的累计成功函数

F(B)=Pr⁡(T≤B)F(B)=\Pr(T\le B)

比单一截止点成功率提供更多信息。某系统很快解决简单题后进入平台,另一个起步慢却随预算稳定增长,二者可能在某个 BB 恰好同分。 基础设施失败要单列事件类型。若失败与任务难度独立,可以从策略成功率分母中剔除并报告有效样本数;若困难任务更容易耗尽内存或触发超时,剔除会产生选择偏差。此时需要修复环境、重放相同任务,或使用失败概率加权,不能默认缺失随机。

重试规则也会改变分数。环境失败自动重试、策略失败不重试是一种协议;两者都允许重试则测多次尝试能力;只保留最好一次会高估单次可靠性。报告必须写明每类失败是否消耗预算、是否继承状态以及最终怎样聚合。 对未完成但已有部分进展的轨迹,可以报告验收条件完成比例,却不能把它当作最终成功的无偏代理。容易条件通常先完成,最关键的一项可能始终为零。部分分数需要保留条件权重与依赖关系,避免十个低价值检查掩盖一个阻塞项。