第 7 章 模型选择与切换
本章目标
- 了解 Claude 模型家族的三个成员及其定位
- 掌握模型切换的三种方式
- 理解 Fast Mode 的原理和适用时机
- 学会分析 Token 消耗并有效控制成本
- 能为不同任务类型选择合适的模型
7.1 Claude 模型家族
Anthropic 提供了三个层级的模型,分别面向不同的场景需求。
| 维度 | Opus | Sonnet | Haiku |
|---|---|---|---|
| 定位 | 最强推理能力 | 平衡性能与速度 | 最快响应速度 |
| 适用任务 | 复杂架构设计、多文件重构、深度分析 | 日常编程、代码审查、常规重构 | 简单编辑、格式调整、文件搜索 |
| 推理能力 | ★★★★★ | ★★★★☆ | ★★★☆☆ |
| 响应速度 | ★★★☆☆ | ★★★★☆ | ★★★★★ |
| 价格(输入/输出) | 最高 | 中等 | 最低 |
| 上下文窗口 | 200K tokens | 200K tokens | 200K tokens |
各模型适用场景
flowchart TD
A{任务复杂度} -->|简单| B[Haiku]
A -->|中等| C[Sonnet]
A -->|复杂| D[Opus]
B --> B1[文件格式调整]
B --> B2[简单 bug 修复]
B --> B3[代码搜索和定位]
C --> C1[日常功能开发]
C --> C2[代码审查]
C --> C3[单元测试编写]
C --> C4[中等重构]
D --> D1[架构设计]
D --> D2[复杂重构]
D --> D3[多文件协调修改]
D --> D4[遗留代码深度分析]
💡 一个经验法则:如果你能准确描述"怎么做",用 Sonnet;如果你只知道"要什么效果"但不确定怎么实现,用 Opus。Haiku 适合"我已经知道改哪里、怎么改,只是不想手动操作"的场景。
7.2 模型切换策略
方式一:CLI 参数
# 使用 Opus 启动
claude --model claude-opus-4-7
# 使用 Sonnet 启动
claude --model claude-sonnet-4-6
# 使用 Haiku 启动
claude --model claude-haiku-4-5-20251001
方式二:settings.json 配置
{
"model": "claude-sonnet-4-6",
"modelOverrides": {
"fast": "claude-opus-4-7"
}
}
model 指定默认模型,modelOverrides 针对特定工作模式覆盖模型选择。
方式三:对话中动态切换
在 Claude Code 对话中使用 slash command:
/model
会弹出模型选择界面,切换后当前对话继续使用新模型。
切换时机建议
| 场景 | 推荐模型 | 原因 |
|---|---|---|
| 新项目初始化探索 | Sonnet | 需要大量阅读但不需要复杂推理 |
| 敲定技术方案 / 架构设计 | Opus | 需要深度推理和权衡 |
| 常规功能开发 | Sonnet | 性价比最佳 |
| CI/CD 自动化 | Haiku | 场景固定、速度优先 |
| 复杂 Bug 排查 | Opus | 需要多假设推理和深层分析 |
| 代码格式化 / 清理 | Haiku | 规则明确、无需复杂推理 |
| 编写测试用例 | Sonnet | 需要理解逻辑但不需架构级思考 |
7.3 Fast Mode
Fast Mode 是 Claude Code 的一个性能优化模式,主要为 Opus 模型设计。它在保持推理质量的同时,加快输出速度。
工作原理
Fast Mode 通过调整模型推理参数来缩短每个 token 的生成时间。输出内容会更快地流式返回,但思考深度与标准模式有微妙差异。
启用方式
# 在对话中切换
/fast
或者在启动时指定:
claude --fast
⚠️ Fast Mode 的"快"主要体现在输出速度上,不代表模型变便宜。Token 消耗基本不变。不要把 Fast Mode 当作省钱手段 —— 要省钱应该换用 Sonnet 或 Haiku。
何时使用 Fast Mode
| 场景 | 是否推荐 | 理由 |
|---|---|---|
| 长文本生成(文档、报告) | 推荐 | 输出速度提升明显 |
| 复杂推理任务 | 不推荐 | 标准的深度思考更重要 |
| 交互式对话 | 推荐 | 减少等待时间 |
| 代码审查 | 视情况 | 简单审查可以,深度审查用标准模式 |
7.4 Token 消耗分析
Token 是什么
Token 是模型处理文本的最小单位。一个 Token 大约相当于:
- 英文:约 0.75 个单词
- 中文:约 0.5-1 个汉字
- 代码:差异较大,平均每行 5-15 个 Token
消耗构成
每次对话中,Token 消耗来自:
| 来源 | 说明 | 占比(典型) |
|---|---|---|
| 输入 — 系统提示 | 固定的行为指令框架 | ~2000-5000 tokens/对话 |
| 输入 — 上下文 | CLAUDE.md、项目文件、对话历史 | 动态增长 |
| 输入 — Prompt Cache | 被缓存读取的重复内容 | 计费折扣 |
| 输出 — 文本回复 | Claude 的文字响应 | 500-4000 tokens/轮 |
| 输出 — 工具调用 | 工具调用的结构化参数 | 100-300 tokens/次 |
价格概览
以 Anthropic 最新定价为参考(具体价格请查阅 Anthropic 定价页):
| 模型 | 输入 (每 1M tokens) | 输出 (每 1M tokens) | Prompt Cache 写入 | Prompt Cache 读取 |
|---|---|---|---|---|
| Opus | 最高 | 最高 | 较高 | 折扣显著 |
| Sonnet | 中等 | 中等 | 中等 | 折扣显著 |
| Haiku | 最低 | 最低 | 不适用 | 不适用 |
💡 Prompt Cache 是降低 Token 成本最有效的手段。系统提示和 CLAUDE.md 等稳定内容会被自动缓存,读取时享受大幅折扣。这就是为什么保持 CLAUDE.md 稳定不频繁改动能省钱。
7.5 成本控制策略
策略一:选择合适的模型
不要所有任务都用 Opus。匹配任务复杂度与模型能力,是成本控制的起点。
策略二:精简上下文
- CLAUDE.md 保持在 500-1500 字
- 不要将大型文档一次性塞入对话
- 用 Subagent 隔离临时探索任务(Subagent 的上下文不计入主对话)
- 及时开启新会话,不要让单个对话历史无限增长
策略三:利用 Prompt Cache
- CLAUDE.md 和 settings.json 的内容在对话间保持稳定 → 被自动缓存
- 对话开始时的系统提示 → 被自动缓存
- 缓存命中后读取成本显著降低
策略四:对话结构优化
低效做法(成本高):
用户:帮我写一个登录函数
Claude:好的,这是代码...
用户:不对,改用 JWT
Claude:好的,这是新代码...
用户:再改一下,用 bcrypt
Claude:好的...
每一轮都把整个对话历史重新发送一遍。
高效做法(成本低):
用户:帮我写一个登录函数。要求:使用 JWT + bcrypt,
支持 refresh token,返回格式为 { code, data, message }。
请先确认你理解了需求,然后在一个回复中给出完整实现。
一次性说清楚需求,减少不必要的来回。
💡 Token 控制有一个简单的心法:每次对话都是"付费"的。在发给 Claude Code 之前,想一下这个问题是否已经足够清晰、是否有可能把所有约束一次性说完。
本章要点回顾
- Claude 模型家族:Opus(最强推理)→ Sonnet(平衡)→ Haiku(最快),按需选择
- 三种切换方式:CLI 参数、settings.json 配置、对话中
/model切换 - Fast Mode 加速输出但不省钱,适合长文本生成和交互式对话
- Token 消耗 = 输入(系统提示 + 上下文 + 缓存读取) + 输出(文本 + 工具调用)
- 成本控制四策略:选对模型、精简上下文、利用 Prompt Cache、一次说清需求