Benchmark · 更新于 2026-09-30
我们怎么测 Orbi 的 harness
八个 Orbi 没见过的真实 bug,issue 都只给一个窄例子。原版 harness 12 次挂了 4 次,常开的回归防护 10 次过 9 次。普通 bug 上防护什么也换不来,token 却多花一倍左右,所以它该做成按仓库的开关,默认关。只在文本处理类改动上启用防护的分类器省了约 10%,效果还更差;只加强评审或先把工单写细,都补不上这个缺口。
窄例子 bug8 个没见过的,维护者的测试
Orbi 做错过的 bug3 个调参 issue
普通 bug9 个没见过的,每次中位数
研究
harness 研究,边做边公开
模型在变,harness 也得跟着变。这里每次研究都重跑 Orbi 真实的交付流程,数字和脚本全部公开,下一次从上一次的结果接着做。
- 2026-09上篇:我们的评审漏掉了什么
两个过了评审、却改坏了别的东西的修复。我们搭了一套带校准隐藏评分器的 benchmark,一条规则一条规则重写 harness,对比了五个模型;在十二个没见过的 bug 上,更强的 harness 只添了成本。
- 2026-09下篇:回归防护值不值它的 token
八个和 Orbi 翻车同类的新 bug,五种 harness 设计各自换来什么、花了多少,以及最后为什么选了最简单的那个。
- 数据orbi-build/orbi-bench
任务、评分器、每一版 harness、跑和打分的脚本,以及每次运行的结果。
窄例子 bug
原版在哪里栽跟头
八个 2026 年 8 月 10 日之后合并的真实修复,都是 Python、Go、JavaScript 的小库。每个 issue 只给一两个例子,维护者的测试覆盖更宽的一类输入;只照例子写的修法,例子能过,这些测试过不了。Orbi 只看得到 issue 原有的例子。
五种 harness
试过的更省钱的设计
都在三个 Orbi 原本做错的 issue 上测。只加强评审,3 个过 1 个:评审 prompt 里写全了回归排查,两个回归照样放过。全部 183 次运行里,被隐藏评分器判失败的每一次都通过了 Orbi 的评审。先让便宜模型复现 bug、把工单写细,3 个过 2 个。只在文本处理类改动上启用回归防护,3 个全过,可普通 bug 上只比常开防护省约 10% 的 token,picomatch 上还挂了,常开版却过了。所以我们放弃门控,改用按仓库的开关。
没见过的 bug
九个 Orbi 从没见过的 bug
都是 2026 年 8 月 10 日之后在上游合并的真实修复,Go、TypeScript、Python 各三个。隐藏评分器就是维护者随修复一起写的测试。Orbi 看到的工单经过改写,没有链接、编号,也没有修法提示。
容易改出回归的 bug
第一次真实修复就改坏过东西的 bug
三个真实 bug,上游第一次修复合并之后才发现改坏了别的东西:numpy(改坏了 ndarray 子类)、OpenTelemetry Collector(让 timeout 基本失效)、aiohttp(PONG 之后拒收合法的压缩帧)。工单只描述原始 bug,评分器两样都测。两套 harness 跑完的每一次都通过了;v15 一次也没跑完 numpy(三次都因内存被杀)。人第一次修时犯的错,这个 agent 并不会犯。
调参集
更强的 harness 是怎么来的
三个 Orbi 合并过回归的 issue(pyinfra、chainloop、fedify)。我们一次改一条规则,所有 harness 版本加起来把流程跑了 108 次。这组数字是训练集成绩:harness 在这三个 issue 上调参,又在同样三个 issue 上打分。
方法
每次运行怎么打分
- 1真实流程,私有快照。
每次运行有一份自己的私有仓库,停在修复之前的 commit。原样的 Orbi runner 认领 issue、实现、开 PR、评审、修改、合并。
- 2隐藏的、校准过的评分器。
任何一次运行计分之前,评分器必须在修复前的代码上判失败、在已知正确的修复上判通过。容易改出回归的题,还得在上游第一次修复上判失败。评分时顺带跑仓库自带的 lint、类型检查和全量测试。
- 3碰不到答案。
留出集的运行给
gh和git套了一层包装,只放行这次运行自己的仓库,agent 查不到上游的修复。快照保留了被忽略却被跟踪的文件,也带上了 submodule 的内容。
局限
这些数字说明不了什么
- n样本小,没有置信区间。
窄例子 bug 八个,普通 bug 九个,容易改出回归的三个,调参 issue 三个。多数格子只有 1 到 3 次。
- 模型只测了一个实现模型。
没见过的 bug 上,写修复的都是
deepseek-flash。其他模型只在调参集上试过。 - 生产生产上的 Orbi 仍是原版 harness。
计划把常开防护做成按仓库的开关,默认关。之前的按需触发版在我们叫停后被 Orbi 误合进主干,已在发版前 revert。
- 评分评分器只能抓到有人事先知道要测的问题。
没见过的 bug 上,这个人是上游维护者。通过只说明维护者的测试和仓库测试都过了,修复未必完美。
复跑
自己跑一遍
全部在 orbi-build/orbi-bench:任务、评分器、每一版 harness、隔离包装、打分脚本和每次运行的结果。上游的测试没有拷进仓库,tasks/heldout/fetch_hidden.sh 会从各自的修复 commit 取回。一次只跑一两个实例,单个任务就可能吃掉好几 G 内存。
完整版
每条规则、每次失败,还有我们自己测量里的每个 bug
博客里逐条讲了每次 harness 改动和促成它的那次失败、各个模型的表现,还有我们搭这套 benchmark 时犯的错。