目录
只把制定计划的部分交给聪明的模型,真正写代码的部分交给又快又便宜的模型——Claude Code 里有一个能自动做到这一点的设置,叫 opusplan。
先说结论:opusplan 是一种模型指定,“在 plan mode 期间用 Opus,其余时候用 Sonnet”。输入 /model opusplan,或写进 settings.json 的 model,就能使用。不过,它不会出现在 /model 的列表里,不知道名字就找不到。另外,每次进入或退出 plan mode 都会切换模型,因此要注意每次切换都会在没有缓存的情况下重新读入整段对话。
本文根据截至2026年9月15日的官方文档、Claude Code 的更新日志(CHANGELOG)和 GitHub 上的 issue,整理设置方法、使用流程、它不在列表中的来龙去脉、费用与缓存方面的注意事项,以及它与类似机制(advisor、子智能体)的区别。
opusplan 会随着进出 plan mode 切换模型
以 Anthropic API 为例。opus 和 sonnet 指向哪个模型,取决于接入平台
plan mode 期间
Opus 5
调查代码,不做编辑,只写出计划
其余时候(实现)
Sonnet 5
按照计划编辑文件、执行命令
来源:Claude Code 官方文档《Model configuration》(opusplan model setting、模型别名指向的模型)
1. opusplan 是什么:只在 plan mode 期间使用 Opus
opusplan 和 sonnet、opus 一样,是可以传给 /model 的模型别名。官方文档把它描述为“在 plan mode 中使用 opus、执行时切换为 sonnet 的特殊模式”。
决定切换的只有一点:当前是否处于 plan mode。plan mode 是 Claude 读取文件、用命令调查之后写出计划,在获得批准之前不编辑源码的状态(权限模式的全貌,见Claude Code 权限模式完全指南:5 种模式与切换方法)。
| 状态 | opusplan 下的模型 | 适合的工作(官方说明) |
|---|---|---|
| plan mode 期间 | opus(Anthropic API 上为 Opus 5) | 复杂推理和架构决策 |
| 其余时候 | sonnet(Anthropic API 上为 Sonnet 5) | 代码生成与实现 |
来源:Claude Code 官方文档《Model configuration》(截至2026年9月15日)。指向的模型因接入平台而异,例如在 Amazon Bedrock 和 Google Cloud 的 Agent Platform 上,sonnet 是 Sonnet 4.5
还有一个类似的机制。用 Haiku 运行的会话,只在 plan mode 期间会自动升级为 Sonnet(v2.0.17 中随 Haiku 4.5 一同引入。引入时,Amazon Bedrock 和 Google Vertex AI 上不会自动升级)。这个机制无需设置就会生效。
2. 设置方法
指定方式与其他模型相同。下面按官方文档写明的优先级,从高到低列出。
| 方式 | 写法 | 作用范围 |
|---|---|---|
| 在对话中途切换 | /model opusplan | 当前会话,以及之后新开的会话(保存到用户设置中) |
| 启动时指定 | claude --model opusplan | 该会话 |
| 环境变量 | ANTHROPIC_MODEL=opusplan | 在该环境中启动的会话 |
| 设置文件 | settings.json 中的 "model": "opusplan" | 之后新开的所有会话 |
输入 /model opusplan 不只会切换当前会话,还会写入用户设置的 model,成为新会话的默认值。如果只想这一次试试,请用 claude --model opusplan 启动。
{
"model": "opusplan"
}
另外还有 3 个值得了解的指定。
- 固定所用模型的版本:
opusplan在 plan mode 中使用的 Opus 由ANTHROPIC_DEFAULT_OPUS_MODEL决定,其余时候使用的 Sonnet 由ANTHROPIC_DEFAULT_SONNET_MODEL决定。在 Amazon Bedrock 等平台上,这里要填写该平台的模型 ID - 使用 1M token 上下文:在 Max、Team、Enterprise 这类 Opus 会自动扩展到 1M 的套餐中,
opusplan的 Opus 一侧也是 1M。其他情况下,如果想让两侧都用 1M,就指定opusplan[1m]。用/model opusplan[1m]指定需要 v2.1.265 及以后的版本,更早的版本请用--model或设置文件指定 - 不能用于默认模型的环境变量:即使把
opusplan填进决定新会话默认模型的ANTHROPIC_DEFAULT_MODEL,也会被忽略。想设为默认,请输入/model opusplan,或写在settings.json的model中
来源:Claude Code 官方文档《Model configuration》(Setting your model、Environment variables、Extended context、opusplan model setting)、同《Settings reference》(model)
能否在界面上选择
- 终端里
/model的列表中没有它。不带参数打开/model,会列出 Opus、Sonnet、Haiku 等,但没有opusplan。GitHub 上希望把它加入列表的请求(#26556)截至2026年9月15日仍未关闭。🟡 官方文档没有写明它是否出现在列表中,这一点依据的是用户的报告。同一个 issue 中还有报告称,即使想用 v2.1.243 引入的modelPicker设置自行添加一行,以追加(append)方式添加时也会被视为与 Sonnet 那一行重复而不显示 - 🟡 VS Code 扩展和桌面应用的模型选择中是否会出现
opusplan,官方文档没有写明。两者都运行在使用settings.json的 Claude Code 之上,但界面上如何处理尚未确认,使用前请先查看显示的模型
3. 使用流程
仅仅指定 opusplan,运行的仍然是 Sonnet。只有你自己进入 plan mode 时,才会变成 Opus。
- 进入 plan mode:在终端中用
Shift+Tab切换,或在请求开头加上/plan。想一开始就进入,可以用claude --permission-mode plan。在桌面应用中,从权限模式的选择器(模式选择器)中选择 - Opus 写计划:读取文件、用命令调查,不做编辑,整理出计划。也可以按
Ctrl+G,在编辑器中打开计划直接修改 - 批准计划:从“Yes, and use auto mode”(以 auto mode 继续)、“Yes, manually approve edits”(逐一批准编辑)、“No, keep planning”(继续完善计划)中选择(在无法使用 auto mode 的环境中,第一个选项会变为“Yes, auto-accept edits”,即自动批准编辑)。批准后会退出 plan mode,从这里开始由 Sonnet 实现
- 想再做一次计划时:用
Shift+Tab回到 plan mode,或在下一个请求开头加上/plan。在此期间又会变成 Opus
把设置项 showClearContextOnPlanAccept 设为 true,批准选项的最上方会多出一个“Yes, clear context and …”(清除上下文后批准,后半部分是权限模式的名称)。这个选项会丢弃制定计划途中读过的文件内容等,只带着计划开始实现(默认值为 false)。正如第 5 章所述,在 opusplan 下,这一项在费用上也有效果。
来源:Claude Code 官方文档《Choose a permission mode》(Analyze before you edit with plan mode、Review and approve a plan)、同《Settings reference》(showClearContextOnPlanAccept)、同《Desktop》(权限模式的选择)
当前在用哪个模型运行,不要去问模型本身。在2025年9月 GitHub 上的讨论中,Anthropic 的工作人员写道,应当“通过应用程序的显示来确认,而不是问模型自己是什么”。确认的方法汇总在 FAQ 的 Q3 中。
4. 为什么 /model 列表里没有它
opusplan 并不是新功能。它之所以不在列表中,是因为中途曾被从界面上移除。沿着更新日志和 GitHub 的 issue 梳理,经过如下。
| 时间 | 事件 |
|---|---|
| v1.0.77 | 以“Opus Plan Mode”之名加入 /model。只在 plan mode 中用 Opus,其余用 Sonnet |
| v1.0.88 | 可以通过 ANTHROPIC_DEFAULT_OPUS_MODEL 和 ANTHROPIC_DEFAULT_SONNET_MODEL 指定 opusplan 使用的版本 |
| v2.0.0(2025年9月) | 从模型选择界面中消失(更新日志中没有记载,是从 issue 得知的)。有用户提出 issue #8358,询问“为什么删掉了” |
| 2025年9月29日 | Anthropic 的工作人员在 issue 中说明:“判断 Sonnet 4.5 总体上优于 Opus 4.1,因此有意从选择界面中移除。opusplan 这个设置本身仍然可用” |
| v2.0.17 | Haiku 4.5 的会话在 plan mode 中自动使用 Sonnet |
| 2026年2月18日 | 提出者确认“用 /model opusplan 可以使用”后,关闭了 #8358。同一天,有人提出希望“在列表中显示”的 #26556(截至2026年9月15日仍未解决) |
| 2026年2月至3月 | 有人提交问题报告 #27237,称“opusplan 选中的是 Sonnet 4.5 而不是 Sonnet 4.6”。没有得到 Anthropic 的回应,随后被自动关闭 |
| v2.1.172 | 修复了在享有 1M 上下文的套餐中,plan mode 的 Opus 没有使用 1M 的问题 |
| v2.1.265 | 修复了 /model opusplan[1m] 被以“Model not found”拒绝的问题 |
来源:Claude Code CHANGELOG、GitHub issue #8358、#26556、#27237(均于2026年9月15日确认)
🟡 它现在不在列表中的原因,Anthropic 并没有重新说明。2025年9月的说明,比较的是当时的 Sonnet 4.5 和 Opus 4.1。换成 Opus 5 与 Sonnet 5 的组合,同样的判断是否仍然成立,不得而知。另一方面,官方文档里至今仍有 opusplan 的章节,更新日志中也有进入2026年之后的修复,因此它作为设置仍然处于可用状态。
也有像 issue #27237 那样,报告版本的选择与预期不符的情况。不过,这份报告中写的模型 ID 是 Google Cloud 的格式,而在现在的官方文档中,Google Cloud 上的 sonnet 也指向 Sonnet 4.5,所以也可能是符合规格的行为(这是我的判断)。如果在意,请用上面的两个环境变量固定版本,并确认实际运行的模型。
5. 费用与缓存:每次切换都要重新读入
使用 opusplan 的理由,多数是为了压低用量或费用。把实现交给 Sonnet,每个 token 的单价就会下降。
| 模型 | 输入 | 输出 | 5 分钟缓存写入 | 1 小时缓存写入 | 缓存读取 |
|---|---|---|---|---|---|
| Claude Opus 5 | $5 | $25 | $6.25 | $10 | $0.50 |
| Claude Sonnet 5 | $2 | $10 | $2.50 | $4 | $0.20 |
来源:Claude Platform Docs《Pricing》(每百万 token,截至2026年9月15日)
不过,有一项费用很容易被忽略。提示缓存按模型分开,官方文档写道:“在 opusplan 下,进出 plan mode 就是切换模型,每次都会重新建立缓存”。也就是说,刚退出 plan mode 时 Sonnet 的第一条回复,和刚回到 plan mode 时 Opus 的第一条回复,都会在没有缓存的情况下读入此前的整段对话。
这会有多少?我按对话增长到 10 万 token 时切换的情况做了估算。订阅在套餐范围内使用时,主对话的缓存是 1 小时,所以写入按 1 小时的单价计算。另外,通过 API 密钥或云平台使用时,把 promptCacheTtl 设为 1h 也能让主对话的缓存变为 1 小时(v2.1.242 及以后);反过来,即使是订阅,在超出套餐范围、用 usage credits 付费期间,缓存也是 5 分钟。
| 切换 | 重新写入的量 | API 密钥(5 分钟缓存) | 订阅(1 小时缓存) |
|---|---|---|---|
| 退出 plan mode(切到 Sonnet 5) | 10 万 token | 约 $0.25 | 约相当于 $0.40 |
| 回到 plan mode(切到 Opus 5) | 10 万 token | 约 $0.63 | 约相当于 $1.00 |
来源:我根据官方单价所做的估算(10 万 token × 单价)。🟡 官方并未公布订阅的上限会按这些金额的比例减少。缓存有效期见 Claude Code 官方文档《How Claude Code uses prompt caching》
如果一直用 Opus 读同样的 10 万 token,每次缓存读取约为 $0.05。在实现的来回还很短的时候就多次进出 plan mode,切换产生的写入反而可能更贵。压低费用的诀窍有 3 条。
- 在对话早期就制定计划:趁上下文还小的时候切换,需要重新写入的量也小
- 批准时清除上下文:启用
showClearContextOnPlanAccept并选择清除上下文的批准选项,Sonnet 只带着计划开始,重新读入的量就会减少 - 不要在计划和实现之间频繁往返:每次回到 plan mode,Opus 一侧也会重新读入
也顺带说一下订阅的上限。会话上限和每周上限是所有模型共用的,另外还有“Opus 上限”“Sonnet 上限”这类按模型系列划分的上限。即使用 opusplan,plan mode 期间用的也是 Opus,所以达到 Opus 上限后,plan mode 中就用不了 Opus。定价页面显示 Pro 套餐也可以使用 Opus,但根据官方文档,在 Pro 中以 1M 上下文使用 Opus 需要额外用量(usage credits)。
来源:Claude Code 官方文档《How Claude Code uses prompt caching》(Switching models、Changing permission mode、Which TTL each request gets)、同《Error reference》(所有模型共用的上限与按模型系列划分的上限)、同《Model configuration》(Extended context)、Claude 定价页面(各套餐可用的模型)
6. 与 advisor、子智能体的区别
“把强模型和快模型组合起来用”的方法,并不只有 opusplan。官方文档按强模型何时运行,做了如下比较。
| 方法 | 强模型运行的时机 | 如何开始 |
|---|---|---|
| advisor 工具 | 工作途中需要判断的节点 | 需要时由 Claude 调用 |
opusplan | plan mode 期间(前提是 availableModels 允许。执行用 Sonnet) | 自己进入 plan mode |
| 指定了模型的子智能体 | 交出去的整项工作 | 由 Claude 分派,或自己调用 |
用 /model 切换 | 从下一个请求起一直 | 自己切换 |
来源:Claude Code 官方文档《Escalate hard decisions with the advisor tool》(Compare with related features)
advisor 工具是让主对话用快模型运行,同时由 Claude 在工作途中向强模型请教的机制。与 opusplan 不同,开启或关闭它都不会破坏主对话的缓存。不过,每次请教时 advisor 一侧都要读入整段对话,而这部分读入不会被缓存。截至2026年9月15日,它是实验性功能,只能在 Anthropic API 上使用(Amazon Bedrock 等平台上无法使用)。
子智能体是只让交出去的工作用其他模型运行的方法。设置方法和实测见Claude Code 子智能体换用其他模型运行的方法。
来源:Claude Code 官方文档《Escalate hard decisions with the advisor tool》(Cost、Impact on prompt caching、Requirements)
7. 适合与不适合的用法
根据以上机制,整理出判断的依据(这不是官方的推荐,而是我根据机制推导出的整理)。
适合
“先计划、再批准、然后长时间实现”的流程
本来就在用 plan mode,计划定下来一次之后,实现的来回会持续很久的工作。切换次数少,实现单价降低带来的好处就能发挥出来。
下点功夫就能用
上下文变大之后才做计划的工作
每次切换要重新读入的量会很大。配合批准时清除上下文的设置,可以压低 Sonnet 一侧的重新读入。
不适合
在计划和实现之间频繁往返的工作
每做一个小修改就回到 plan mode,重新读入会越来越多。实现本身就需要强模型的工作,也不适合执行交给 Sonnet 的 opusplan。
拿不准的时候,最稳妥的做法是把同一类工作用 opusplan 和平时的模型各做一次,比较 /usage 的数字和完成质量。按会话细看用量的方法,汇总在Claude Code 按会话查看使用量的方法中。
FAQ
Q1. 打开 /model 也找不到 opusplan。
它本来就不会出现在列表中(截至2026年9月15日)。请输入名字,用 /model opusplan 指定。这样输入后,它也会被保存为新会话的默认值。如果只在这一次使用,请用 claude --model opusplan 启动。
Q2. 已经设成 opusplan,却一直是 Sonnet。
这是正常的。opusplan 只在 plan mode 期间使用 Opus,而且不会自动进入 plan mode。请用 Shift+Tab 切换,或在请求开头加上 /plan。
Q3. 有没有办法确认当前在用哪个模型运行?
不要问模型,而是看应用的显示来确认。可以用 /status 查看当前模型;此外,状态栏会把当前模型传给脚本,因此可以设置成显示模型名称。结束之后,对话日志(~/.claude/projects 中的 JSONL)里每条回复的 message.model,记录着实际作出回复的模型。
Q4. 在 Amazon Bedrock 或 Google Cloud 上也能用吗?
能用。在 ANTHROPIC_DEFAULT_OPUS_MODEL 和 ANTHROPIC_DEFAULT_SONNET_MODEL 中填入该平台的模型 ID,指定 opusplan 使用的版本。如果组织的托管设置(availableModels)排除了最新的 Opus,在 Anthropic API 和 Claude Platform on AWS 上会用允许范围内最新的 Opus 制定计划,只有所有 Opus 都被排除时,plan mode 中才会保持 Sonnet。在 Bedrock、Google Cloud、Microsoft Foundry 等平台上,如果被排除,即使在 plan mode 中也会继续用原来的模型制定计划(两种行为都适用于 v2.1.205 及以后)。
Q5. opusplan[1m] 是什么?
这是让 plan mode 的 Opus 和执行时的 Sonnet 都使用 100 万 token 上下文的指定。在 Max、Team、Enterprise 这类 Opus 会自动变为 1M 的套餐中,不加它 Opus 一侧也是 1M。另外,Anthropic API 上的 Sonnet 5 即使不指定也始终是 1M。/model 接受这种写法,需要 v2.1.265 及以后的版本。
来源
- Claude Code Docs — Model configuration(
opusplan的说明、别名指向的模型、指定方式与优先级、环境变量、1M 上下文、availableModels与 plan mode 中的模型升级) - Claude Code Docs — Choose a permission mode(进入 plan mode 的方法、批准计划)
- Claude Code Docs — Settings reference(
model、showClearContextOnPlanAccept) - Claude Code Docs — How Claude Code uses prompt caching(切换模型与缓存、
opusplan下进出 plan mode 的切换、缓存有效期) - Claude Code Docs — Escalate hard decisions with the advisor tool(与相关功能的比较、费用、对缓存的影响)
- Claude Code Docs — Error reference(用量上限)
- Claude Code Docs — Desktop(模型与权限模式的选择)
- Claude Code CHANGELOG(v1.0.77、v1.0.88、v2.0.17、v2.1.172、v2.1.265)
- GitHub issue #8358、#26556、#27237(从选择界面移除的经过、Anthropic 工作人员的说明、在列表中显示的请求、关于版本如何被选中的报告)
- Claude Platform Docs — Pricing、Claude 定价页面(各模型单价、各套餐可用的模型)
相关文章
- Claude Code 子智能体换用其他模型运行的方法——按工作分配模型
- Claude Code 权限模式完全指南:5 种模式与切换方法——包括 plan mode 在内的权限模式
- Claude Code 按会话查看使用量的方法——用量的比较方法
- Claude Code 的上下文到底被什么吃掉了——重新读入的量为何会变大
- 10个Claude Code省Token技巧与超额费用详解——其他可以削减的地方