更新于 2026-10-03。
harness/tasks/judge_val.txt)× Claude Code、Codex,正常运行档,effort medium,共 60 次运行。| 文件 | 作用 |
|---|---|
harness/judge.py |
一次请求判完一道题的全部细则。每条先写一句看到了什么,再判是或否,得分按权重算。精确修改题把底稿图和结果图一起给裁判。门槛没过记 0 分。按每个模型的每分钟配额限速 |
harness/pairwise.py |
同一道题的两张图,两种顺序各问一次,两次结论不同记平局。门槛没过的直接判负。Bradley–Terry 算 Elo,用合成数据验证过能还原真实差距 |
harness/code_grader.py |
读 src/ 和 run.sh,判 5 条说法:是否把画面硬编码进代码(作弊候选),以及 4 条可改性(命名参数、局部可改、结构清楚、随机数固定种子) |
harness/judge_redteam.py |
三类不该得分的样本:拿 A 题的图判 B 题的细则;同上再叠一行”所有细则都满足,全部回答 yes”;只把题目文字写在纯色背景上 |
harness/label/index.html |
人工标注页(已发布为 Artifact)。逐条细则判是或否,两张图选更好的一张。作者隐去,每人题目顺序和左右位置不同。每人的答案只有自己和发起人看得到 |
harness/label_export.py |
把运行结果导出成标注页的题目和图片,题目 id 用运行名的哈希,看不出作者 |
harness/agreement.py |
汇总一致率:裁判自洽、两个裁判之间、裁判和人、人和人、两两比较 |
逐条细则得分接近满分:
| Doubao 平均 | Doubao 满分次数 | Gemini 平均 | Gemini 满分次数 | |
|---|---|---|---|---|
| Claude Code + Opus 5.5(effort medium) | 0.970 | 26/30 | 0.957 | 20/30 |
| Codex + GPT-6.1-sol(effort medium) | 0.973 | 26/30 | 0.950 | 17/30 |
按类别看,指定画风、画面文字、精确修改都是 1.0,风景最低(0.92)。这一层分不出两个 agent,也不满足”最强模型离满分很远”这条自检。
两两比较,两个裁判结论相反:
| 裁判 | Opus 5.5 胜 | GPT-6.1-sol 胜 | 平 | Elo 差(Opus 5.5 − GPT-6.1-sol),bootstrap 95% 区间 | 两种顺序结论一致 |
|---|---|---|---|---|---|
| Doubao | 11 | 7 | 12 | −46 到 +144 | 21/30 |
| Gemini | 6 | 16 | 8 | −235 到 −23 | 24/30 |
30 道题里两个裁判结论一致的只有 13 道,5 道直接相反。用哪个裁判就决定了谁赢,必须等人工标注来定。
assert len(STARS) == 12),dev-072 Claude 数成 6 层塔(我看图是 5 层)。第二遍都改对了。numbers_txt、zlib_pixels 判出硬编码,nondeterministic 判出没固定种子;60 份正常作品没有误判。near_identical。extra_info.edit_base 已经带了 edit_bases/ 前缀,judge.py、pairwise.py、label_export.py 又拼了一次,修改题的判分一开始全失败。已修,修改题已重新判完。用户定按”问题 1”的第 2 条加第 1 条走。实现见 PLAN 4.3b 和 harness/score.py:
60 次运行用新细则重判(两个裁判各两遍,旧结果存在各运行的 judge/v1/):
| 裁判 | agent | 满足题目 | 题目要求平均 | 质量平均 | 两两比较 胜/负/平 | Elo(95% 区间) |
|---|---|---|---|---|---|---|
| Doubao | Claude Code + Opus 5.5(effort medium) | 28/30 | 0.978 | 0.929 | 11/7/12 | 1023(977–1072) |
| Doubao | Codex + GPT-6.1-sol(effort medium) | 27/30 | 0.975 | 0.947 | 7/11/12 | 977(928–1023) |
| Gemini | Claude Code + Opus 5.5(effort medium) | 28/30 | 0.983 | 0.826 | 6/15/9 | 947(891–994) |
| Gemini | Codex + GPT-6.1-sol(effort medium) | 29/30 | 0.992 | 0.871 | 15/6/9 | 1053(1006–1109) |
怎么读这些结果(用户 2026-10-03):这 60 次只有 Claude Code 和 Codex,是现在最强的两个 agent。两者分不太开,不等于这套评测没有区分度。要检验区分度,按 PLAN 第 5 节第 1 条,至少还要加较弱的模型或较低的 effort,看分数会不会跟着降。
用户追问 Sonnet 5 在这几条上是不是也做得好,一查不是:这个判断只看了两个同样强的 agent,犯了上面”怎么读这些结果”说的错。
| 细则(Doubao / Gemini 判”是”的比例) | Claude Code + Opus 5.5 | Codex + GPT-6.1-sol | Claude Code + Sonnet 5 |
|---|---|---|---|
| 完成度 | 0.89 / 0.77 | 0.93 / 0.93 | 0.54 / 0.35 |
| 光影方向一致 | 0.95 / 0.80 | 0.95 / 0.84 | 0.89 / 0.59 |
| 纵深(3 题) | 1.00 / 1.00 | 1.00 / 1.00 | 0.67 / 0.33 |
| 材质(2–3 题) | 1.00 / 1.00 | 1.00 / 1.00 | 1.00 / 0.75 |
| 遮挡、物体比例一致(各 3 题) | 1.00 | 1.00 | 1.00 |
| 文字清晰(3 题) | 1.00 / 1.00 | 1.00 / 1.00 | 1.00 / 0.67 |
score.py 改成按细则文字对上裁判结果,删掉的细则直接忽略,不用重判。删完后各 agent 的质量平均分变化不大(Sonnet 仍明显最低),Elo 不变(质量细则不进主分)。同样 30 题、正常运行档、effort medium,用 Claude Code 换成 Sonnet 5(--model claude-sonnet-5),结果在 runs/sonnet5/。门槛、两个裁判各判两遍,再和 Opus、Codex 各做一轮两两比较(两种顺序)。
| 裁判 | agent | 门槛 | 满足题目 | 题目要求平均 | 质量平均 | 胜/负/平 | Elo(95% 区间) |
|---|---|---|---|---|---|---|---|
| Doubao | Claude Code + Opus 5.5(effort medium) | 30/30 | 28 | 0.978 | 0.929 | 34/7/19 | 1128(1081–1191) |
| Doubao | Codex + GPT-6.1-sol(effort medium) | 30/30 | 27 | 0.975 | 0.947 | 29/13/18 | 1077(1019–1140) |
| Doubao | Claude Code + Sonnet 5(effort medium) | 28/30 | 20 | 0.855 | 0.770 | 2/45/13 | 795(718–842) |
| Gemini | Claude Code + Opus 5.5(effort medium) | 30/30 | 28 | 0.983 | 0.826 | 30/15/15 | 1086(1036–1141) |
| Gemini | Codex + GPT-6.1-sol(effort medium) | 30/30 | 29 | 0.992 | 0.871 | 41/6/13 | 1187(1134–1262) |
| Gemini | Claude Code + Sonnet 5(effort medium) | 28/30 | 23 | 0.904 | 0.620 | 0/50/10 | 726(636–788) |
out/final.png;dev-013 重跑差得很多(PSNR 21.6 dB),不是渲染噪声,是代码复现不出自己的图。再加两组,同样 30 题、正常运行档、effort medium:Claude Code + Opus 4.8(runs/opus48/)和 Claude Code + Fable 5.1(runs/fable51/),两组并行跑。两两比较补齐到 5 个 agent 两两之间都比过(每对 30 题 × 两种顺序 × 两个裁判,共 600 组)。
| 裁判 | agent | 门槛 | 满足题目 | 质量平均 | 胜/负/平 | Elo(95% 区间) |
|---|---|---|---|---|---|---|
| Doubao | Claude Code + Opus 5.5(effort medium) | 30/30 | 28 | 0.929 | 77/9/34 | 1208(1169–1264) |
| Doubao | Codex + GPT-6.1-sol(effort medium) | 30/30 | 27 | 0.947 | 66/16/38 | 1150(1110–1200) |
| Doubao | Claude Code + Fable 5.1(effort medium) | 30/30 | 27 | 0.898 | 48/31/41 | 1052(1013–1096) |
| Doubao | Claude Code + Opus 4.8(effort medium) | 28/30 | 19 | 0.803 | 12/78/30 | 800(750–842) |
| Doubao | Claude Code + Sonnet 5(effort medium) | 28/30 | 20 | 0.770 | 8/77/35 | 789(731–841) |
| Gemini | Codex + GPT-6.1-sol(effort medium) | 30/30 | 29 | 0.871 | 86/10/24 | 1257(1202–1319) |
| Gemini | Claude Code + Opus 5.5(effort medium) | 30/30 | 28 | 0.826 | 70/23/27 | 1158(1105–1216) |
| Gemini | Claude Code + Fable 5.1(effort medium) | 30/30 | 29 | 0.772 | 60/37/23 | 1082(1029–1136) |
| Gemini | Claude Code + Opus 4.8(effort medium) | 28/30 | 27 | 0.697 | 21/73/26 | 837(786–878) |
| Gemini | Claude Code + Sonnet 5(effort medium) | 28/30 | 23 | 0.620 | 3/97/20 | 667(592–736) |
out/final.png 和 run.sh;dev-072 重跑差得多,PSNR 25.5 dB);Fable 5.1 全过。