第 7 章 模型选择与切换

5 阅读6分钟

第 7 章 模型选择与切换

← 上一章 | 下一章 →


本章目标

  • 了解 Claude 模型家族的三个成员及其定位
  • 掌握模型切换的三种方式
  • 理解 Fast Mode 的原理和适用时机
  • 学会分析 Token 消耗并有效控制成本
  • 能为不同任务类型选择合适的模型

7.1 Claude 模型家族

Anthropic 提供了三个层级的模型,分别面向不同的场景需求。

维度OpusSonnetHaiku
定位最强推理能力平衡性能与速度最快响应速度
适用任务复杂架构设计、多文件重构、深度分析日常编程、代码审查、常规重构简单编辑、格式调整、文件搜索
推理能力★★★★★★★★★☆★★★☆☆
响应速度★★★☆☆★★★★☆★★★★★
价格(输入/输出)最高中等最低
上下文窗口200K tokens200K tokens200K 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、一次说清需求

← 上一章 | 下一章 →