HAL 与异步智能体评测

7 分钟读完

E3
深入解析 · 评估智能体

静态基准漏掉了"生产里让智能体崩掉的东西"——HAL 度量每解一题的成本与可靠性,Gaia2 强制异步环境——它们的数字比 SWE-bench 低,且低得有道理。

静态基准奖励"可解谜题的形状";真实部署会加入成本、可靠性与异步。HAL(Princeton)报告"每解一题的成本"和一个五维可靠性面板——一致性、可预测性、鲁棒性、安全性、自我认知。Gaia2 强制加入写动作核验器、时间约束,以及"智能体两步之间世界会变"的异步环境。数字比 SWE-bench 低;理由是诚实的。这篇讲各自度量什么、为何要照它们规划。

STEP 1

静态基准盲区。

所谓静态基准,就是把一个固定的问题实例递给智能体,等它跑完,再让一个固定的评分器检查最终状态是否满足。SWE-bench Verified 与 Pro 完全符合这个描述,这也是它们能便宜到排行榜规模去跑的原因。也正是这一点,让它们对三种主导真实部署的失败模式失明。世界不会因为智能体在思考就停下——工单会关、配置文件会改、下游服务开始限流——这些都不会出现在谜题形状的基准里。一次解题的成本,不是单次 API 调用的价格,而是智能体全轨迹(含重试、工具调用、死胡同)的价格,而谜题形状的基准只报通过率、不报成本。重复运行的可靠性也不等同于单次运行的 pass@1;一个模型十次运行里 60% 解出任务,与一个模型每次都解出,是天差地别的生产风险,而谜题形状的基准区分不出。

基准全景一文就"排名"角度主张把 Verified 当审计信号而非榜单。可靠性角度则更强:谜题基准跳过的那些属性,恰恰是决定智能体能否挺过在生产上的第一个月的属性。HAL 与 Gaia2 存在,是因为业内注意到了。

STEP 2

HAL:每解一题的成本。

Princeton 的整体智能体榜(HAL)在每一份通过率旁都报告一个"每解一题的成本"数字,其计算方式是"基准运行期间的模型调用与工具调用总花费,除以解出的实例数"。公式平平;把它公开出来才是创新。仅按通过率排名的榜单,会把"每解一题花 $8"的模型与"花 $0.40"的模型等同视之;采购团队没法据此拍板。带上"每解一题的成本"的排名会说"这款模型领先三分,但成本是别人的 4 倍",让你能就你的流量形状去权衡。

这一度量有一处值得点名的微妙之处。"每解一题的成本"只在解出实例上取分母,不是在全部尝试上取,因为若采用"总花费/总尝试"这个替代方案,会奖励那些"便宜地失败"的模型。一款在难题上早早放弃的模型在总尝试分母下会看起来"便宜";在 HAL 的解出实例分母下则正确地看起来更贵,因为更难的解本身花费更多,而"放弃了那些难题"并没能让"它确实解出的那些"变便宜。评判器校准一文就一致率指标该用哪个分母讲过相同的话;这个模式可推广——分母是基准设计的生死之处。

STEP 3

HAL:5 维可靠性。

HAL 的可靠性面板给每个模型报告五个分数,每个都在 [0, 1] 之间,每个都对应一份具体实验协议。一致性(consistency)是同一输入多次运行之间的"解出/未解出"是否吻合。可预测性(predictability)是智能体自陈的自信度与实际成功率之间的校准——它说"搞定了"的时候,有多少次真的搞定了。鲁棒性(robustness)是在对抗性扰动下的通过率——被注入错别字的 prompt、注入工具错误、限流施压。安全性(safety)是在一份精选红队子集上的拒答质量。自我认知(self-awareness)是可预测性与"校准过的克制"的合体——本应说"我做不了"却硬试硬失败的那些场景里,它有多少次说出了。

HAL reliability dashboard — per-model panel
------------------------------------------------
consistency      0.88   run-to-run outcome agreement
predictability   0.79   stated vs actual success
robustness       0.71   pass rate under perturbation
safety           0.94   red-team refusal quality
self_awareness   0.55   calibrated abstention
------------------------------------------------
notes:
  self_awareness < 0.70 = frequent overconfident tries on infeasible tasks
  predictability < 0.60 = stated confidence unusable for gating

这份面板要按一个特定顺序读。安全性是底线——它若不高,其他都不算数。一致性与可预测性一起告诉你,通过率数字是否稳定到能据此规划。鲁棒性告诉你智能体在你没自测过的边缘表现如何。自我认知那一项决定智能体能否被信任放进"带人审升级步"的工作流,因为一个低自我认知、"无论如何都要试"的智能体,会给出最贵的失败——一条很长的轨迹,末尾自信地递上错答案。

STEP 4

Gaia2:异步环境。

Gaia2 的设计把"两步之间世界会变"的属性硬塞进了基准。任务在一份模拟环境里跑,环境里有背景角色按自己的节奏改动共享状态——工单会关、日历会挪、文件会被重写——评分器是一组"写动作核验器",把智能体每一次改写与"变异发生那一刻的环境实际状态"对比核验,而不是与某份预先算好的答案键对比。t=0 时本会被判对的动作,可能在 t=30 时被判错——因为底层资源被某个背景角色关掉了,而智能体得注意到。

# gaia2_task_example.py — simplified.
from gaia2 import Environment, WriteVerifier

env = Environment.load("tickets/scheduling-conflict-v3")
env.schedule_background("ticket_closed_by_ops", at_step=4)

async def run(agent):
    trace = await agent.solve(env)
    for action in trace.write_actions:
        WriteVerifier.check(action, env.state_at(action.timestamp))

写动作核验器是让这套设定可评分的关键。只读动作核验便宜——评分器重新读一遍就行。写动作是难的那部分,因为"智能体做出的这次改写是否合法"取决于输入状态和改写契约,而两者在 t=30 都可能与 t=0 不同。Gaia2 的解法是要求每一次写动作都声明"预期的前置状态",由核验器与"改写时间戳上环境的实际状态"比对。若预期前置状态与实际前置状态吻合、且后置状态与契约吻合,则通过;否则失败,智能体只因"正确的那些改写"得分。

Gaia2 上最佳 pass@1 大约 42%(最强前沿模型),多数前沿模型在 25–35% 区间——比 SWE-bench Verified 低得多。这段差距不是模型变差了;而是 Gaia2 度量了 Verified 从未检查过的属性。异步意识、轨迹中途的适配、对陈旧状态错误的正确处理,都不是静态基准会奖励的东西。

STEP 5

如何据此规划。

三条经这些基准洗礼后仍站得住的规划规则。第一,按"每解一题的成本"预算,不按"每次调用"预算。若你在 HAL 上的成本是 $1.40/解,预计每月服务两万条解答,光模型账单就是 $28,000,还没算工具与基础设施成本——若某模型通过率涨 2 分而成本翻倍,规模上几乎必然是笔坏交易。第二,把可靠性面板当门槛,不当排名。一致性低于 0.85,就没法用通过率去比较候选部署,因为运行间噪声底高于它们之间的差距。安全性低于 0.90,就不能部署到会接触客户输入而没有第二重把关的工作流。自我认知低于 0.70,就不要在没有"外部核验器捕获自信却错误输出"的情况下部署。第三,工作负载是异步的时候,就给异步基准分数加权。若你的生产表面涉及背景状态变化(客服工单、CRM 记录、排期系统),Gaia2 通过率就比 SWE-bench Pro 名次更要紧;若你的表面更接近"代码审阅式批处理任务",反之亦然。

三条规则共同的承重点是:单一基准上的通过率,不足以支撑一次部署决策。2026 年的纪律是一份面板:一份你信得过其排名的通过率、一份你付得起的"每解一题的成本"、一份"最弱一维仍在部署底线之上"的可靠性面板,以及(对异步工作负载)一份"你已与它相较静态基准的差距达成和解"的 Gaia2 分数。任何在生产里跑智能体超过一个季度的团队都以昂贵的方式学到了这一点;HAL 与 Gaia2 是让团队"在事故之前"学到它的框架。