让智能体便宜档跑满分:5 档 Claude Code 预设 60 次实测,轻档单次 $0.63,Opus 最高档贵 12 倍却没更好
速览卡
- 分类:编程搭建
- 结果:5 预设 × 4 任务 × 3 次 = 60 次运行、54 次有效、10.8 小时;轻档(Sonnet 主模型 + Opus 顾问 + Haiku 子智能体)四类任务检查全过,单次均值 $0.63–$0.75;Opus medium(normal)性价比最优,评委中位 9.0(3 类)/ 8.8(1 类),单次 $1.70;Opus xhigh / max 单次 $8.84 / $9.34,评委中位未超过 normal
- 状态:已实现(作者自测基准;双重评分:确定性检查 + LLM 评委;跑前已定好胜出规则)
- 成本:实验总成本 $245.89;日常轻档单次不到 $1
- 耗时:搭基准 harness 约半天,之后每次跑 4 类任务约 10 分钟
一句话
别凭感觉选模型档位:作者把每天用的 5 档 Claude Code 预设拉进同一套基准跑 60 次,结果是便宜的轻档四类任务全过检查,最贵的 Opus 最高档单次贵 12 倍、质量中位却没超过中等档——贵档买到的主要是心理安慰。
原作者怎么做的
- 先定 5 档预设(每档一个 shell 启动器,固定
--model / --effort,子智能体模型用CLAUDE_CODE_SUBAGENT_MODEL / _FORCE控制):
- high:Opus 5.5、xhigh 努力度、Fable 顾问、Sonnet 子智能体;
- normal-max:Opus 5.5、max 努力度、无顾问、默认子智能体;
- normal:Opus 5.5、medium 努力度、无顾问、默认子智能体;
- light:Sonnet 5.5、medium、Opus 顾问、Haiku 子智能体(默认);
- light-force:同 light,但强制全部子智能体跑 Haiku。
- 配对设计:normal 与 normal-max 只差努力度,light 与 light-force 只差是否强制 Haiku;起因是 X 上一则“Sonnet 写、Haiku 探、Opus 审”的帖子——作者核查发现它推荐的 --subagents 参数根本不存在,真正起作用的是环境变量,且默认 Haiku 只接管部分子智能体(frontmatter 定了 model 的、inherit 的都不跟),所以才有 light-force 这一档。
- 写
bench.py(单文件标准库 Python):每次运行先把任务工作区拷到全新临时目录并提交为 base(真实仓库任务则用固定提交建 git worktree)→ 无头跑预设(-p 提示词 --output-format json --no-session-persistence --max-turns N --max-budget-usd X)→ 从 JSON 结果取耗时与分模型成本 → 跑确定性check.sh(过为 0 退出码,部分分取末行 0–1 数字)→ 无工具评委(Opus 高努力度,只读 rubric、提示词、最终消息、diff 与检查结论)打 0–10 分 → 一行追加进results/runs.csv,原始 JSON、消息、diff、评委输出进 gitignored 的results/raw/。 - 定 4 类任务(故意形状不同,防一招鲜):修 lazygit 真实 bug(按上游修复前提交,容器内 8 个隐藏集成测试 + 另 512 个测试把关);审 600 行 PR(10 个埋入问题 + 5 个看起来错实则对的诱饵,满分公式为(找到 − 误报)/10,0.60 及格);写架构决策记录(简报 + 7 份团队笔记 + 代码,只有一个存储方案满足全部约束,简报还故意偏向错误方案);从零写 10×10 逻辑游戏 meowdoku(Go + htmx 4——2026 年 8 月才发布,超出模型训练数据,20 个隐藏验收测试 + 独立求解器作裁判)。
- 跑前定死胜出规则(防事后挑数字):按检查通过数排序,保留与最佳评委分差 1 分以内的档,取其中最便宜的;只有便宜 25% 以上才算 outright 胜出,否则算平手。
- 做公平控制(这部分占了大部分工程量):每轮全新工作区;清掉会偷偷改写预设的环境变量(连自己会话的 token 与 socket 都隔离);每轮只给一个无头浏览器 MCP + 任务声明的插件,不让智能体摸到作者自己的 Chrome 与 MCP;每任务先各档试跑一次定 turn/预算/时间上限(上限过紧会冤枉慢档);运行顺序交错(A、B、C、A、B、C),不让某段时间的 API 延迟或缓存热度只落在一档上;每个检查都有自测(从完美答案到“改了不该改的文件”的反例都测),改动先过自动代码评审再合并。
结果
- 总量:60 次运行、54 次有效、10.8 小时、$230.93 智能体用量 + $14.96 评委费(已实现,作者基准账本)
- 轻档胜出:light 与 light-force 四类任务检查全过,单次均值 $0.63–$0.75(已实现,作者基准)
- 性价比最优:Opus medium(normal)评委中位 9.0(3 类)/ 8.8(1 类),单次 $1.70(已实现,作者基准)
- 贵档无增益:Opus xhigh(Fable 顾问)单次 $8.84、Opus max 单次 $9.34,评委中位均未超过 normal(已实现,作者基准)
- 附带发现:小任务上会话上下文占大头——一次校准里 72–85% 的成本是把 32–35k token 的会话上下文写进 1 小时缓存(2 倍输入价),所以 Opus max 在小任务上只比 medium 贵 1.3 倍,不是努力度价目表暗示的约 5 倍(已实现,作者自测)
提示词结构
(按原文做法还原的基准骨架,非原文逐字提示词)
```
给每个常用档位写一个启动器:[oclaude-档名] 固定 [主模型] + [努力度] + [顾问模型] + [子智能体模型/是否强制],不继承任何默认值。
跑基准前先定死胜出规则:[按检查通过数排序] + [评委分差 1 分以内才算候选] + [取最便宜] + [便宜 25% 以上才算 outright 胜出]。
每个任务配两种评分:[确定性 check.sh:隐藏测试/埋入问题/诱饵] + [无工具评委:只读 rubric、提示词、最终消息、diff 与检查结论]。
公平控制四件套:[每轮全新工作区或固定提交 worktree] + [清掉改写预设的环境变量] + [只给任务声明的插件与无头浏览器] + [交错运行顺序]。
先校准再定上限:[每任务每档试跑一次] 定 [turn/预算/时间上限],上限过紧会冤枉慢档。
```
中国读者怎么迁移
国内用 Claude Code / Cursor / Codex 的读者都能搬:先把自己每天在用的 2–3 档(比如“便宜主力 + 贵档兜底”)写成固定启动器,再挑 4 类自己真实会遇到的任务(修 bug、审 PR、写文档、从零写小功能),每类配一个“能自动判对错”的检查(隐藏测试、埋入问题、验收清单),跑 3 遍取均值。别只看一次手感——作者的教训是,贵档在单次小任务上看着只贵一点,是因为上下文成本把差距抹平了;按检查通过数 + 评委分 + 单次成本三列排,才看得出哪档真值。
风险与限制
- 美元数是客户端估算不是账单:
total_cost_usd是 Claude Code 按内置价目表算的,订阅用户实付为套餐费;跨档比较有效,不能写成“每月省了多少钱”。 - 60 次里 6 次无效:54 次有效这个数字本身说明基准会跑飞——照搬时要先接受一定比例的失败运行,并按作者做法把失败原因记下来而不是悄悄重跑。
- 单人单机基准:任务、模型版本(2.1.303)、API 延迟、缓存状态都会影响数字;换模型版本或任务类型要重跑,不能直接抄 $0.63 这个数。
- 评委也是模型:LLM 评委打分有主观性,作者用“确定性检查 + 评委”双轨对冲;只看评委分会高估贵档,只看检查会漏掉质量差异。
- 与已发布案例的边界:这篇是“档位/努力度”基准,与已发布 CI token 分流、token 分工实测、依赖图降成本不同——它不改分工、不改上下文,只测“同一任务换档位多少钱、多好”。
原文链接
https://medium.com/@oleg.a.ivanchenko/i-benchmarked-my-claude-code-presets-the-cheap-ones-passed-every-check-57fa8ec2e174