结果与 PASS
Result 怎么读;pass@k 是 job 指标,不是整份 dataset 的 PASS。
不要搞混
run.py跑完 ≠ PASS- 轨迹 / token / agent 自述 ≠ 分数(含
evaluation/observation.jsonl与evaluation/checks.json) - PASS / FAIL 仅来自
evaluator.py的返回值 - 整份 dataset / job 汇总(含 pass@k)≠ 整份 dataset 的 PASS
- 跑完之后的 analyzer 报告 ≠ 分数,也不改写
evaluation/checks.json
终端上
- Result:绑定到这次运行的状态与评测结论
logs:这次运行的证据路径(相对 dataset 根,如.ageval/runs/<run_id>;单次k=1常见)- 整份跑完时的
pass_rate/mean_score:job 汇总
Always-k 与 pass@k / pass^k
用 -k / --n-attempts 跑满 k 次后,整份跑完的 summary.json → metrics 会写:
| 键 | 含义 |
|---|---|
pass_at_k | pass@k(至少一次成功的无偏估计;Harbor 同构) |
pass_power_k | pass^k(k 次都成功的估计) |
n_attempts | 本 job 的 Always-k 预算(来自 CLI / job,不是 task.yaml) |
k_values | 本 summary 计算过的 k 列表 |
per_task | 各 task 的 n / c 与 per-k 映射(审计) |
| 整份汇总分 | 各 task 上该指标的 mean(样本不够的 task 不进分母) |
带 fork 的 Attempt 不进入默认 pass@k 和 pass^k。它们仍作为单独的行保留。
metrics.pass_at_k / pass_power_k 契约
每个键是 字符串化的 k(如 "1"、"2"、"5"),值为:
{
"1": { "value": 0.75, "n_tasks": 4, "incomplete_tasks": 0 },
"2": { "value": 0.5, "n_tasks": 3, "incomplete_tasks": 1 }
}| 字段 | 含义 |
|---|---|
value | 对该 k 可计算的 task 取 mean;若无 task 可算则为 null |
n_tasks | 进入该 k 分母的 task 数 |
incomplete_tasks | 因 n < k(pass@k)等原因未进入分母的 task 数 |
上传 / Registry:
ageval results upload-suite在本地先 ensure / recompute(有attempts[]或 taskn/c即可补全 k 指标),再 POST 整份metricsblob。- Registry 原样存入
metrics_json,list/get 不剥除pass_at_k/pass_power_k。 - 主列仍是
pass_rate/mean_score;k 指标在metrics内读。 - 不写入
config_fingerprint/ job identity;不同 k 的 job 可并列,身份仍是 agent×model 绑定。 - 无 k 数据的旧上传:
metrics.pass_at_k缺失 → Hub 显示—。
task_refs(多 attempt): 可含 n、c、attempt_run_ids(及主 run_id),供审计与 --with-attempts 上传全样本。
Hub 上看得到什么
| 上传命令 | 产物 | Hub 主界面 |
|---|---|---|
ageval results upload --run … | 单次运行 | 一般不进 Dataset Leaderboard / Task Jobs 主列表 |
ageval results upload-suite --suite-run … | 整份运行的一行 + metrics / task_refs | 完备且绑定 release 才上 Leaderboard;缺题或 draft 绑定只出现在 Task Jobs |
… --with-attempts | 额外上传各 attempt 目录 | Jobs 可点进 Attempt 详情 / 轨迹 |
因此:要在 Hub 上看整份 dataset 的结果,流程是 整份跑完 → upload-suite,并且绑定已发布 release。不是只 upload 单题。
本地查看
ageval view 打开一份 dataset 根、一个放着多份 dataset 的目录,或已缓存的 registry ref。顶栏是 Datasets、Jobs、Agents、Plugins。选中的那一份走 Jobs → Tasks → Attempt。
Attempt 页可有 Timing(及有数据时的 Tokens)条。存在 analysis/<analyzer>/report.json 时,证据页签里有 Analysis,列出这些观察;它不是分数。轨迹按文件顺序展示(thought 紧挨着它后面的工具)。轨迹行带 elapsed_ms 时步骤头显示单步耗时。Verifier 会把 evaluation/checks.json 在文件树预览里结构化渲染(同时有 observation.jsonl 时用 Trajectory / Files 切换)。
失败怎么分
| 类型 | 直觉 |
|---|---|
| 配置 / lock | 还没进入正式执行 |
| 执行 ERROR | 执行边界内出错。error 记下 phase、title、message。ScriptError 保留你传入的 title;其它异常用类名。Viewer 和 Hub 在 ERROR 旁显示这个 title。PASS 和 FAIL 的 error 为空 |
| FAIL | 评测认为没过 |
| PASS | 评测通过 |
| run 阶段 limit | evaluator 照常打分;limit 为 wall_time_seconds 或 agent_invocations |
| 阶段时钟 | environment 或 evaluate 到期记 ERROR |
具体 exit code 与字段以当前 CLI 输出和 skill ageval-cli 为准。