为什么我把 benchmark 拆分到单独的 repo(以及为什么每个带 benchmark 的 dev tool 都应该这么做)

发布: (2026年5月6日 GMT+8 03:46)
7 分钟阅读
原文: Dev.to

Source: Dev.to

请提供您想要翻译的完整文本内容,我将按照要求保留源链接、格式和代码块,仅翻译正文部分为简体中文。

Benchmark — Why I moved it out of the tool repo

This week I shipped a benchmark for code‑intelligence MCP servers and posted the results — including the cases where my own tool lost. Within 36 hours, the maintainer of one of the competing tools (jcodemunch‑mcp) shipped three updates.

That whole loop — competing maintainers iterating on the same eval, in opposite directions, in 36 hours — is what a public benchmark is supposed to do. It almost never does, and I think most of the time it’s because the benchmark lives in the wrong place.

基准测试 — 为什么我把它移出工具仓库

本周,我发布了一个针对 code‑intelligence MCP 服务器 的基准测试并公布了结果——包括我的工具失利的情况。在 36 小时内,竞争工具 (jcodemunch‑mcp) 的维护者发布了三次更新。

整个循环——竞争的维护者在同一评估上朝相反方向迭代,耗时 36 小时——正是公共基准测试应有的作用。它几乎从未实现,我认为大多数情况下是因为基准测试位于 错误的位置

新仓库

GitHub:

内容概览

文件 / 目录描述
README标题 90‑task results 表格 — 替代 “去阅读博客”。
METHODOLOGY.md测量了什么,未测量什么,以及为何选择这些特定数据集(Express、Lodash、项目自己的 monorepo)。
CONTRIBUTING.md三种贡献路径:
1. 提交基准。
2. 质疑方法论。
3. 添加数据集。
tasks/只读参考,镜像真实的种子文件。
runtime(在主 monorepo 中)实际的基准执行——与展示仓库分离。

为什么单独的基准仓库很重要

  1. 关注点分离 – 当基准与它所衡量的工具位于同一个仓库时,读者会看到评估代码与工具代码混在一起。他们难以把“评估方法论可靠”与“编写评估的工具也为自己制定了有利的评分规则”区分开来。

  2. 独立的可信度 – 基准需要拥有自己的提交历史、自己的 PR,以及独立于产品的信任信号。

  3. 低摩擦的贡献 – 如果竞争维护者想要对方法论提出异议(例如,“你的任务‑3 预期输出是错误的,因为我的工具返回的是 Y,而不是 X”),他们不应当必须去 fork 整个产品仓库、在深层目录中寻找目标文件,并把 5 行修改隐藏在产品源码中。

独立的基准仓库 让竞争者能够:

  • fork 产品仓库的情况下提交方法论问题。
  • 作为 PR 向专用的基准仓库提交基线实现。
  • 将其工具的分数随时间进行追踪,作为一等重要的关注点。

这正是 MLPerf 不属于任何单一机器学习框架仓库,以及 TPC 基准不属于任何数据库厂商仓库的原因——评估必须能够在不同实现之间迁移,而迁移性要求它独立存在。

Issues I opened on day 1 to seed the repo’s surface

#IssueRationale
1Add Python codebase as 4th dataset当前的 3‑数据集矩阵覆盖 TypeScript、JavaScript CommonJS 和 JavaScript 单体 IIFE。没有 Python——一个明显的缺口。任何深耕 Python 生态系统的人都可以接手。
2Open invitation to GitNexus’s maintainer to refresh their baselineGitNexus 自原始基线集成编写以来已经发布了多个版本。公开邀请可确保基准反映最新版本,而不是快照。
3Open invitation to jcodemunch’s maintainer to refresh against v1.80.9v1.80.9 添加了 _meta.modemax_resultsfile_pattern 参数,而当前基线并未利用这些参数。

The bench‑as‑feedback‑loop only works if competitors can engage cleanly. Those three issues operationalize that.

让基准测试发挥作用的三项具体措施

  1. 将基准测试迁出你的工具仓库
    它可以是一个同级仓库(yourname/yourname-bench),也可以是独立的组织层级仓库,或是像 MLPerf 这样的社区所有仓库。具体结构不如评估拥有独立空间这一点重要。

  2. 公开你的失利点
    每个基准测试都有一个“诚实区”——即被其他方案击败的那一部分。要显著记录这些失利。原因有二:

    • (a) 这是竞争者关注的可信度信号。
    • (b) 它表明基准测试并非挑选有利于自己工具的结果。
  3. 邀请竞争对手的维护者提交基线
    可以私下或公开进行。 如果他们拒绝,你就可以掌控信任叙事(“基准是开放的,下面是如何与之争论”)。如果他们参与,基准就会成为社区的计分板。

前两项措施很容易实现。第三项虽然让人不适,但至关重要——基准‑反馈‑循环模式需要这三项全部生效,而第三项是唯一在结构上难以伪造的。

链接

  • Benchmark 仓库:
  • 原始基准 + 激发衍生项目的 bench‑loop 故事:

如果您维护一个随工具发布基准的项目,考虑将其提取到独立的仓库并遵循上述模式。这将使评估更可信、更具协作性,最终对所有人更有用。

I am a code‑intelligence tool and want to argue with the methodology.  
Issue #2 / #3 on the new repo are the cleanest way in.
0 浏览
Back to Blog

相关文章

阅读更多 »