分类: IT 实用技巧
Claude Code 模型切换与 effort 设置完全指南 - 如何选用 Opus 5 / Sonnet 5 / Fable 5.1 🎛️
本文译自韩语原文。
目录11 项
大家好!我是 Mojangcam 😎
7 月份介绍 Claude Opus 5 发布消息的时候,我顺带简单讲过 /model·/effort 这两个命令。后来翻看博客的搜索来源,发现一直有人用 "Claude Code 切换模型"、"claude effort 区别" 这类关键词找过来。可是专门讲这两件事的文章我还没写过,所以今天干脆准备了一篇只讲这两个设置的专题文章。
这篇文章你会学到这些内容:
- 模型和 effort 分别改变的是什么(两个很容易搞混的旋钮)
- 2026 年 9 月的模型阵容(Fable 5.1 / Opus 5 / Sonnet 5 / Haiku 4.5)以及各套餐的默认模型
- 用
/model切换 → 用/effort调节 → 写进settings.json固定下来 - 自己的任务该选哪个——选择标准和各套餐推荐组合
- 常见的坑(比如明明改了,下个会话又变回原样的原因)
为什么这件事很重要?因为 Pro 套餐默认是 Sonnet 5,Max 套餐默认是 Opus 5,同样用 Claude Code,每个人实际跑的模型却可能不一样。再加上光是 effort 一项,token 消耗就可能差好几倍。经常撞到用量上限的人也好,反过来觉得"回答太敷衍"的人也好,最后都会在这两个设置里找到答案 🙌

📌 准备工作
- Claude Code v2.1.278(截至 2026-09-21 的 npm 最新版)——最低版本要求:Opus 5 → v2.1.219+,Sonnet 5 → v2.1.197+,Fable 5.1 → v2.1.257+
- Claude 订阅(Pro·Max·Team)或 Anthropic API 密钥
- 如果用 API 密钥,请只通过
ANTHROPIC_API_KEY环境变量传入。千万不要把密钥硬编码进配置文件或代码里!
先把版本对齐再开始。
claude update
claude --version💬 本文以直接连接 Anthropic API / claude.ai 订阅的环境为准。Amazon Bedrock·Google Cloud·Microsoft Foundry 的别名指向的版本不同,我会在下面的表格里单独列出。
🧠 模型 vs effort——到底有什么不同?
Claude Code 里有两个"好像能让回答变好"的设置。但它们做的事情完全不同。把 Anthropic 官方博客的说明整理成一张表,就是这样:
| 设置 | 改变的是什么 | 比喻 |
|---|---|---|
| 模型 (model) | 由哪个大脑(权重)来回答 → 能力有多强 + token 单价 | 请专家来,还是请通才来 |
| effort | 这个大脑有多卖力 → 不只是思考长度,还包括读多少文件、验证几次、不问你就自己往前推进多少步 | 是聊 5 分钟,还是拉着人家谈一整个下午 |
关键在于,effort 并不只是"思考时间"。effort 调高后,Claude 会多读文件、多跑测试,在回头问你之前自己走得更远。反过来调低的话,会省下 token,但也会更频繁地问你"这个要怎么处理?"。
所以当结果出错时,判断该拧哪个旋钮的官方标准是这样的 💡
- 因为不懂而出错(上下文都给全了,却自信地给出离谱答案、微妙的 bug、陌生领域)→ 升级模型
- 因为不够卖力而出错(跳过文件、没跑测试、重构做到一半就停了)→ 调高 effort
- 在那之前先检查:提示词是否含糊,
CLAUDE.md和工具是否配置到位。比起旋钮,问题出在上下文的情况要多得多。
🧩 2026 年 9 月的模型阵容
根据官方 Models overview,目前可选的模型有 4 个。
| 模型 | API 模型 ID | 价格(输入 / 输出,每百万 token) | 上下文 / 最大输出 | 默认 effort | 一句话总结 |
|---|---|---|---|---|---|
| Claude Fable 5.1 | claude-fable-5-1 |
$10 / $50 | 1M / 128K | high | 处理最难、最长任务的专家。在任何套餐中都不是默认值,必须手动选择 |
| Claude Opus 5 | claude-opus-5 |
$5 / $25 | 1M / 128K | high | 复杂的智能体(agentic)编程。官方文档建议"大多数任务从这里开始" |
| Claude Sonnet 5 | claude-sonnet-5 |
$2 / $10 | 1M / 128K | high | 速度与智能的平衡。日常编程用 |
| Claude Haiku 4.5 | claude-haiku-4-5-20251001 |
$1 / $5 | 200K / 64K | 不支持 effort | 简单、快速的任务,适合子代理 |
表中价格按 API 按量计费计算。Pro·Max 订阅是固定月费,但越贵的模型消耗用量上限越快,这一点是一样的,所以这个感觉可以照搬过去。顺带一提,Sonnet 5 在 API 上始终以 1M 上下文运行,超过 20 万 token 也不额外收费。
另外,什么都不改时(default)会启动哪个模型,取决于你的套餐。这里很多人会搞混。
| 账号 / 套餐 | 默认(default)模型 |
|---|---|
| Max、Team Premium、Enterprise、Anthropic API | Opus 5 |
| Pro、Team Standard | Sonnet 5 |
| Claude Platform on AWS、Amazon Bedrock、Google Cloud Agent Platform | Opus 5(但 sonnet 别名指向 Sonnet 4.6 / 4.5) |
| Microsoft Foundry | Sonnet 4.5(opus 是 Opus 4.6) |
| Fable 5.1 / Fable 5 | 在任何套餐中都不是默认值。需要用 /model fable 手动选择。根据套餐和席位,可能按用量额度(usage credits)计费 |
也就是说,Max 一打开就是 Opus 5,Pro 一打开就是 Sonnet 5。如果你是 Pro 用户,还纳闷"为什么我的 Claude Code 不是 Opus?",那是正常的 😅
📌 第 1 步 - 用 /model 切换模型
会话中途可以直接切换。不带参数输入的话,会打开选择器(选择界面)。
/model
选择器里有一个键很关键 💡
- Enter:切换模型,并保存为以后的默认值(写入用户配置文件的
model值) - s:只在本次会话中切换,已保存的默认值保持不变
- ←/→ 方向键:在同一界面调节 effort 滑块
也可以直接输入名称。这种情况等同于按 Enter,连默认值也会一起保存。
/model opus
/model sonnet
/model fable
/model claude-opus-5常用的别名(alias)整理如下。
| 别名 | 作用 |
|---|---|
default |
清除模型覆盖,恢复为你所在套餐的默认模型 |
opus |
最新的 Opus → 目前是 Opus 5 |
sonnet |
最新的 Sonnet → 目前是 Sonnet 5 |
haiku |
轻量、快速的 Haiku 模型——目前是 Haiku 4.5 |
fable |
Fable 5.1(v2.1.257 及以上)。用于最难、最长的任务。在 Claude 应用网关会话中它指向 Fable 5,这时请用 /model claude-fable-5-1 直接指定 |
best |
能用 Fable 时等同于 fable,否则等同于 opus |
opusplan |
规划模式用 opus,执行阶段用 sonnet,自动切换的混合模式 |
opus[1m] / sonnet[1m] |
百万 token 上下文版本。Sonnet 5 本来就是 1M,所以 sonnet[1m] 没有效果 |
opusplan 其实相当实用。设计(规划)交给聪明的模型,写代码交给快的模型,成本能明显降下来。
如果想在启动时就指定,用参数传进去就行。它只对这个会话生效,不会动默认值。想让两个终端各跑不同模型时正好合适。
claude --model sonnet另外,多种方式同时存在时有优先级。越靠上优先级越高。
- 会话中的
/model - 启动时的
claude --model - 环境变量
ANTHROPIC_MODEL - 配置文件的
model键(用/model保存的值就写在这里) - 环境变量
ANTHROPIC_DEFAULT_MODEL(仅在什么都没指定时使用的启动默认值,v2.1.236+)
当前在跑哪个模型,可以用 /status 查看,会话启动时的标题栏里也会显示模型名。如果是项目设置或托管(managed)设置决定了模型,标题栏里还会显示是哪个文件决定的,可以参考。
📌 第 2 步 - 什么时候用哪个模型?(选择标准)
把官方指南按任务类型整理一下,就是这样:
| 如果是这类任务 | 推荐模型 | 理由 |
|---|---|---|
| 改错字、短函数、能准确说清"改成这样"的机械性修改、针对上下文中已有代码的提问 | Sonnet 5(非常简单的话用 haiku) |
常规任务换成小模型也不损失质量,只赚到速度和成本 |
| 跨多个文件的功能实现·重构、追查 bug 原因、代码审查、需求含糊的任务 | Opus 5 | "这种问题以前见过"的经验值在大模型身上。它能自己理清含糊之处 |
超过半天的大型任务、根因调查、故障排查、架构决策、Opus 5 开到 xhigh 也解决不了的问题 |
Fable 5.1 | 能不中断地维持长时间的自主会话,行动前会做更多调查和验证。代价是单价最高 |
| 设计要聪明,实现要便宜 | opusplan |
只有规划模式用 Opus,其余用 Sonnet |
官方博客里的比喻很有意思,我原样搬过来。用 low effort 跑 Opus,就像和一位很懂你问题的专家聊 5 分钟;用 high effort 跑 Sonnet,就像给一位聪明的通才一整个下午的时间。前者经验丰富,但只会粗略扫一遍你的代码;后者会把你的代码读个遍,但"这个我以前见过"的积累少一些。而 Fable 是那种别人都卡住的问题、它瞄一眼就能指出关键的专家,所以官方的立场是:只在真正需要的任务上省着用。
💡 一个成本小贴士。大模型的 token 单价虽然贵,但在困难任务上反复次数会减少,每个任务的总成本反而可能更低。 小模型在极限边缘反复打磨、烧掉大量 token 的时候,大模型几步就搞定了。反过来,在常规任务阶段换成小模型则是纯赚。
使用 Fable 5.1 时,官方文档推荐的技巧也简单说一下。
- 描述结果,而不是步骤。 路径它会自己规划
- 把含糊的问题整个交给它。 它在根因调查、故障排查、架构决策上最能体现价值
- 去掉"一定要跑测试""验证一下"这类提醒。 不用你说它也会自己验证,加上反而会过度验证
- 不要把任务拆得太碎。 平时分开交代的活,一整块交给它也没问题
子代理(负责探索·搜索)没必要用贵的模型。可以像 CLAUDE_CODE_SUBAGENT_MODEL=haiku 这样用环境变量单独指定。第 4 步会给出示例。
📌 第 3 步 - 用 /effort 调节思考深度
/effort
/effort medium
/effort auto逐个拆开看 💡
/effort:不带参数输入会弹出滑块。在/model选择器里也能用方向键调节同一个滑块/effort medium:直接指定级别。工作进行中也可以输入,从下一个请求开始生效/effort auto:清除当前模型已保存的级别(重置为模型默认值)

级别这样选:
| 级别 | 什么时候用 |
|---|---|
low |
只用于简短、范围窄、看重响应速度且不需要动脑的任务 |
medium |
需要省成本、可以稍微牺牲一点智能的任务 |
high |
默认值。 token 与智能的平衡点(只有 Opus 4.7 默认是 xhigh) |
xhigh |
即使多花 token 也需要深入推理的时候 |
max |
最棘手的任务。不过容易过度思考(overthinking),建议先测试再用。只要不是通过环境变量设置的,就只对当前会话生效 |
ultracode |
不是 effort 级别,而是 Claude Code 的设置。以 xhigh 发送请求,并为每个大任务动态编排工作流来推进(--effort ultracode 需要 v2.1.203+) |
不同模型支持的范围不同。Fable 5.1·Fable 5·Opus 5·Sonnet 5·Opus 4.8·4.7 支持 low~max 全部级别,Opus 4.6·Sonnet 4.6 没有 xhigh,Haiku 4.5 则完全不支持 effort。指定了不支持的级别时,会自动降到它下面最高的级别(例:在 Opus 4.6 上 xhigh → high)。另外,即使同样是 high,每个模型的值也是分别校准的,所以换了模型之后,同一个级别名称并不代表同样的强度。
保存方式也值得了解一下。
- 在滑块里按 Enter,或直接输入
/effort 레벨(레벨 处填级别名)→ 保存为默认值,下个会话也会保留 - 在滑块里按 s → 仅本次会话(v2.1.257+)
- 保存是按模型分别进行的。在 Opus 5 上保存了
medium,切到 Sonnet 5 后会使用 Sonnet 5 自己的保存值(没有的话就是默认的high)。这些值记录在配置文件的modelSettings键里 max除非通过环境变量设置,否则只对当前会话生效
如果只想让某一轮想得更深,不用改会话设置,在提示词里任意位置加上 ultrathink 就行。Claude Code 会识别这个关键词,只在那一轮附加"更深入推理"的指令(发往 API 的 effort 值不变)。相反,"think hard""think more"这类说法只会被当作普通句子处理,这点要注意 😉
那差别到底有多大?在官方博客的示例图里,同一个提示词用 high 跑时,比 low 多用了大约 7 倍的 token,得到了更有把握的答案(这是用于说明的示例数字)。不过 effort 表示的是"愿意走多远",而不是"一定会用掉那么多",所以简单的任务即使是 high 也会自己很快结束。因此官方指南建议:大多数任务保持默认值(high)即可,调节不要按任务来,而是根据你自己的工作风格(细致 vs 速度)一次定好。
当前生效的级别会以"with low effort"这样的形式显示在会话标题栏里,启动时和切换时也会在底部短暂显示。搞不清楚的话,先看标题栏。
📌 第 4 步 - 写进 settings.json 固定下来
每次都输入嫌麻烦的话,写进配置文件就行。配置文件有三个位置。
~/.claude/settings.json ← 사용자 설정 (내 PC 전체)
윈도우는 C:\Users\<계정>\.claude\settings.json
<프로젝트>/.claude/settings.json ← 프로젝트 공유 설정 (git에 커밋해서 팀 전체 적용)
<프로젝트>/.claude/settings.local.json ← 프로젝트 로컬 설정 (나만, .gitignore 권장)优先级依次是托管(managed)设置 > 命令行(--settings)> 项目本地 > 项目共享 > 用户设置。用 /model·/effort 保存的值会进入用户设置,所以如果项目设置里写死了 model,下次启动时项目设置又会胜出。这就是"明明改了,为什么又变回去了?"的常见原因。
下面是用户设置的示例。可以直接复制粘贴 👇
{
"model": "opus",
"effortLevel": "high",
"modelSettings": {
"claude-opus-5": { "effortLevel": "medium" }
},
"fallbackModel": ["claude-sonnet-5", "claude-haiku-4-5"]
}
逐个拆开看 💡
- model:默认模型。别名(
opus·sonnet·fable·opusplan)和正式 ID(claude-opus-5)都可以。在/model里按 Enter 保存时,改的就是这个值 - effortLevel:对没有单独保存级别的模型所用的默认 effort。只能填
low·medium·high·xhigh——max和ultracode不能写进配置文件(ultracode使用单独的ultracode键) - modelSettings:按模型保存的级别。用
/effort保存时,会以正式 ID 为名记录在这里。上面的示例意思是"只有 Opus 5 用 medium,其余各用各的默认值"。在同一个文件里,这个值优先于effortLevel。如果只想给某个模型设上限,就在那一项里加上maxEffortLevel - fallbackModel:主模型过载或故障时依次尝试的备用模型列表(最多 3 个)。只替换那一轮,下一条消息还是先尝试主模型。认证、计费、额度错误不适用
如果想强制应用到项目,就放进 <프로젝트>/.claude/settings.json(项目文件夹下)。比如"这个仓库是一堆轻量脚本,只用 Sonnet 就够了":
{
"model": "sonnet"
}用环境变量也可以。它只对那个终端会话生效,想"今天就这么用"的时候很方便。
# Windows PowerShell — 仅在当前终端窗口中有效
$env:ANTHROPIC_MODEL = "sonnet"
$env:CLAUDE_CODE_EFFORT_LEVEL = "medium"
$env:CLAUDE_CODE_SUBAGENT_MODEL = "haiku"
claude# macOS / Linux
export ANTHROPIC_MODEL=sonnet
export CLAUDE_CODE_EFFORT_LEVEL=medium
export CLAUDE_CODE_SUBAGENT_MODEL=haiku
claude- ANTHROPIC_MODEL:本会话的模型。优先于用
/model保存的值 - CLAUDE_CODE_EFFORT_LEVEL:effort。它和
--effort·/effort属于同一个最高优先级组,会压过配置文件和模型默认值,也比技能·子代理 frontmatter 里的effort更强。值可以是级别名或auto,不能填ultracode - CLAUDE_CODE_SUBAGENT_MODEL:子代理·代理团队的默认模型。把探索类任务降到
haiku,能大幅节省额度 - ANTHROPIC_DEFAULT_MODEL:只在任何地方都没指定模型时使用的"新会话启动模型"(v2.1.236+)
- ANTHROPIC_DEFAULT_OPUS_MODEL / ANTHROPIC_DEFAULT_SONNET_MODEL:固定(pin)
opus·sonnet别名指向的确切版本。适合不希望别名自动换成新版本的时候
💡 各套餐推荐组合
这是我整理的配方。不是标准答案,当作起点来用吧。
- Pro:保持默认的 Sonnet 5 · high。只有遇到卡住的问题时,才在
/model选择器里按 s,临时(仅本会话)开启 Opus 5。设计占比大的话用opusplan。Opus 的 1M 上下文需要用量额度,所以opus[1m]要谨慎使用 - Max:默认 Opus 5 · high。改错字、简单重复的阶段,在
/model选择器里按 s 降到 Sonnet 5(仅本会话)来节省额度。要花一整天的大任务用/model fable——弹出额度计费确认提示时,看清内容再继续 - API 按量计费:成本一目了然,主力用
opus,子代理用CLAUDE_CODE_SUBAGENT_MODEL=haiku,再用fallbackModel应对过载 - 通用:effort 先别动,直接开始 → 如果反复出现"跳过了文件""没跑测试",就调高一级。反过来,如果某个项目只做简单任务,就在那个项目的设置里写上
"effortLevel": "medium"
📌 常见错误与坑
1. 用 /model 切换了,新会话却出现别的模型
- 原因:① 在选择器里按了
s,或用--model启动(仅本会话)② 项目·托管设置中的model、shell 里的ANTHROPIC_MODEL、组织默认模型的优先级更高 ③ 用户settings.json是只读的,保存失败 ④claude --resume/--continue会原样恢复那个会话当时用的模型 - 解决:查看启动标题栏里显示的"是哪个配置文件决定的" → 修改那个文件的
model键,或者在/model里按 Enter 重新保存
2. Model "xxx" is not a recognized model id.
- 原因:输入的既不是别名,也不是以
claude-开头的正式 ID(大多是拼写错误) - 解决:重新输入
opus·sonnet·fable这样的别名,或claude-opus-5这样的正式 ID。会话会保持原来的模型,直接重新输入即可
3. 选择 Fable 5.1 时提示"Claude Code does not support this model"
- 原因:Claude Code 版本低于 v2.1.257
- 解决:执行
claude update后重启
4. 输入了 /effort xhigh,标题栏却显示"with high effort"
- 原因:当前模型不支持
xhigh(Opus 4.6·Sonnet 4.6),或者设置了maxEffortLevel·组织的 effort 上限 - 解决:用
/status确认模型 → 切换到 Opus 5/Sonnet 5,并检查配置文件里的maxEffortLevel
5. 用 /effort 调高了也不生效(选 ultracode 时甚至弹出"环境变量优先"的警告)
- 原因:如果
CLAUDE_CODE_EFFORT_LEVEL被设成了xhigh以外的级别,请求就会按那个级别发出,ultracode 的工作流编排也会处于关闭状态。这时选 ultracode,会弹出"环境变量会覆盖会话 effort"的警告。也有可能是被maxEffortLevel或组织的 effort 上限卡住了 - 解决:清除环境变量(
$env:CLAUDE_CODE_EFFORT_LEVEL = $null/unset CLAUDE_CODE_EFFORT_LEVEL)后重启
6. Fable 那一行显示"Requires usage credits",并询问是否同意付费
- 原因:在你的套餐·席位下,Fable 的用量不计入订阅额度,而是按用量额度(usage credits)计费
- 解决:不想用的话关掉提示即可,当前模型保持不变。决定要用的话,只需同意一次,之后就不会再问。使用组织统一付费的 Enterprise 套餐根本不会出现这个提示
7. 在安全·生物学相关的代码库里,模型突然被换掉了
- 原因:Fable·Opus 5 带有安全分类器,主要会把被判定为网络安全·生物学相关的请求交给其他模型重新执行,并且会话会停留在那个模型上。转到哪个模型因类别而异——Fable 5.1·5:生物学 → Opus 5,网络安全 → Opus 4.8 / Opus 5:网络安全 → Opus 4.8,生物学没有备用模型,直接以拒绝告终。从第一个请求起就可能被触发(因为
CLAUDE.md和 git 状态也会一起发送)。按类别回退需要 v2.1.219+ - 解决:用
/model切回原来的模型。想确认是不是自己的自定义配置导致的,可以用claude --safe-mode启动一次(关闭 CLAUDE.md·技能·MCP·钩子后启动)。如果想每次都先询问,就在/config里关闭 Switch models when a message is flagged(配置文件里是switchModelsOnFlag: false)
🙌 总结
今天的内容整理如下。
- 模型 = 能力有多强(哪个大脑),effort = 有多卖力(文件·验证·步骤数)。因为不懂而出错就升级模型 ↑,因为不够卖力而出错就调高 effort ↑
- 2026 年 9 月的阵容是 Fable 5.1($10/$50)· Opus 5($5/$25)· Sonnet 5($2/$10)· Haiku 4.5($1/$5)。Max 默认 Opus 5,Pro 默认 Sonnet 5,Fable 永远需要手动选择
/model是 Enter(保存)vs s(仅本会话),/effort也是同样的规则。保存的值会写进用户settings.json的model·modelSettings- 项目设置·环境变量比用户设置更强。如果"改了又变回去",先看启动标题栏
- 大多数情况保持默认值(high),调节不按任务来,而是根据自己的工作风格一次定好
下一篇会回到 Discord 机器人开发系列 #31,另外我也在准备配合 10 月 1 日 Python 3.15 正式发布的正式版新功能总结。敬请期待 🙌
你平时用的是哪种模型·effort 组合?欢迎在评论区告诉我,我会在下一篇文章里参考!
