自报分 vs 复现分:BenchHub 为什么存在,以及如何十分钟复现一个 benchmark
大多数 benchmark 分数由训练模型的厂商自己测得。本文介绍 BenchHub 注册表的内容,从搜索到推送的 ltb CLI 分步教程,以及目前数据的真实局限。
发布会上看到的 benchmark 分数,大多是训练模型的公司自己测的:用它选的评测框架,有时还是它选的子集。这不算丑闻,只是一个数据点。 BenchHub 要做的,是在旁边放上第二个、第三个数据点,并且让产出一个数据点足够便宜,任何有 coding agent 订阅的人都能做。
自报、独立、复现
注册表里的每条分数都带有三种标签之一,以及来源链接:
- 自报(Self-reported):模型厂商在 model card、博客或技术报告中公布的分数。
- 独立(Independent):第三方测得,例如 benchmark 官方榜单或评测机构。
- 复现(Reproduced):用户用
ltbCLI 推送的运行结果,按模型、benchmark 与评测框架聚合为中位数和运行次数。
目前注册表中有 489 条自报分数、5,550 条独立分数,其中 156 个“模型 × benchmark”组合两者都有。真正薄弱的是复现这一列:Oct 13, 2026 的快照里只有 0 条复现分数。这篇文章就是想补上这个缺口。
注册表里有什么
- 6,820
- 收录的 benchmark
- 718
- 可用 Harbor 运行
- 386
- 已核验记录
- 6,039
- 条分数,每条带来源链接
每个 benchmark 都有独立页面:论文、数据集、许可证、指标、样本数、能力维度,以及所有已知分数。其中 718 个现在就能被 CLI 转换为 Harbor 任务:要么通过自动生成的适配器(从 Hugging Face 拉取数据行,一行一个任务),要么 benchmark 本身就提供 Harbor 任务。 可以在目录中浏览,或在榜单查看模型 × benchmark 热力图。
大约十分钟复现一个 benchmark
下面以 MMLU-Pro 为例:它的许可证允许再分发,所以生成的任务带参考答案,oracle 自检可以跑通。在 Docker 已启动的机器上,20 个任务的首轮运行大约十分钟,大部分时间花在你的 agent 上。样本越大,耗时按比例增加。
0. 安装
需要 Node.js 20 及以上、Docker,以及 Harbor(一个 Python 工具,用 uv 安装)。
$ npm i -g lettokenburn-cli$ uv tool install harbor$ ltb --version && harbor --version && docker info > /dev/null && echo ready
1. 发现
search 和 info 读取公开的静态注册表,不需要账号。info 会打印该 benchmark 的基本信息、许可证、已知最高分以及具体命令。
$ ltb bench search mmlu$ ltb bench search --axis coding --harbor-only --limit 10$ ltb bench info mmlu-pro
2. 拉取
pull 以确定性方式抽样(相同的 --seed 得到相同的行),每行生成一个 Harbor 任务目录:说明、Dockerfile、校验器,以及在许可证允许时的参考答案。
$ ltb bench pull mmlu-pro --n 20# -> ./mmlu-pro/<slug>-<row>/ task.toml instruction.md environment/ tests/ solution/
3. 用 oracle 自检
花 token 之前,先跑 oracle agent。它会对每个任务套用参考答案,理应得 100 分。如果不是,问题出在任务打包上,你发现的是一个值得反馈的 bug,而不是模型的弱点。
$ ltb bench run ./mmlu-pro -a oracle# expected: score 100. Anything lower means the packaging is broken, not the model.
4. 用真实 agent 运行
然后让 Harbor 调用你已经付费的 agent 和模型。支持 Claude Code、Codex、OpenHands、Terminus 等,模型通过 -m 传入。你的密钥和订阅始终留在你自己的机器上。
$ ltb bench run ./mmlu-pro -a claude-code -m anthropic/claude-opus-4-8 -n 4
任务结束后,CLI 会写出 ltb-run-summary.json:分数(平均 reward × 100)、任务数、尝试次数、每个任务的 reward、Harbor 与 CLI 版本,以及结果文件的 SHA-256。
5. 推送
$ ltb bench push ./jobs --notes "first pass, 20 tasks, seed 7"
只上传这份摘要,不上传对话记录和模型输出。允许匿名推送;使用个人主页生成的 API key 推送,运行会记在你名下。命令会打印运行页面链接, 该运行随即进入这个模型与 benchmark 的“复现”列。
坦白说,目前的局限
- 1元数据是自动采集的。benchmark 记录来自 12 个公开渠道(论文索引、Hugging Face、GitHub、评测框架与榜单),再由 LLM 审核员检查。许可证、样本数、发布日期等字段可能缺失或有误。
- 2质量等级告诉你该信多少。每条记录标为 Verified(人工审核过,或多个独立渠道确认且基本完整)、Auto(由审核员自动发布,较完整)或 Incomplete,页面会列出缺失项。目前 6,820 条记录中只有 386 条是 Verified。
- 3社区复现才刚开始。复现列几乎是空的,所以每一次运行都有价值。
- 4分数一定带来源。缺失的格子从不估算。如果某个分数与来源不符,请发邮件到 [email protected],附上 benchmark、模型、数值和链接。
为什么是订阅,为什么是现在
包月的 coding agent 套餐不管用没用,每个周期都会归零。拿出一部分额度做一次复现,就会产生一个此前不存在的、带来源的公开数据点。 这是闲置 token 能做的最有用的事,也是这个网站叫 LetTokenBurn 的原因。
用你自己的订阅复现一个 benchmark
挑一个已核验的 benchmark,用 ltb CLI 和 Harbor 在本地运行,把分数推送到自报分旁边。
Also available in English