RL 环境的判分器测试
falsepass 用环境自己的奖励代码,给一批事先已知对错的回答打分,然后报告每一处不一致:错的回答拿了分,对的回答没拿到分。不需要模型,不需要跑训练,也不需要 GPU。
uvx --from git+https://github.com/Super-Eric/falsepass falsepass demo| 回答 | 得分 | 应得 | |
|---|---|---|---|
| #### 42 | 1.0 | 1.0 | 正常 |
| The answer is definitely not 42. | 1.0 | 0 | 假通过 |
| \boxed{42 \text{ is wrong}} | 1.0 | 0 | 假通过 |
| A B C D E F G H I J | 1.0 | 0 | 假通过 |
| #### 42. | 0.0 | 1.0 | 假失败 |
| (空) | 0.0 | 0 | 正常 |
判分器就是一条断言。测试它的方法和测试任何一条别人写的断言一样:喂给它正确结论已知的输入。
Hub 上的环境、本地文件夹、Inspect AI 任务或 HUD 环境都可以。每个环境装在自己的临时虚拟环境里,版本按它构建时的依赖锁定。
falsepass init owner/environment
标准答案及其无害变体;空回答、复述题目、列出所有选项、否定答案、格式完美的错答;格式损坏的输出;重复打分。另有变异搜索和对奖励代码的静态扫描。
falsepass audit environment --search 120
每个失败的探测都能生成一个独立复现脚本,只依赖环境自己的包。改好判分器后重跑,可以看到具体哪些行变了。
falsepass repro environment --probe P5
在几十个公开的 RL 环境上跑下来,同样几类判分缺陷在不同作者的环境里一再出现。
开放式任务按关键词给分。一段跟任何题都无关的通用文本,对所有题都提交,得分反而超过数据集自带的参考答案。
return df # dropna fillna astype …格式分和推理分从不检查答案,错误答案也能拿到满分的三分之一左右。
<think>…</think> \boxed{B} (错)多一个句号就得零分;连答案标记都没有的否定句却拿满分。
The answer is definitely not 42.本来为单位设计的规范化步骤会丢掉数字后面的文字,等式也只比较了一边。
\boxed{13 = 12}某个奖励项每次调用都报错,被框架捕获、记日志、记 0 分,跑出来的数字看起来一切正常。
NameError: name 're' is not defined游戏结束后环境还在回话,奖励又会重读每条消息,于是一直说话的人得分最高。
That was a great game!falsepass demo 审计一个玩具环境:只要答案出现在回复里任何位置就给分。静态扫描指出了那一行,三个探测从不同方向确认了它。

已发布的或还在本地文件夹里的都可以。每个框架都走它自己的代码路径,测到的就是判分器真实运行时的行为。
环境自己的 rubric 或 taskset,三代接口都支持,单轮、多轮,以及按脚本调用工具的策略。
任务自己的 solver 链,用按脚本回答的替身代替 generate(),再用它自己的 scorer 打分。
按 HUD 服务器的方式调用任务模板的判分代码。没有参考答案时跑不需要答案的探测。
GitHub Action 会在错误答案拿到分时让构建失败,并把探测结果表放进任务摘要。
# .github/workflows/falsepass.yml on: [push, pull_request] jobs: falsepass: runs-on: ubuntu-latest steps: - uses: actions/checkout@v5 - uses: Super-Eric/falsepass@main with: path: . fail-on: "ceiling>0.1 errors>0"
所有命令都不需要交互,都有机器可读的输出。编程代理可以独立跑完一次审计,交给你的是已经复现过的线索。
scan、init、audit、results、repro、discover 都作为工具提供,任何 MCP 客户端都能用。
完整的审计流程,包括怎么区分缺陷和有意的设计。
大小适合放进上下文窗口的结果摘要、CI 门槛,以及文档的 llms.txt。
$ claude mcp add falsepass -- uvx --from \ "falsepass[mcp] @ git+https://github.com/Super-Eric/falsepass" \ falsepass mcp › 审计 owner/environment 的判分器 falsepass_init owner/environment falsepass_audit environment n=25 false_pass_ceiling 1.0 via P5 shotgun/all_in_one_slot falsepass_repro environment probe=["P5"] … 复现两次,读奖励代码, 报告出问题的那一行和修改建议
示意会话。其他 MCP 客户端用法相同:其他客户端的配置(英文)→
给的是线索,不是结论。探测失败只说明值得去读奖励代码。一个发现要成立,需要两次输出完全一致的复现、找到出问题的那一行,并核实它影响了多少真实任务。题目要求的严格格式、为研究奖励作弊而故意留的漏洞,都不算缺陷。
已在几十个公开环境上使用过。修复先以小的 pull request 交给维护者。