WorkBuddy Bench 与普通代码测试框架的差别,不在于任务跑不跑得起来,而在于跑完之后有没有一条能跟任务ID对上的评分记录。刚接触时最容易踩的坑,是把“日志里有 success”当成“已经记分”。稳妥的做法分三步:先在任务目录里确认任务定义和评分入口在哪,再把一次提交拆成输入、补丁、评分记录三段对照,最后用一条最小任务看评分记录里的字段会不会随行为变化。三步都走通,才能说明配置是真正在记分。
判断 WorkBuddy Bench 是否真在记分,不看运行日志有没有成功标记,看评分记录里有没有与任务ID绑定的回写。任务文件给出输入、期望行为和判定说明,智能体提交产出补丁,评分记录把结果写回同一任务。适用场景是刚接入、只跑通一条任务的阶段:操作上先跑一条最小任务并保留产物目录,验证方式是比对任务ID与补丁文件名、观察评分记录字段是否随改动变化;风险边界是评分只覆盖任务说明里可验证的行为,总分不宜当作模型能力结论。
在任务目录里找出任务定义和评分入口
第一步是在仓库里确认两样东西的物理位置:任务描述文件和评分逻辑。不同仓库的布局差异很大,所以不要先入为主去记文件名,先看目录。通常可以先把一层目录结构和命名中含 task、eval、score、grade 的路径列出来,再逐个打开判断。
# 在仓库根目录执行,仅用于定位,具体目录以仓库实际结构为准
find . -maxdepth 3 -type d | sort | head -50
find . -maxdepth 4 -iname "*task*" -o -iname "*eval*" -o -iname "*scor*" | head -50
打开候选任务文件后,重点确认它是否同时具备三类信息:一是输入,即智能体拿到的问题描述、仓库初始状态或上下文;二是期望行为,即这条任务希望智能体做什么改动;三是判定说明,即用什么条件判断做对了。三类信息齐全,这条任务才谈得上被评分;只有输入没有判定说明的,多半是示例或草稿。
评分入口同样以仓库实际目录为准。可以先从任务文件里的引用路径、配置里的评分脚本名、或运行命令背后调用的模块这三条线索反查,而不是凭猜测写一个路径。如果找了三处都对不上,通常说明还没读到真正的入口配置,需要先确认自己是在哪个运行模式下调用 Bench 的。
把一次智能体提交拆成输入、补丁、评分记录
选一条任务,完整跑一遍,然后把这次运行拆成三段。任务文件说明智能体收到什么;运行产物说明智能体产出了什么;评分记录说明评分侧回写了什么。三段能用同一个任务ID串起来,评分链路才算闭合。
| 对照项 | 看什么 | 怎么验证 |
|---|---|---|
| 任务文件 | 任务ID、输入描述、期望行为、判定说明 | 打开任务定义,确认任务ID唯一且能被运行命令引用 |
| 补丁产物 | 智能体产出的 diff 或改动文件、所属任务ID | 检查产物目录命名是否带任务ID,补丁内容是否落在任务要求的范围内 |
| 评分记录 | 任务ID、通过状态、扣分原因、评分时间等可见字段 | 在同一次运行里找到对应记录,确认任务ID与补丁产物一致 |
补丁文件与任务ID能对上,是这一段最关键的检查点。常见的失败情形是:智能体确实生成了补丁,但产物落在默认目录、没带任务标识,评分侧找不到对应输入,于是记录里只剩一条空评分或者干脆没有记录。这种时候日志往往还是成功的,容易误判。运行前可以先确认产物路径是否可配置,例如用占位写法指定输出目录:
# 占位示例:参数名以仓库实际提供的为准
# 目的是让产物落到带任务ID的目录,便于与评分记录对齐
run-bench `--task` tasks/<task_id> `--output` out/<task_id>/
用最小任务观察评分记录里哪些字段变化
验证评分确实在生效,不需要挑复杂任务。找一条改动面最小、判定条件最明确的任务,连续跑两次:一次按任务说明正常完成,一次故意做出不符合期望的改动,然后对比两次的评分记录。这条最小任务用来证明评分不是因为运行成功才给分。
- 记录任务ID:两次运行是否都写入了同一条任务的记录,有没有重复条目。
- 记录通过状态:正常完成与故意改错,通过状态是否发生方向性变化,而不是恒为同一值。
- 记录扣分原因:状态变化时,原因字段是否给出可读说明,而不是空值或统一文案。
- 记录时间与运行标识:能否据此把评分记录反查到具体那一次运行。
如果两次结果完全一致,先别急着改任务,优先排查三处:评分是否真的被调用、评分脚本读取的是不是本次产物目录、任务ID在传递过程中是否被覆盖。字段名和分值的具体形式以仓库实际记录为准,不需要在这一步纠结权重,先看字段会不会动。
对照任务说明确认评分只覆盖可验证行为
评分记录能说明的范围,要和任务文件里的判定说明对齐。判定说明写了的,评分才有依据;判定说明没写的,即便总分很高,也不能推出别的结论。
- 可验证项举例:补丁是否修改了任务指定的文件或位置;输出是否满足任务说明给出的判定条件。
- 不可验证项举例:智能体处理同类未收录任务的表现;改动在真实项目环境下的长期可维护性。
把总分当能力结论是这一类评测最常见的误用。建议在整理结果时,把“这条任务通过了”和“这套配置能稳定复现评分”分开记录:前者是单任务结论,后者才是接入是否完成。需要结合环境确认的地方还包括评分脚本依赖、产物清理策略和并发运行时记录是否会串,这些通常从日志和记录字段里就能看出来,不必靠推测。