为什么这些测试被排除计分?ProgramBench 的7类测试忽略原因(gold_fail/dummy_pass)完整新手解析 【免费下载链接】ProgramBenchCan Language Models Rebuild Programs From Scratch?项目地址https://gitcode.com/gh_mirrors/pr/ProgramBench点击查看免费下载ProgramBench 是一个评测 AI 语言模型能否从零重建开源程序的黑盒基准AI 只拿到编译好的二进制文件和文档却要重写出一整套能复现原行为的代码。但不少新手会发现某些测试不计入总分——它们被标记为gold_fail、dummy_pass等忽略原因。这篇新手解析带你一次性看懂7 类测试忽略原因分别意味着什么以及被排除计分的记录藏在哪里。一、先用 30 秒看懂 ProgramBench 的评分流程 要理解为什么排除计分先要理解 ProgramBench 怎么打分准备阶段把一个开源 CLI 工具多为 Rust/Go 项目编译进 Docker 镜像并删掉源码重建阶段AI Agent 只能与编译好的二进制交互从零重新实现整个程序评分阶段用一组行为测试behavioral tests自动对比重建版与原程序的行为。其中有一个关键角色gold solution参考标准解即原始程序本身。一套测试要计入评分前提是它对标准答案稳定通过、且对假答案能暴露问题。一旦某个测试不满足这两条它就会被记录忽略、排除计分。官方对忽略规则的完整说明见 CLAUDE.md每个被排除的测试都带有reasons[].id用于解释为什么。二、7 类测试忽略原因一览表建议先收藏忽略原因 ID一句话解释大白话gold_fail测试在标准答案上确定性地失败标准答案自己都不及格这题本身有毛病gold_flaky测试在标准答案上时过时不过答案没问题但这题抽风dummy_pass空壳程序也能通过的测试随便交个空盒子都能得满分这题没区分度outcome_dependent_presence测试在某些评测运行中时有时无这题看心情出场没法稳定计分slow_or_hang测试卡住或超过时长阈值跑到一半就死等拖垮整场评测dependency_ignored测试依赖了另一个被忽略的测试前置题被作废这道连坐跳过ignored_manual被人工手动排除维护者人工判定不计分记住一条总原则所有被忽略的测试无论原因都会从评分中剔除id只是给你看的诊断标签informational仅供参考。三、逐个拆解每类忽略原因到底在说什么1. gold_fail —— 标准答案都过不了测试本身有缺陷如果一个测试在 gold solution原始程序上每次运行都失败说明它不是难而是坏确定性失败的测试区分不了任何实现只会被剔除。gold_fail还覆盖一类隐性坏题——golden output 漂移golden-output driftgold 二进制本身没问题但当初录制的标准输出已经过期比如相对构建工具链不可复现、内嵌了构建时间戳build-stamp、或依赖了外部资源。重放时对不上标准答案照样挂。仓库中的真实例子canop__broot.d6c798e/tests.json 里的test_send_option_with_socket就是被gold_fail排除的。2. gold_flaky —— 标准答案时过时不过gold_flaky表示测试在标准答案上非确定性有的运行通过有的运行失败。典型来源是计时竞态、网络抖动、TUI 界面快照漂移这类 flake偶发不稳定而不是真缺陷。注意它和gold_fail的区别gold_fail是每次必挂gold_flaky是看运气。两者都会被排除但语义完全不同。3. dummy_pass —— 空壳程序也能通过毫无区分度 ⚠️这是新手最容易误解的一类dummy_pass表示一个极简的dummy空壳可执行文件也能通过该测试。想象一场考试随便交一张白纸也能拿满分——这道题就失去了筛选能力。对 ProgramBench 来说测试必须能把真实现和桩stub区分开空壳都能过的题对重建质量毫无贡献因此排除计分。真实例子见 canop__broot.d6c798e/tests.jsontest_write_default_conf_idempotent被标记为dummy_pass记录里还带了标注时间戳和标注者timestamp、user字段说明该忽略是由维护者人工确认的。4. outcome_dependent_presence —— 测试时有时无这类测试在某些评测运行中出现、另一些运行中不出现presence 取决于运行结果。计分的分母忽大忽小题目本身不可靠只能整体剔除。5. slow_or_hang —— 卡死或超时测试在调用中途**挂起hang**或超过时长阈值。一个卡死的测试会拖垮整场评测因此直接被排除。6. dependency_ignored —— 被连坐的依赖测试如果某条被保留的测试通过pytest.mark.dependency(depends[X])依赖于一个已被忽略的测试X会发生什么X在收集阶段就被剔除pytest-dependency会把依赖它的测试直接跳过——结果它会以未解决计入成绩但这不是提交者的错。所以这类测试同样被标记忽略且原因的note字段会记录前置条件形如depends on ignored test X。7. ignored_manual —— 人工排除最后一条最简单维护者手动判定某测试不计分比如人工复查后发现测试写法有误。前面dummy_pass例子中带user字段的记录就是人工标注的痕迹。四、新手实操去哪里查某条测试为什么被忽略所有忽略记录都以结构化 JSON 形式落在每个任务的tests.json里路径结构是src/programbench/data/tasks/owner__repo/hash/tests.json其中关键节点是branches.分支hash.ignored_tests[]每条记录长这样{ name: eval.tests.test_cmd_execution.test_cmd_quit, reasons: [ { id: dummy_pass } ] }name被忽略的测试全名reasons[].id上文 7 类原因之一一条测试可以带多个原因可选的note、timestamp、user补充人工判定信息。任务的基本信息仓库、commit、语言、难度则在同目录的 task.yaml 中例如 canop__broot.d6c798e/task.yaml 标明了这是hard难度的 Rust 项目。代码侧的读取逻辑也很直白load_data.py 中的get_ignored_tests()会遍历所有分支把{branch}/{测试名}收集成集合随后 eval.py 的without_ignored()在计算成绩时把这些测试从结果中剔除。五、被排除计分的测试还会运行吗会影响分数吗这是新手最关心的问题答案分两层会不会影响分数不会。被忽略的测试从期望通过的集合和实际结果集合中同时剔除所以分母分子都不含它榜单分数不受影响标签的作用是什么纯粹是诊断信息。它告诉你这个任务里哪些题被作废、为什么作废方便维护者后续修复或复核。顺带一提评测产物本身也公开可查test_runs/correct 与 test_runs/incorrect 下各有一份示例提交和对应的.eval.json里面逐条记录了每个测试的statuspassed/not_run等可以对照 calculator 任务的评测测试 理解一条测试在评测中如何被判定。官方使用指南 docs/README.md 也明确提示由于存在非确定性的分支与测试计算最终分数时建议直接使用programbench info的结果。六、新手常见疑问 FAQ ❓Q1剔除测试后分数还会公平吗会。剔除的对象是对标准答案都不可靠的题它们无论算给谁都构成噪声。ProgramBench 保留的正是能稳定区分实现好坏的测试。Q2看到gold_fail是不是说明 AI 写错了不是。gold_fail说的是原始程序本身都过不了这道题与任何提交无关。它指向的是测试缺陷或标准输出漂移。Q3gold_flaky和gold_fail我该按什么标准记记住一个词就够了fail 每次必挂确定性flaky 看运气非确定性。Q4怎么快速确认某个任务有哪些测试被排除打开该任务目录下的tests.json看branches下每个分支的ignored_tests数组即可例如 sharkdp__bat.f822bd0/tests.json。写在最后gold_fail、gold_flaky、dummy_pass、outcome_dependent_presence、slow_or_hang、dependency_ignored、ignored_manual——这 7 个标签本质上是 ProgramBench 的质检记录一道题只有既考得倒假答案、又稳定放得行真答案才有资格进入计分。理解了这套排除机制你再看榜单分数和任务数据时就不会被个别失败的测试名误导了。赞分享【免费下载链接】ProgramBenchCan Language Models Rebuild Programs From Scratch?项目地址https://gitcode.com/gh_mirrors/pr/ProgramBench点击查看免费下载相关推荐agent-skills 全流程指南24 个工程技能带 AI 编码代理从想法走到上线agent skills 全流程指南24 个工程技能带 AI 编码代理从想法走到上线 agent skills 是一个面向 AI 编码代理的工程技能包用 2AI 技能AI 评测AI 插件开发工具PMSuperButton阴影效果深度教程提升iOS应用UI层次感的秘诀PMSuperButton阴影效果深度教程提升iOS应用UI层次感的秘诀 在iOS应用开发中按钮作为用户交互的核心元素其视觉效果直接影响整体UI质感。 PTypeDoc import 标签解析指南为什么它被识别却总被忽略TypeDoc import 标签解析指南为什么它被识别却总被忽略 TypeDoc 将 import 注册为内置的块标签Block Tag但其核心行嵌入式智能硬件上一篇Angular Flex-Layout与第三方UI库集成终极指南打造完美响应式界面下一篇OPAL策略包管理终极指南Bundle API与版本控制完整解析创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考