只把制定计划的部分交给聪明的模型,真正写代码的部分交给又快又便宜的模型——Claude Code 里有一个能自动做到这一点的设置,叫 opusplan

先说结论:opusplan 是一种模型指定,“在 plan mode 期间用 Opus,其余时候用 Sonnet”。输入 /model opusplan,或写进 settings.jsonmodel,就能使用。不过,它不会出现在 /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

opusplansonnetopus 一样,是可以传给 /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.jsonmodel

来源: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。

  1. 进入 plan mode:在终端中用 Shift+Tab 切换,或在请求开头加上 /plan。想一开始就进入,可以用 claude --permission-mode plan。在桌面应用中,从权限模式的选择器(模式选择器)中选择
  2. Opus 写计划:读取文件、用命令调查,不做编辑,整理出计划。也可以按 Ctrl+G,在编辑器中打开计划直接修改
  3. 批准计划:从“Yes, and use auto mode”(以 auto mode 继续)、“Yes, manually approve edits”(逐一批准编辑)、“No, keep planning”(继续完善计划)中选择(在无法使用 auto mode 的环境中,第一个选项会变为“Yes, auto-accept edits”,即自动批准编辑)。批准后会退出 plan mode,从这里开始由 Sonnet 实现
  4. 想再做一次计划时:用 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_MODELANTHROPIC_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.17Haiku 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 CHANGELOGGitHub 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 调用
opusplanplan 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_MODELANTHROPIC_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 及以后的版本。

来源