Agent 评测 · 轨迹验证 · 论文精读

Agent 不是缺更多候选,而是缺一个会看过程的裁判:LLM-as-a-Verifier

当 Agent 已经能并行跑出五条、十条甚至更多轨迹,瓶颈往往不再是「再生成一条」,而是:谁能可靠地看懂过程、选出更好的那一条,并告诉训练系统哪里开始走偏?

2026-08-27约 6800 字阅读约 18 分钟AgentVerifierRL
多个 Agent 轨迹经过蓝色验证透镜,筛出一条正确路径
生成负责铺开可能性;验证负责把计算花在更值得相信的路径上。

假设一个代码 Agent 接到「修复 CI」的任务。它一次跑出 8 条轨迹:有人改对了测试,却顺手删掉了边界检查;有人日志写得漂亮,但根本没跑测试;有人中途绕了很远,最后碰巧成功。你可以继续把候选从 8 条扩到 80 条,可这只是在增加待批改的卷子。真正决定收益的,是有没有一位能读过程、能分细微差异、还能给出稳定排序的裁判。

这正是 LLM-as-a-Verifier: A General-Purpose Verification Framework 要解决的问题。它并不主张「再训练一个万能裁判」,而是换了一种读取已有 LLM 判断能力的方式:不把模型压成一个离散标签,而是读出评分 token 的概率分布,形成连续分数;再沿着粒度、重复评估、评估维度三个轴扩展验证计算。

先给结论:LLM-as-a-Judge 擅长「给答案打一个够用的分」;这篇论文里的 LLM-as-a-Verifier 更像一名过程审计员:它把不确定的语言判断变成可比较的连续信号,用于 Best-of-N 选轨迹、在线观测进度和提供稠密 RL 奖励。两者不是替代关系,而是精度、成本和任务阶段不同的两层工具。

先把名字讲清楚:Judge 和 Verifier 不是一回事

行业里「LLM-as-a-Judge」是个大伞:让语言模型按 rubric 判断回答好坏,都可以这么叫。论文并没有否定这件事。它瞄准的是最常见的一种实现:模型最后从 1~5 分、A/B 或 pass/fail 中挑一个离散标签,然后我们把这个标签当作全部信息。

问题出在长轨迹选择。两条 agent 轨迹都得到「4 分」,不代表它们同样好:一条可能是 4 分概率 0.91,另一条可能是 4 分概率 0.31、3 分概率 0.30、5 分概率 0.28。离散读取把这两种犹豫程度都压扁了,候选越多,平局越多。论文的 Query 优化例子里,传统 1~5 Judge 在 100 个比较中出现了 88 次并列;改为连续读取后不再产生 tie,且选择正确数随粒度增加而提升。

传统 Judge:只取最终标签

1 分2 分3 分4 分5 分

输出:4 分。两条候选都为 4 分,只能并列或再随机挑一条。

适合:低成本粗筛、离线报表、答案级 rubic 评估。

Verifier:读取整条概率分布

.041
.082
.183
.424
.285

期望分 E[s] = Σ p(s)·s,得到连续值;同为「4 分」的候选也能稳定排序。

适合:候选重排、过程监控、训练奖励,但需要更多推理和 logprob 能力。

一个好比喻是驾校考试。Judge 像考官在最后盖「通过 / 不通过」;Verifier 像行车记录仪加教练,除了总评,还知道你是在哪一个路口开始频繁急刹、哪一段其实已经稳定。前者非常有价值,但不足以反复指导一辆自动驾驶车如何纠偏。

核心机制:把离散标签还原成连续证据

对输入 x、候选轨迹 τ、第 c 个评价标准,模型会对评分 token 给出概率。论文把可选评分 token 映射成数值,再取期望:R(x,τ)=平均[ Σ p(v|x,c,τ)·φ(v) ]。这里的平均可以跨评分粒度 G、重复次数 K 与标准数 C;最后归一化到 0~1。比较两条轨迹时,使用 sigmoid(Ri−Rj) 转成 Bradley–Terry 偏好概率。

注意,它不是让模型凭空报一个小数,也不是让一个外部模型「想一想再打分」。连续性来自score token 的 logprob。官方实现会要求兼容后端返回 top logprobs,或对开源模型用受约束的 A~T 评分 token 读取分布;随后在 fine_grained_reward.py 中计算期望分。这个细节很重要:没有概率接口的闭源 API,不能直接复现原论文的核心读法。

工程提示:这是「更充分使用一个模型已表达的置信度」,不是让置信度天然等于真实性。还需要任务 rubric、校准集、反作弊案例和确定性检查来约束它。

三根验证计算的旋钮

论文的漂亮之处,在于没有把 verifier 包装成某个领域专用 reward model,而是给出三根可调旋钮:更细地读、重复地读、从更多角度读。它们分别解决分辨率、噪声和偏见。

粒度 G:把尺子刻细

评分 token 越多,期望分越不容易被粗标签卡住。Terminal Bench V2 的终局成对判断,G=1 为 73.1%,G=20 达 77.5%。

解决:大量候选同分
重复 K:多测几次

同一轨迹在不同采样、顺序下会抖动。重复评估再平均,方差约按 O(1/K) 收敛;K=1 到 K=16 的结果从 74.7% 到 77.5%。

解决:一次判断不稳定
标准 C:换几副眼镜

代码轨迹可分别看 Specification、Output、Errors;单项约 75%~76%,三项合并报告为 78.3%。

解决:单一 rubric 的盲区

这三项不要被误读成「永远开到最大」。它们都是测试时计算:更细的 token 集、更高的重复次数、更多 rubric 都要付推理费。一个成熟系统会先做消融:是分数粒度不够,还是采样方差太大,抑或 rubric 本身漏掉了关键失败模式?再把预算压到最值得的轴上。

为什么 Agent 更需要过程验证?

单轮 QA 的最终答案通常已包含主要证据;Agent 不一样。它的轨迹有工具调用、环境反馈、文件改动与中间假设。最终任务恰好成功,可能只是偶然;最终任务暂未成功,也可能离正确路径只有一步。只看 terminal reward,就像只看一场足球赛的最终比分,完全不知道哪支队伍在第 70 分钟后已经失去组织。

论文把轨迹截成多个 prefix,对每个 prefix 重复计算连续验证分,称为进度信号,并用 Value-Order Correlation(VOC)衡量它与真实步骤顺序的相关性。官方 progress 模块的提示词还明确要求模型相信已经观察到的工具输出,而不是 agent 自己的叙述;因此它不是把「我快做完了」当进度,而是看测试、命令结果和环境状态是否真的支持这句话。

读取仓库 / 定位失败
修改依赖 / 跑测试
出现错误 / 回滚重试
测试通过 / 任务完成
早停:持续低分且无新证据
诊断:从哪个步骤开始变差?
调度:把预算留给更有希望的分支
RL:给每一步提供更密的奖励

论文在 Terminal 轨迹上报告:成功轨迹 VOC 为 0.848±0.012,失败轨迹仍为 0.769±0.016;在机器人 benchmark 上,验证器的 VOC 也高于对比 reward 模型。这里应当克制地解读:这些数字说明该框架在论文基准中给出了更单调、更贴近过程的信号,不等于它能在任何生产 Agent 上可靠预测「还剩几步完成」。真实环境里,长期停滞、环境延迟、隐藏约束都会让进度曲线失真。

候选不是越多越好:PPT 怎样用更少比较选更好答案?

有了连续偏好,仍会遇到一个朴素的成本问题:N 条候选两两比较需要 O(N²) 次。N=20 时已经是 190 对;在长轨迹 agent 上,每一对都是贵的。论文提出 Probabilistic Pivot Tournament(PPT):先用一圈轻量比较挑出 k 个代表性「pivot」,再让其它候选只和 pivot 比,复杂度变成 O(Nk)。

① 候选池N 条独立 rollout:快的、稳的、偶然成功的都保留。
② Ring pass随机环让每条轨迹各出现一次 A 位和 B 位,抵消位置偏差。
③ 选 Pivot按环形比较的平均分,取 top-k 作为标尺。
④ 稀疏对决非 pivot 仅对 k 个标尺比较;pivot 彼此补比。
⑤ 选最优按累计胜率 / 比较次数归一化,输出最可靠候选。

这像招聘。全员两两面试既慢又不必要;先用一轮统一题挑出几位「标杆候选」,再让其他人和标杆对照,更容易用有限面试官时间做出排序。PPT 的巧思是 ring pass:所有候选都平等地轮到左右位置,避免「先展示的方案总被偏好」这类 position bias。

N=20 的论文消融查询对数选择准确率该怎样理解
PPT,k=34,72366.17%计算最省,已接近全量比较
PPT,k=56,60966.27%常见的预算—质量折中点
PPT,k=99,63067.13%继续接近全量上限
全量 round-robin13,11167.42%上限基线,不适合每次线上都跑

这里的「查询对数」来自论文 Appendix 的具体设置,不能直接搬到你的系统。更值得带走的是实验设计:先固定候选池,画出 quality vs. verifier cost 曲线,再选 k;不要只因为 O(Nk) 看起来漂亮,就默认 k=5 在任何任务上都够用。

从选答案到训练:验证器怎样成为稠密奖励

终局奖励的难处是稀疏:一条 50 步轨迹最终失败,训练只拿到一个低分,根本不知道第 7 步的工具选错和第 42 步的参数写错哪个更该修。Verifier 能为每个 prefix 给出连续值,于是相邻 prefix 的差值就能形成密集奖励:rt=renv+λ·ρt。它让策略在还没到终局时,就获得「这一动作把事情推向更好 / 更坏」的信号。

论文在 LIBERO 机器人任务的 DSRL 实验中报告,加入验证器的过程奖励后,达到相近表现所需样本约下降到原先的 1/1.8,最终成功率为 0.76 对 0.69;在 MATH 的 GRPO 设置中也报告了约 1.1× 的样本效率改善。它们值得关注,但同样不是「验证器 = 免费 RL 加速器」:论文也承认 RL 实验主要是单轮设置,多轮 agent rollout 的稳定性仍是未来工作。

83.1 → 86.5Terminal Bench V2:论文中 verifier 在 N=5 候选池上的选择结果(pass@1 为 83.1)。
76.1 → 78.2SWE-Bench Verified:论文候选池上的选择结果(oracle 为 84.4)。
70.2 → 73.3MedAgentBench:论文中的 verifier 选择结果(oracle 为 75.0)。

三组数字给我们一个很健康的提醒:Verifier 通常把结果从 pass@1 往 oracle 推近,但并不会神奇地达到 oracle。前者受生成能力限制,后者是假设「候选池里已经存在正确轨迹」。所以系统优化顺序应是:先确认生成池有足够多样性和质量,再升级 verifier;若池里全是坏候选,再会看过程的裁判也选不出好答案。

面试题:Judge 为什么不够用,什么时候反而更合适?

问:LLM-as-a-Verifier 和 LLM-as-a-Judge 的本质区别?

答:Judge 是一个宽泛范式,常见实现把评估压成离散标签,适合给结果做粗粒度判断;Verifier 在这篇论文中保留 score-token 的完整概率分布,取连续期望分,并通过粒度、重复和多 rubric 扩展验证计算。它尤其适合需要稳定排序、读取中间轨迹或提供稠密奖励的场景。不能说所有 Judge 都没有连续分,也不能说 Verifier 天然更真实。

问:既然 verifier 更强,为什么不全部替换成它?

答:因为成本、接口和收益不匹配。离线 benchmark、数百万条日志的粗筛、规则明确的内容审核,用轻量 Judge 就足够;确定性任务优先单测、编译器、schema 或工具执行。Verifier 需要 logprob、更多调用和精心设计的 criteria,应该留给 Best-of-N 的关键选择、长轨迹诊断、高价值任务或训练环节。

问:如何在生产 Agent 中组合它们?

答:采用分层门控:先用确定性验证(测试、JSON schema、权限规则)拦截硬错误;再用便宜 Judge 粗筛候选;只把少数接近、代价高或风险高的轨迹交给 Verifier 精排与诊断;涉及医疗、金融、写入生产系统时,最后仍保留人工或可审计规则。这样把昂贵的「会看过程」能力用在真正需要的地方。

落地清单:别先买一个 Verifier,先定义你要验证什么

  1. 先拿到可验证的事实。代码任务保留 test、diff、命令输出;工具 Agent 记录 input/output、时间线与环境状态。没有过程证据,模型只能相信 agent 自述。
  2. 写可区分的 rubric。不要只写「质量好不好」;像论文一样拆为规范是否满足、输出是否可信、错误是否处理。每一项都要有正反例与失败模式。
  3. 做校准而非只看平均分。检查 verifier 高分轨迹的真实成功率、不同长度和不同任务上的偏差、是否偏好啰嗦或格式漂亮的回答。
  4. 从 rerank 开始。先在固定候选池上比较 pass@1、oracle gap、成本与延迟;确认它能选对,再尝试过程监控或接入 RL。
  5. 保留反证与回放。每次选择记录 rubric、版本、logprob 摘要和被淘汰候选;否则出了问题只能得到一句「模型觉得这条更好」。

论文的官方仓库已经提供 Python 包和 TurboAgent 代理等实现入口,见 llm-as-a-verifier/llm-as-a-verifier。但落地前应先确认后端是否支持所需 logprobs、哪些数据会离开你的执行环境,以及 rubric 是否会泄漏业务规则。开源包解决了调用和计算问题,解决不了「你到底该相信什么」这个产品问题。

边界:最好的裁判也会误判

作者在论文里列出了几条很实在的限制:不是所有前沿 API 都开放 score token 的 logprob;criteria 分解依然需要人工;固定 K 次重复并不一定比按不确定性自适应分配算力更划算;RL 部分还没有覆盖完整的多轮 agent rollout。除此之外,生产中还要警惕 reward hacking:Agent 学会写出更像「正在进展」的日志,却没有真的推进环境状态。

因此,我会把它定位成一套验证计算框架,不是一个真相机。可执行测试、外部事实、权限边界这些确定性证据应当优先;Verifier 的长处是把难以完全规则化的过程判断,变成更细、更稳、可被系统消费的信号。

Agent 的上限不只由「一次能想出多少条路」决定,也由「能否分辨哪条路真的在往前走」决定。生成负责扩张搜索空间;验证负责把搜索变成决策。

参考资料

  1. LLM-as-a-Verifier: A General-Purpose Verification Framework,2026。本文的主要来源;连续验证、PPT、进度信号、实验数据与局限均以该论文为准。
  2. 论文 HTML 正文与附录。用于核对 G/K/C 消融、PPT 的查询成本与基准设置。
  3. 官方实现仓库。包含 fine-grained reward、pivot tournament 与 progress tracker 的实现入口。
  4. Judging LLM-as-a-Judge with MT-Bench and Chatbot Arena,2023。理解 LLM-as-a-Judge 作为通用评估范式的早期代表工作。
  • Copyrights © 2024-2026 Hwk