Skip to content

01.5 模型选择与用量管理

模型不是"越贵越好",是"越贵越慢越费额度"。选型是工程决策。

读完你能做什么:给定任务类型立刻选对模型,并设计出一套不会在关键时刻断粮的额度策略。


一、模型矩阵

别名完整 ID相对能力相对速度定位
opusclaude-opus-5最强最慢复杂推理、架构设计、疑难 debug
sonnetclaude-sonnet-5日常主力,绝大多数任务的默认选择
haikuclaude-haiku-4-5-20251001最快批量、简单、高频调用
fableclaude-fable-5强(创作向)创意写作、叙事

二、选型决策表

任务类型推荐理由
跨 20+ 文件的架构重构opus需要同时持有大量状态并推理依赖关系
难以复现的并发 bugopus需要构建复杂因果链
技术方案设计与权衡opus多约束优化
日常写功能、改 bugsonnet能力足够,速度快一倍以上
代码 reviewsonnet模式识别任务,Sonnet 很强
写文档、写测试sonnet结构化生成
批量格式转换、分类、抽取haiku简单任务,速度和成本决定体验
大量文件的初筛("哪些文件跟支付有关")haiku用在 subagent 里做扫描
小说、剧本、文案fable针对创作场景优化

2.1 一条实用启发式

先用 Sonnet。当且仅当 Sonnet 连续两次给出不满意的结果,且你确认提示词本身没问题时,才换 Opus。

大多数"模型不行"的场景,真实原因是提示词没说清、或上下文里缺关键信息。换更贵的模型往往只是掩盖问题。先检查 02.7 反模式清单


三、在各入口切换模型

3.1 网页 / 桌面客户端

输入框附近的 [Model Selector] (模型选择器) 下拉。切换只影响之后的消息,已有回复不会重算。

3.2 Claude Code

bash
# 启动时指定
claude --model opus
claude --model claude-sonnet-5

# 会话中切换
> /model

# 设置持久默认值(~/.claude/settings.json)
json
{
  "model": "sonnet"
}

3.3 混合模型策略(Claude Code 进阶)

在 Claude Code 中,可以让主会话用 Opus,子代理用 Haiku,把"广撒网"的成本压到最低:

markdown
---
name: file-scanner
description: 在大型仓库中快速定位与给定关键词相关的文件,返回文件路径列表
model: haiku
tools: Glob, Grep, Read
---

你负责快速扫描。只返回文件路径和一句话说明,不要分析代码细节。

主会话(Opus)负责推理,扫描(Haiku)负责跑腿。详见 06.4 Subagents 子代理编排


四、Effort Level:另一个被忽略的旋钮

在 Claude Code 中,除了换模型,还可以调整同一个模型的推理投入

bash
claude --effort low       # 快,适合简单任务
claude --effort medium
claude --effort high      # 深度推理
claude --effort xhigh
claude --effort max

会话中:

text
> /effort

可用级别取决于模型。 这个旋钮的性价比常常高于换模型 —— sonnet --effort high 在很多任务上接近 opus --effort medium,但更快。


五、用量管理

5.1 查看当前消耗

入口方法
网页 / 桌面[Settings] (设置)[Usage] (用量)
Claude Code/usage(别名 /cost/stats

Claude Code 的 /usage 在 Pro / Max / Team / Enterprise 计划上还会按 skill、subagent、plugin、MCP server 分类展示消耗 —— 这是定位"哪个自动化在偷偷烧额度"的最快方式。

5.2 额度耗尽的常见元凶

元凶症状对策
超长 CLAUDE.md每次会话开头就吃掉几千 token控制在 200 行内,长内容改成 Skill
未压缩的长会话每一轮都重发全部历史定期 /compact/clear
加载了大量 MCP 工具工具定义常驻上下文启用 tool search(见 07.5
无脑 [Retry] (重新生成)同一个提示词重跑 N 次先改提示词
Opus 跑简单任务慢且贵降级到 Sonnet / Haiku
子代理无限展开后台代理一直在跑--max-turns--max-budget-usd 设限

5.3 在脚本中设置硬性预算上限

bash
# print 模式下限制花费上限
claude -p --max-budget-usd 5.00 "重构 src/legacy 下的所有回调为 async/await"

# 限制最大轮数
claude -p --max-turns 10 "修复 CI 中失败的测试"

--max-budget-usd 会把子代理的开销一并计入。v2.1.217+ 在达到上限后还会停止仍在运行的后台子代理。

5.4 模型降级链

主模型过载或不可用时自动降级:

bash
claude --fallback-model sonnet,haiku

持久化到设置:

json
{
  "model": "opus",
  "fallbackModel": "sonnet,haiku"
}

六、成本直觉

在没有精确定价的情况下,用这个粗略比例做决策心算:

text
Haiku : Sonnet : Opus  ≈  1 : 5 : 25   (数量级参考,非精确值)

推论

  • 一次 Opus 调用 ≈ 25 次 Haiku 调用。如果一个任务能被拆成"Haiku 扫描 + Opus 决策",往往比"Opus 全干"更快更省。
  • 上下文长度直接乘算成本。同一个问题,在 5 万 token 上下文里问,比在 5 千 token 上下文里问贵 10 倍。这是 /clear/compact 的真实价值。
  • Prompt caching 可以把重复前缀的成本大幅降低,见 03.5 Prompt Caching 与成本工程

七、一份务实的默认配置

~/.claude/settings.json

json
{
  "model": "sonnet",
  "fallbackModel": "haiku",
  "effortLevel": "medium"
}

然后在需要时临时提升:

bash
# 遇到硬骨头
claude --model opus --effort high

理由:把默认值设在"够用"档位,让升级成为一个有意识的动作,而不是默认状态。默认用 Opus 的人,通常在三周后开始抱怨额度。


延伸阅读

基于 VitePress 构建 · 内容采用原作者授权