Code2Pixel

阶段 4:VLM 裁判(进行中)

更新于 2026-10-03。

spec(2026-10-02 和用户对齐)

做了什么

文件 作用
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 汇总一致率:裁判自洽、两个裁判之间、裁判和人、人和人、两两比较

实跑结果(60 次)

裁判本身的检验

复现规则改了

发现的问题

  1. 细则太容易满分。
    • 细则大多只核对”有没有”(四个人、木桌、冒热气),一张干净的扁平插画就能全部满足。dev-046 一家四口吃饭这道”难”题,Claude 3 分钟画完,两个裁判都给满分;我看图也同意每条都成立。
    • 这说明问题在细则,不在裁判宽松。要拉开差距,有几条路:细则里加质量和写实程度的说法(”人物的手和脸结构正确”“看起来像照片”);把两两比较当主分;或者让裁判对每条打”做得多好”。
  2. 两两比较的结论取决于裁判。 人工标注出来之前,不能拿两两比较排名。
  3. 数数时裁判偶尔数错。 两遍判一次就发现了 2 例。数量、文字这类题可以多判几遍取多数,或者用程序检查(代码里能直接数)。
  4. 精确修改题的底稿路径写错过一次。 extra_info.edit_base 已经带了 edit_bases/ 前缀,judge.py、pairwise.py、label_export.py 又拼了一次,修改题的判分一开始全失败。已修,修改题已重新判完。

改成”细则当门槛、两两比较当主分”,并加质量细则(2026-10-03)

用户定按”问题 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,看分数会不会跟着降。

删没区分度的质量细则:先删后全部恢复(2026-10-03)

区分度验证:加 Claude Code + Sonnet 5(2026-10-03)

同样 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)

五个 agent 一起比(2026-10-03)

再加两组,同样 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)

成本

还没做