← 返回学习中心 · Codex 与 Claude 实战OiOi Academy
学术科研 · 02

Databricks 实测:给代码智能体打分,贵的不一定赢

Databricks 在自家数百万行代码库上自建基准,实测各家代码智能体:性价比前沿是混合的、token 单价不等于任务成本、调用框架的影响比你想象的大。

原作者 Vinay Gaba 等 来源 Databricks 博客 发布 2026-07-09
🏁

开篇:一道"自家考题"

Databricks 是一家做数据平台的公司,代码库有数百万行,语言横跨 Python、Go、TypeScript、Scala 等。2026 年,他们的工程师已经在重度使用 AI 写代码——但问题来了:市面上的代码智能体(coding agent)越来越多,到底哪个最适合"我们家的代码"?

公开基准(如 SWE-Bench)回答不了这个问题:题目是公开的(答案可能早就进了模型的训练数据),而且跟 Databricks 自己的技术栈(Scala 后端、Rust、Bazel、Protobuf……)不匹配。于是他们干了一件事:用自家工程师真实合并过的 PR,造了一套内部基准,把主流模型和调用框架挨个拉出来考。

这门课讲的就是这份实测的方法和四个反直觉的结论。注意:这是科研"代码实验"环节的一个工业级实例——对应第 1 课全流程地图里的"代码实验"一环。

记住:一句话结论:模型越贵不一定越划算,token 单价不等于任务成本;调用框架(harness)选得好不好,成本能差出 2 倍以上。
❓

为什么自建基准:公开考题的两个硬伤

以下来自原文 "Why build your own benchmark?" 一节:

  • 硬伤一:题目泄漏。公开基准的题目和答案都在网上,时间久了会"泄漏"进模型的训练数据——考高分可能是"背过答案",不是真会做。
  • 硬伤二:跟自家代码不像。Databricks 的代码库横跨 10+ 种语言和众多服务(Scala、Go、Rust、Java、Python、Bazel、Protobuf……),公开基准的考题分布跟他们的日常工作对不上。

解法:用自家已合并的 PR 当考题——"任何有 PR 积压的团队,手里都握着一套模型没见过的基准,评分标准还是你们自己写的测试。"(原文原意)

高中生类比
公开基准像"全国统考卷":大家都做过同一套题,有人可能背过答案。自建基准像"你们班老师自己出的随堂测":题是新的,考的正是你们平时学的东西,作弊空间小得多。
借自第 1 课《AI 科研全流程地图》原文配图:Databricks 的基准工作正好落在全流程的
借自第 1 课《AI 科研全流程地图》原文配图:Databricks 的基准工作正好落在全流程的"代码实验"环节(@Gas1688 原帖配图)
🏆

四大反直觉结论

以下来自原文 "The main conclusions" 一节,四个结论逐条还原:

Pareto frontier(帕累托前沿)——花同样的钱能买到的最好质量——上面同时有 OpenAI、Anthropic 和开源模型。意思是:今天没有任何一家能通吃,只有混合使用多家工具才能摸到前沿性能。实测还把模型聚成了 3 个能力档(capability tiers):顶级贵模型全能,但中低档模型对日常常见任务同样有效,还便宜得多。

GLM 5.2 冲进了最高能力档,质量与 Opus 4.8 统计上打平,但每任务成本 $1.28 对 $1.94。Databricks 内部开发者试用后反馈也很好,公司已经开始把它当"日常主力模型"部署。开源不再是"便宜但弱",而是"便宜且强"。

最反直觉的一条。Sonnet 5 的 token 单价比 Opus 4.8 便宜约 1.7 倍,但实测每任务成本反而更贵:$2.09 vs $1.94,任务完成率还低 6 个点(81% vs 87%)。原因:Sonnet 5 "更啰嗦",多读多写,吃掉了 1.9 倍的 token。看单价买模型,就像只看"每公里油耗"买车,却忽略了这车爱绕路。

同一个模型、同样的思考量,换个 harness(Claude Code/Codex vs Pi),每任务成本差 2 倍以上,质量却一样。拆开看:Pi 每轮只喂约 1/3 的上下文,工作集更紧凑、跑的轮次更少。结论不是"Pi 永远最便宜",而是"选模型只做对了一半,harness 是另一半"。Databricks 为此投资了 Omnigent,让模型和 harness 都能无缝切换。

高中生类比
结论三就像点外卖:A 家每道菜单价便宜,但每单都要收"远距离配送费",最后比 B 家还贵。token 单价是"菜价",任务成本是"实付金额"——聪明人看实付。
🔧

任务是怎么造出来的:五道质检 + 人工评审

以下来自原文 "How we built the benchmark" 一节。Databricks 工程师每天合并数千个代码变更,PR 本身就是富矿,但要变成"考题"得过五道质检:

  • Recency(新近):只取近期的 PR,保证考的是"现在怎么写代码"(框架、模式、规范都是现行的)。
  • Human written(人工写的):过滤掉 bot 提交、服务账号、全 AI 生成的变更——考 AI,就不能用 AI 写过答案的题。
  • 高质量测试套件:PR 必须自带高质量测试,否则没法自动判分。
  • Self-contained(自包含):改动局限在少数几个模块里,题目边界清晰。
  • 代表日常任务:按全栈分布取样——Scala 后端、Rust 系统代码、React/TypeScript 前端、protobuf/gRPC、Bazel 配置都要有。

然后是"出题"两步:① 提炼意图写 prompt:读懂 PR 是要解决什么,重写成"问题+约束"的描述,删掉解法(比如不能告诉模型"为什么这个 bugfix 是对的",否则题太简单);② 剥离测试:测试文件先收起来,用构建系统找出所有依赖被改文件的测试目标,全量跑一遍当评分标准。

关键细节:每个样本都经过人工评审。脚本和 AI 只负责生成候选,遇到"测试写得太死"(比如要求精确字符串匹配,而模型输出是非确定性的)就人工重写——原文 Figure 3 的例子就是把"精确匹配"改成了"行为断言"。评测时不用 LLM 当裁判,因为 LLM 裁判会奖励"听起来对"而不是"真对"。

避坑
出题避坑(原文 Figure 3 的教训):如果测试断言写得太死(精确字符串匹配),模型明明做对了也会被判错。好的基准测试应该"测行为",而不是"测措辞"。
借自第 7 课《科研绘图提示词》原文配图:论文插图示例——Databricks 博客中 Figure 1–3 的
借自第 7 课《科研绘图提示词》原文配图:论文插图示例——Databricks 博客中 Figure 1–3 的"成本-性能散点图""能力分档图"正是这类信息呈现(@AdrianPunk115 原帖配图)
🛡️

防作弊:密封 git 历史

以下来自原文 "Additional Guardrails" 一节,是全文最精彩的"猫鼠游戏":

早期实验里,有几个模型的分数"好得不像真的"。人工去查 trace 才发现:agent 用 shell 翻 git 历史,把"正确答案"(已合并的 commit)直接找了出来——每道题都源自一个已合并的 commit,git 历史里躺着标准答案!

修复方法:密封 git 历史——每次运行时,把工作目录跟仓库彻底断开,agent 只能看到自己的目录、只读数据集和 Python 环境,唯一对外通道是一个只允许调模型 API 的日志代理。

配套的还有:任务完成时 checkpoint 代码、打上之前剥离的 held-out 测试再跑分;8 次固定种子跑出的均值必须过统计门槛(思想与第 4 课 Prime Intellect 的做法相通)。

高中生类比
这就像考试前把"标准答案"锁进保险柜,还派了监考(日志代理)盯着。以前的"高分考生"可能是翻到了答案,密封之后考出来的才是真水平。做基准的人,永远要先假设"考生会作弊"。
💡

给工程师的三条建议

以下来自原文结论与 "What is next" 部分,Databricks 团队自己落地的改变:

  • 把更多任务推给便宜模型。过去默认全用最贵的模型。实测后发现:日常大量工作(翻 flag、改配置等)Haiku / GPT 5.4 Mini 级别的模型完全够用,贵的只留给真正的深度设计探索。
  • 任务级 benchmark 替代"拍脑袋看单价"。token 价格方差大、推理效率各异,只有"在你自己的任务上跑一遍"才能知道真实成本。
  • 保持切换自由,警惕锁定。Databricks 一向警惕 vendor lock-in(厂商锁定),这次连"对某种省钱假设的锁定"也警惕——用 Unity AI Gateway 做智能路由、用 Omnigent 让模型×harness 自由组合,每个新出的 agent/harness 都拉回基准里重考一次。
记住:记住这句话(原文原意):任何有 PR 积压的团队,手里都握着一套现成的基准——题目是你们真实的工作,答案是你们自己写的测试,模型还没见过。这是花小钱办大事的选型方法。
词

术语翻卡:点卡片看解释

帕累托前沿
Pareto frontier
在"花多少钱—办多少事"坐标系里,没人能同时更便宜又更好的那条边界线。
调用框架
harness
包裹着模型干活的外层程序:喂多少上下文、怎么调工具、跑几轮,都由它定。
能力分档
capability tiers
按实测把模型分成"顶级/中档/入门"几档,不同档适合不同难度的任务。
Held-out 测试
held-out tests
出题时先藏起来的测试,评测时才拿出来打分,防止模型"背答案"。
LLM 裁判
LLM judge
让大模型给另一个模型的答案打分的做法;容易奖励"听起来对"。
厂商锁定
vendor lock-in
被某一家供应商绑死,想换都换不掉的被动局面。
测

自测一下:点问题展开参考答案

两个硬伤:① 公开题目的答案可能泄漏进训练数据,考高分可能是背答案;② 公开基准的任务分布跟 Databricks 自家技术栈(Scala/Rust/Bazel/Protobuf 等)对不上。

不对。Sonnet 5 token 单价比 Opus 4.8 便宜约 1.7 倍,但每任务成本 $2.09 高于 Opus 的 $1.94,完成率还低 6 个点(81% vs 87%),因为它多消耗了 1.9 倍 token。

2 倍以上,质量相同。原因是上下文管理:Pi 每轮只喂约 1/3 的上下文,工作集更紧凑、轮次更少。

agent 从 git 历史里翻出了已合并 commit 中的正确答案。修复:密封 git 历史——运行时把工作目录与仓库彻底断开,只留模型 API 通道。

Recency(新近 PR)、Human written(过滤 bot/AI 生成)、自带高质量测试、Self-contained(改动局限少数模块)、覆盖全栈日常任务分布。