Benchmark · 更新于 2026-09-30

我们怎么测 Orbi 的 harness

八个 Orbi 没见过的真实 bug,issue 都只给一个窄例子。原版 harness 12 次挂了 4 次,常开的回归防护 10 次过 9 次。普通 bug 上防护什么也换不来,token 却多花一倍左右,所以它该做成按仓库的开关,默认关。只在文本处理类改动上启用防护的分类器省了约 10%,效果还更差;只加强评审或先把工单写细,都补不上这个缺口。

结果 · 实现都用 deepseek-flash · 通过 / 运行

窄例子 bug8 个没见过的,维护者的测试

8/12原版 harness
9/10常开防护(v15)

Orbi 做错过的 bug3 个调参 issue

6/15原版 harness
9/9常开防护(v15)

普通 bug9 个没见过的,每次中位数

9/9常开防护(v15)
5.8Mtoken(原版 2.8M)

harness 研究,边做边公开

模型在变,harness 也得跟着变。这里每次研究都重跑 Orbi 真实的交付流程,数字和脚本全部公开,下一次从上一次的结果接着做。

原版在哪里栽跟头

八个 2026 年 8 月 10 日之后合并的真实修复,都是 Python、Go、JavaScript 的小库。每个 issue 只给一两个例子,维护者的测试覆盖更宽的一类输入;只照例子写的修法,例子能过,这些测试过不了。Orbi 只看得到 issue 原有的例子。

八个 issue 只给窄例子的 bug。原版 harness 12 次过 8 次,dateparser 和 picomatch 各挂 2 次;常开防护 10 次过 9 次;按需触发 8 次过 7 次。
dateparser 和 picomatch 在原版上各跑了 3 次,都挂了 2 次。

试过的更省钱的设计

都在三个 Orbi 原本做错的 issue 上测。只加强评审,3 个过 1 个:评审 prompt 里写全了回归排查,两个回归照样放过。全部 183 次运行里,被隐藏评分器判失败的每一次都通过了 Orbi 的评审。先让便宜模型复现 bug、把工单写细,3 个过 2 个。只在文本处理类改动上启用回归防护,3 个全过,可普通 bug 上只比常开防护省约 10% 的 token,picomatch 上还挂了,常开版却过了。所以我们放弃门控,改用按仓库的开关。

五种 harness 在三个 Orbi 做错过的 issue 上:原版 15 次过 6 次,只加强评审 3 次过 1 次,先充实工单 3 次过 2 次,按需触发 3 次全过,常开防护 9 次全过。
柱下是每次运行 token 中位数(百万)。浅色柱不到 5 次。

九个 Orbi 从没见过的 bug

都是 2026 年 8 月 10 日之后在上游合并的真实修复,Go、TypeScript、Python 各三个。隐藏评分器就是维护者随修复一起写的测试。Orbi 看到的工单经过改写,没有链接、编号,也没有修法提示。

九个没见过的 issue 上,原版 harness、v15、v15 加 sol 评审三组的结果,全部通过。
九个 issue、三种组合、27 次,全部通过。
原版与 v15 每次运行的 token 和耗时中位数。没见过的 issue 上 v15 用了 580 万 token,原版 280 万;耗时 16 分钟对 11 分钟。
更强的 harness 多花了多少。token 含缓存读取,约占 97%。

第一次真实修复就改坏过东西的 bug

三个真实 bug,上游第一次修复合并之后才发现改坏了别的东西:numpy(改坏了 ndarray 子类)、OpenTelemetry Collector(让 timeout 基本失效)、aiohttp(PONG 之后拒收合法的压缩帧)。工单只描述原始 bug,评分器两样都测。两套 harness 跑完的每一次都通过了;v15 一次也没跑完 numpy(三次都因内存被杀)。人第一次修时犯的错,这个 agent 并不会犯。

三个容易改出回归的 bug:原版 harness 4 次全过,v15 3 次全过;v15 一次也没跑完 numpy。

更强的 harness 是怎么来的

三个 Orbi 合并过回归的 issue(pyinfra、chainloop、fedify)。我们一次改一条规则,所有 harness 版本加起来把流程跑了 108 次。这组数字是训练集成绩:harness 在这三个 issue 上调参,又在同样三个 issue 上打分。

三个调参 issue 上,实现和评审都用 deepseek-flash 时各 harness 版本的通过率:v0 6/15,到 v15 9/9。
全程同一个模型,三个调参 issue。浅色柱不到 5 次。
调参 issue 上 harness 版本与模型组合的网格,非 deepseek 的格子大多只有 2 到 4 次。
调参 issue 上的 harness 版本 × 实现 / 评审模型。其他列当线索看。

每次运行怎么打分

每次运行:私有快照仓库交给真实的 Orbi runner,再由隐藏评分器打分。评分器事先校准。

这些数字说明不了什么

自己跑一遍

全部在 orbi-build/orbi-bench:任务、评分器、每一版 harness、隔离包装、打分脚本和每次运行的结果。上游的测试没有拷进仓库,tasks/heldout/fetch_hidden.sh 会从各自的修复 commit 取回。一次只跑一两个实例,单个任务就可能吃掉好几 G 内存。

每条规则、每次失败,还有我们自己测量里的每个 bug

博客里逐条讲了每次 harness 改动和促成它的那次失败、各个模型的表现,还有我们搭这套 benchmark 时犯的错。