过去一年里,Claude 的“思考”方式发生了很大的形态变化。旧的扩展思考(extended thinking)由人来指定模型可以花多少 token 去推理。当前一代则以自适应思考(adaptive thinking)取而代之——是否思考、思考多深,由模型自己决定。而且从 Claude Opus 5 开始,思考已默认开启,“不配置就等于不思考”这条旧假设也成了过去式。之后的 Claude Opus 5.5 和 Fable 各模型上,思考甚至无法关闭。

本文将逐一梳理扩展思考与自适应思考究竟差在哪里、各模型的行为有何不同,以及迁移代码时最容易踩中的陷阱——400 错误、输出被截断、账单悄悄上涨。所有内容均以 Anthropic 官方文档为依据。

THINKING: EXTENDED → ADAPTIVE

从“人来设定深度”到“模型自己决定”

三步看懂这次代际更替

扩展思考(旧)
budget_tokens: 10000
思考预算由人来指定
自适应思考(现行)
type: “adaptive”
是否思考、思考多少由模型判断
Opus 5 及之后
思考默认开启
深度进入用 effort 调节的时代
来源:Anthropic 官方文档“Thinking”与“Extended thinking”(截至 2026 年 9 月 25 日)

1. 思考是什么

思考(thinking),是 Claude 在动笔写最终答案之前,先用自己的话把问题过一遍的阶段。它会复述问题、尝试多条思路、核对中间结果、放弃走不通的路径——这个过程会以 thinking 内容块的形式,在正式回答之前生成出来。在中间过程的质量决定答案质量的任务上收益最大:数学、编程、分析,以及长时间运行的智能体(agent)工作。

不过它并不免费。正如 Anthropic 的“Thinking”文档所明言,Claude 用于推理的 token 按输出 token 计费,并计入 max_tokens——而且即使在思考文本根本不会返回给你的配置下,计费也完全相同(见第 6 节)。设计思考配置,既是质量问题,也同样是成本与延迟问题。

2. 扩展思考时代——由你设定 budget_tokens

第一代形态是扩展思考。在请求里附上 thinking: {"type": "enabled", "budget_tokens": N},Claude 就会在这个预算内先推理再作答。每一次请求,思考多少都由人来指定。按官方文档,规则如下:

  • 最少 1,024 个 token。更小的值会被 API 拒绝
  • 必须小于 max_tokens——思考计入其中,必须给答案留出空间
  • 预算是目标值,不是硬性上限。实际用量因任务而异,Claude 也常常远在预算耗尽之前就结束思考
  • 思考预算超过 32,000 时,Anthropic 建议改用批处理以避免超时

这个设计的问题很直接:合适的预算因任务而异,人无法事先猜准。简单的问题可能烧光你分配的预算;难题又可能因预算不足而喂不饱。而且改动预算值会让提示词缓存(prompt cache)失效——文档还用一个实测例子演示了这一点。

3. 转向自适应思考——由模型决定

2026 年推出的自适应思考取代的正是这一切。配置只有一行:thinking: {"type": "adaptive"}。要不要思考、思考多深,由 Claude 根据请求看上去的难度自行判断。简单的输入跳过思考立即作答;难题则展开深入推理。

迁移按照 Anthropic“Extended thinking”文档列出的时间表推进:budget_tokens 在 Claude Opus 4.6 / Sonnet 4.6 上被弃用(在那里仍然可用),而从 Claude Opus 4.7 起的模型会以 400 错误直接拒绝它。旧代码一旦指向新模型,就会在这里停下:

# 旧写法:扩展思考(在 Opus 4.7 及之后返回 400 错误)
"thinking": {"type": "enabled", "budget_tokens": 10000}
→ 400: "thinking.type.enabled" is not supported ...

# 新写法:自适应思考(深度通过 effort 设定)
"thinking": {"type": "adaptive"},
"output_config": {"effort": "high"}

改写本身很小——删掉 budget_tokens、切换到 adaptive、把深度控制交给 effort。但正如文档所警告的,这是行为上的变化,而不只是语法上的变化。固定预算时代,Claude 每次请求都会思考;而在自适应思考下,较低的 effort 档位遇到简单输入时,可能完全跳过思考。

4. 各模型的思考行为一览

麻烦的地方在于,“默认是否开启”和“能否关闭”因模型而异。下面把官方文档浓缩成一张表。截至 2026 年 9 月 29 日,Anthropic 官方模型列表中的当前模型是 Fable 5.1、Opus 5.5、Sonnet 5.5 和 Haiku 4.5,其余都属于更早的世代(Opus 5 和 Sonnet 5 作为 Legacy 仍可使用)。有新模型发布时,到官方“Troubleshooting thinking”页面的按模型表格里核对同样这三点即可。

模型 什么都不配置时 关闭思考 budget_tokens
Claude Fable 5.1 / Fable 5 / Mythos 5.1 / Mythos 5 思考开启(始终) 不可(400) 不可(400)
Claude Opus 5.5 思考开启(始终) 不可(400) 不可(400)
Claude Sonnet 5.5 思考开启(自适应) 不可(400)
改用 between_tools 可只关闭开头的思考(effort high 及以下)
不可(400)
Claude Opus 5 (Legacy) 思考开启(自适应) 仅限 effort high 及以下
与 xhigh / max 组合:400
不可(400)
Claude Sonnet 5 (Legacy) 思考开启(自适应) 可以 不可(400)
Claude Opus 4.8 / 4.7 不思考(需显式设置 adaptive 才开启) 可以 不可(400)
Claude Opus 4.6 / Sonnet 4.6 不思考(需显式设置 adaptive 才开启) 可以 已弃用(仍可用)
Haiku 4.5 / Sonnet 4.5 / Opus 4.5 不思考 —(默认本来就是关闭) 必需(唯一的思考模式;adaptive 返回 400)

来源:Anthropic“Thinking”与“Extended thinking”、“Troubleshooting thinking”(截至 2026 年 9 月 29 日)

实践中有两点最要紧。第一,默认值在 Opus 5 这一代翻转成了“思考开启”,到 Opus 5.5 更是无法关闭——如果你原本在 Opus 4.8 上关着思考低成本地跑任务,只改一个模型 ID,输出 token 就会多出思考的那一份,答案在 max_tokens 处被截断,或者账单上涨(详见我们对 Opus 5 破坏性变更的解读)。在 Opus 5.5 上,能压低思考量的手段只有 effort。第二,只支持扩展思考的模型继续使用 budget_tokens——也就是 Haiku 4.5、Sonnet 4.5 和 Opus 4.5。只要停留在这些模型上就无需改写,但 Sonnet 4.5 将于 2026 年 11 月 30 日在 Claude API 上停止提供(9 月 30 日公告,后继为 Sonnet 5.5,见官方的模型弃用列表)。用着 Sonnet 4.5 的任务应在此之前换到 Sonnet 5.5,并趁这次一并改写为自适应思考。

5. 深度改由 effort 调节

“预算”退场之后,思考深度通过 output_config: {"effort": ...} 来调整——共五档,low / medium / high / xhigh / max,其中多数模型的 API 默认值是 high,Opus 5.5 则是 medium(不指定 effort 时,Opus 5.5 比 Opus 5 低一档运行)。effort 影响的不只是思考深度:它还左右工具调用的合并程度和前置说明的多少,也就是整体的 token 开销。

low / medium

例行任务、分类、子智能体。简单输入可能跳过思考,因此又快又省

high 至 xhigh

困难推理、编程与智能体。从哪一档起步因模型而异;Anthropic 建议换模型时不要沿用旧设置,而是用自己的评测逐档尝试

max

用于正确性压倒成本的问题。结果未必总是最好,所以不要一直钉死在这一档

五个档位各自意味着什么、Claude Code 里的滑块、设置如何持久化,都写在我们的 effort 设置指南里。文档中还有一条与缓存相关的提醒:在自适应模式下,effort 的取值会被渲染进提示词,因此改动它会让提示词缓存失效——与扩展思考时代“改预算就打穿缓存”是同一个形状。不要在对话中途来回切换。例外是:在 Fable 5.1、Opus 5.5、Opus 5 等模型上,用对话中途的一条消息来改 effort(测试版),此前的缓存会保留下来。

6. 看不见的思考也一样计费

思考在外部如何呈现,由 display 字段控制。它有两个取值:

  • "summarized"——thinking 块中携带推理过程的可读摘要。Claude Opus 4.6 / Sonnet 4.6 及更早模型的默认值
  • "omitted"——thinking 块返回时里面是空字符串。Fable 5.1 / Fable 5 / Mythos 5.1 / Mythos 5 / Opus 5.5 / Opus 5 / Sonnet 5.5 / Sonnet 5 / Opus 4.8 / 4.7 的默认值

这里埋着两个陷阱。第一,模型越新,默认越倾向于“不展示”——把一个向用户流式展示推理过程的应用迁到新模型上,体验就会变成长时间的沉默之后突然蹦出答案。想让它可见就明确写出来:thinking: {"type": "adaptive", "display": "summarized"}。第二,display 改变的只是可见性——计费完全一样。文档说得很明白:即便是 omitted,思考 token 也照全额计费;省下的是延迟,不是钱。而且在任何配置下你都拿不到原始思考链——summarized 展示的也只是摘要。

衡量思考花了你多少钱:响应字段 usage.output_tokens_details.thinking_tokens 报告已计费的输出 token 中有多少属于内部推理。流式传输时,它只出现在最后一个 message_delta 事件上。“看不见思考”绝不等于“没有在思考”——迁移之后记得检查这个字段。

还有一件实践中很重要的事:thinking 块的处理。在多轮对话和工具使用中,要把上一个响应里的 thinking 块原封不动地传回去。对它们做任何改动都会触发 400——Claude Code 用户遇到的“thinking 块签名无效”错误,正是出自这套机制。

7. 关闭思考的陷阱

“我们更在意速度,把思考关掉吧”是个正当的选择——但 Opus 5.5 和 Fable 各模型根本无法关闭思考(disabled 会返回 400 错误)。可以关闭的是 Sonnet 5、Opus 4.8 及更早的模型等,而在 Opus 5 上它是带条件的。按官方文档,在 Opus 5 上:

✅ 允许

关闭思考 + effort low / medium / high

❌ 400 错误

关闭思考 + effort xhigh / max(每个请求都会校验)

🔧 推荐

不要关——改为把 effort 降到 low / medium

即便请求能通过,也有副作用。Anthropic 在文档中写明:思考被关闭时,Opus 5 可能把工具调用当作正文文本写出来(工具从未运行,回合看起来却是成功的),还可能把内部 XML 标签泄漏到输出里。如果你在构建智能体,保持思考开启、调低 effort 才是安全路径——而且它省成本的方向也大体相同。

Sonnet 5.5 不接受 disabled(返回 400 错误)。它最低的设置是 thinking: {"type": "between_tools"},只关闭回答之前的思考(up-front thinking)。它在工具调用之间写的简短进度说明仍以 thinking 块返回;不使用工具的请求则和 Sonnet 5 上的 disabled 一样只返回正文。只能在 effort high 及以下使用,与 xhigh / max 组合会返回 400(Anthropic“What's new in Claude Sonnet 5.5”)。

8. 在工具调用之间思考——交错思考

思考并不只发生在“作答之前的那一次”。借助交错思考(interleaved thinking),Claude 也会在工具调用之间进行推理,先掂量每个工具的返回结果,再决定下一步——读完搜索结果后修订计划,读完上一条命令的输出后选择下一条命令。这正是优秀智能体行为背后的机制。

这里同样存在代际差异。在旧的扩展思考体系里,这需要 beta 请求头 interleaved-thinking-2025-05-14;而在自适应思考下它是自动的,不再需要该请求头(文档写明“自适应思考会自动交错”,并表示迁移后可以去掉这个请求头)。迁到自适应思考,代码又能少一项配置。

9. 需要速度时:快速模式(fast mode)

如果你既想要思考的质量、又不想等那么久,选项是快速模式(fast mode)。按 Claude Code 关于 fast mode 的文档,它不是降级到另一个模型:跑的仍是同一个 Claude Opus,只是换成速度优先的配置。输出最高约快 2.5 倍,价格翻倍(截至 2026 年 9 月 25 日,Opus 5.5 为每百万 token 输入 $8 / 输出 $40,Opus 5 和 Opus 4.8 为输入 $10 / 输出 $50)。仅 Opus 5.5、Opus 5 与 Opus 4.8 可用;Opus 4.7 的快速模式已于 2026 年 7 月 24 日移除。

在 Claude Code 里:/fast

在 CLI 里输入 /fast 即可切换(在 VS Code 扩展中,所选模型支持时会出现“Toggle fast mode”命令)。官方建议:交互式快速迭代时开启;成本比延迟更重要时关闭。

在 API 上:研究预览版

仅限 Claude API——Amazon Bedrock、Google Cloud、Microsoft Foundry 上不可用。另外注意,切换速度档会使提示词缓存失效。

思考、effort、快速模式各司其职:思考决定“要不要推理”,effort 决定“推理多深”,快速模式决定“同样的推理多快送到”。在伸手去“太慢了,把思考砍掉”之前,记住你手里还有另外两张牌:调低 effort,或者打开快速模式。

总结

  • 扩展思考(budget_tokens)是旧方式。在 Opus 4.6 / Sonnet 4.6 上已弃用,从 Opus 4.7 起返回 400 错误——但在只支持扩展思考的模型(Haiku 4.5 / Sonnet 4.5 / Opus 4.5)上仍是唯一的思考模式
  • 自适应思考是当前方式。是否思考、思考多少由模型决定;深度用 effort 调节(五档;多数模型默认 high,Opus 5.5 默认 medium)
  • Opus 5 及以后、Sonnet 5 及以后和 Fable 各模型默认开启思考。Opus 5.5 和 Fable 无法关闭;Opus 5 仅在 effort high 及以下可以关;Sonnet 5 可以关;Sonnet 5.5 用 between_tools 代替 disabled(只关闭开头的思考,限 effort high 及以下)
  • 看不见的思考也要付费。新一代的默认值是 display: "omitted"(空的 thinking 块)。用 usage.output_tokens_details.thinking_tokens 来测量
  • 关闭思考有副作用(工具调用被写成文本、标签泄漏)。调低 effort 比直接禁用更安全
  • 交错思考在自适应模式下自动生效——不再需要 beta 请求头
  • 需要速度?用快速模式(约 2.5 倍速、2 倍价格,仅 Opus 5.5/5/4.8;在 Claude Code 里用 /fast 切换)

常见问题

Q. 我设置了 budget_tokens,结果收到 400 错误。

A. 从 Opus 4.7 起的模型(包括 Opus 5.5 / Opus 5 / Sonnet 5.5 / Sonnet 5 / Fable)不再接受 thinking: {"type": "enabled", "budget_tokens": N}。改写为 thinking: {"type": "adaptive"},并用 output_config: {"effort": ...} 控制深度。在 Haiku 4.5、Sonnet 4.5 这类只支持扩展思考的模型上,反而是 adaptive 会返回 400,所以不要改写。

Q. 切换到自适应思考后,回答总在半途被截断。

A. 思考 token 计入 max_tokens。尤其是 Opus 5 及以后的模型默认开启思考,那些为旧模型精打细算过 max_tokens 的代码,现在预算被思考挤占,答案随之被截断。给 max_tokens 留出更多余量,或者调低 effort。

Q. thinking 块返回来是空的,是哪里坏了吗?

A. 这是规格本身。在 Opus 5.5 / Opus 5 / Sonnet 5.5 / Sonnet 5 / Fable / Opus 4.8 / 4.7 上,display 的默认值是 "omitted"(空的 thinking 块)。想看到摘要,就显式设置 thinking: {"type": "adaptive", "display": "summarized"}。两种设置的计费完全相同。

Q. 把思考关掉,就能省下那笔钱吗?

A. 思考 token 本身确实省下了。但 Opus 5.5 和 Fable 根本无法关闭思考(400 错误),在 Opus 5 上它不能与 effort xhigh/max 组合(400 错误),而且即使能用,Anthropic 也在文档中写明了副作用:工具调用被当成纯文本写出、内部标签泄漏进输出。对智能体工作负载来说,保持思考开启、把 effort 降到 low / medium,省得更安全。

Q. 在 Claude Code(或聊天应用)里需要配置思考吗?

A. 不需要——Claude Code 和 claude.ai 会替你管理思考,没有任何 API 参数要设。你能碰到的只有 effort 设置和 /fast(快速模式开关);思考的开关机制永远不会暴露出来。

注:本文中的规格与数字基于 Anthropic 文档“Thinking”、“Extended thinking”,以及 Claude Code 文档“Fast mode”(均截至 2026 年 8 月)。规格会变化;在据此构建之前,请先核对官方文档的最新表述。