结论先说:别让一个模型从头干到尾。规划环节用最强推理模型,批量编码切换性价比档位,评审再换一个模型重跑一遍——正确率和成本会同时改善。这套切换在 Claude Code 里已经是原生能力,用 /model、opusplan 别名和子智能体的 model 字段就能配出来,不需要自己写调度逻辑。
为什么单模型跑全程两头不讨好
一个模型贯穿始终,只有两种结果:全程用强模型,简单改名、补测试也要付最强档的钱;全程用便宜模型,架构判断和跨文件重构的失败率明显上升,返工成本远超省下的 Token 钱。
更隐蔽的问题是”评审者即作者”。同一个模型既写代码又审代码,倾向于给自己刚才的结论找理由,很难发现方向性的错。换一个模型做评审,是最便宜的一次正确性提升。
三个环节要的能力其实不一样
| 环节 | 核心要求 | 建议档位 |
|---|---|---|
| 需求拆解 / 方案规划 | 长上下文、跨文件推理、少走弯路 | 最强推理档 |
| 按方案写代码 | 指令跟随稳定、速度快、便宜 | 日常编码档 |
| 自查与评审 | 独立于作者的视角、挑错能力 | 与编码不同的另一档 |
| 资料检索 / 代码扫描 | 量大、可丢、允许重跑 | 轻量快速档 |
在 Claude Code 里怎么落地
会话级切换
会话中用 /model 直接切换,也可以用 claude --model <别名> 启动时指定,或者设置 ANTHROPIC_MODEL 环境变量作为长期默认。官方支持的别名包括 opus、sonnet、haiku,分别对应复杂推理、日常编码与简单快速任务。
最有价值的一个别名:opusplan
opusplan 是官方为”先规划后执行”准备的特殊模式:在计划阶段使用最强档,进入执行阶段自动切到日常编码档。这正是上面那张表的一键实现,绝大多数场景不需要更复杂的路由。
opusplan 跑一周,观察哪一类任务仍然频繁返工,再针对性给那类任务单独指定模型。上来就手写复杂路由规则,通常是在解决一个还没被证实存在的问题。子智能体单独指定模型
子智能体定义文件里可以写 model 字段,让它独立于主对话运行。想给所有子智能体设默认值,在设置文件的 env 块里配置即可:
{
"model": "opusplan",
"env": {
"CLAUDE_CODE_SUBAGENT_MODEL": "haiku"
}
}
这个环境变量只是默认值,子智能体自己声明的 model 优先级更高。需要强制统一时,再配合 CLAUDE_CODE_SUBAGENT_MODEL_FORCE 使用。检索、扫目录这类”量大可丢”的子任务,全部压到轻量档是收益最明显的优化。
成本怎么控住
- 大批量跑之前先看一眼当前模型,尤其是从别的会话 resume 过来的,模型会沿用上次的选择。
- 描述任务时直接点名:明确要求”不需要最强模型的阶段用便宜档”,模型会照做。
- 给团队设允许列表:企业环境可以通过
availableModels限定可选范围,越权的请求会被替换成允许列表里的版本并给出提示,避免个别成员无意中刷爆额度。
三个常见坑
- 切换模型后上下文被重读:
/model在有历史输出时会要求确认,因为下一次响应会重新读取完整历史,缓存收益丢失。频繁来回切不如一次性切到位。 - 别名会漂移:
opus、sonnet这类别名会随时间指向新版本。要结果可复现,就写完整模型名,或固定对应的默认版本环境变量。 - 以为换了模型就等于换了评审者:如果上下文里带着作者完整的推理过程,评审仍会被带偏。评审子智能体应该只拿到需求、改动清单与差异,不要拿到作者的思路。
和已有流程怎么接
多模型分工是建立在”先出方案再动手”之上的优化,还没拆开规划与执行的,先看AI 编程的 Plan/Act 分离工作流;评审环节的具体关卡见AI 代码评审清单;检索类子任务怎么拆,参考子智能体拆分与上下文隔离。以上机制均基于 Anthropic 官方 Claude Code 文档中的模型配置与子智能体说明。
opusplan 和普通切换 /model 有什么区别?
opusplan 是自动化策略:计划阶段用强档,执行阶段自动降级,不需要人工介入。手动 /model 适合一次性任务,但要求你记得在合适时机切回来,实操中很容易忘。









评论 (0)