Skip to content

3.1 扩展思考模式

预计耗时:12 分钟

本关任务简报

很多人以为"扩展思考"是个要专门去开的隐藏开关。其实正好相反:在官方模型上,扩展思考默认就是开着的——Claude 在回答前会先做一轮推理,只是这段推理默认折叠起来、你没注意到而已。

那这一关学什么?学的是怎么确认它在工作、怎么把推理调深或调浅、怎么在单个难题上临时加码、以及中转模型不支持时怎么办。把这几件事搞清楚,你就能在架构选型、疑难 Bug、安全审计这类硬骨头上,稳定地让 Claude 多想几步。


通关奖励:解锁以下技能

  • 🧠 知道扩展思考默认开启,能一眼确认它正在工作
  • 🎚️ 会用 /effort 调节推理深度(默认就挺高,必要时再加)
  • ⚡ 掌握 ultrathink 关键词,在单个难题上临时加码
  • 📖 会用 Ctrl+O 读思考过程,从推理里提取价值
  • ⚠️ 了解中转模型的限制,以及绕过它的提示词替代方案

开始前先检查装备

条件扩展思考可用性
使用 Claude 官方 API / 订阅账号默认开启,完整支持
通过第三方中转接入取决于中转商是否转发 thinking 参数,可能不可用
用 cc switch 切换到国内模型大概率不支持;改用提示词替代方案

机制解析

扩展思考默认开启,先学会确认

在支持的官方模型(如 Sonnet 4.6、Opus 4.8)上,扩展思考默认开启。怎么确认?两个最直接的信号:

信号一:working 指示器里出现 "thinking"

Claude 干活时,输入框上方有一行 working 指示器 [类似 ✶ Undulating… (10s · thinking)]——这一行就是我们要盯的本体。它正在思考时,这行里会带上 "thinking" 字样;而且随着思考推进,措辞还会变,你会看到 "still thinking"、"thinking some more" 这类词轮换出现,文字颜色也会由浅入深地加重。看到这些,就说明默认思考正在起作用。

信号二:Ctrl+O 展开查看(默认看不到内容,要先开个设置)

Ctrl+O 能切换到详细(verbose)模式。但你多半会发现——展开后是空的,看不到实际推理内容。这不是 bug:在交互式会话里,思考块默认被 API "redact(隐去)"成一个折叠存根,只告诉你"它思考过了",不给看内容。这正是"明明显示在 thinking,Ctrl+O 却看不到东西"的原因。

想真正读到推理过程,先在 ~/.claude/settings.json 里打开这个设置:

json
{
  "showThinkingSummaries": true
}

之后再按 Ctrl+O,Claude 这一轮的推理就会以灰色斜体显示出来——分析了哪些维度、排除了哪些方案、怎么收敛到结论。

两点说明:① 这个设置只对交互式会话有效,对 -p 批处理、Agent SDK、VS Code 扩展无效;② 隐不隐藏只影响你看不看得到,不影响模型实际思考多少、也不影响计费(思考 token 照常计)。

一句话判断

看到 "thinking" 指示器 = 思考在跑,这是最直接的信号。想进一步读推理内容,先开 showThinkingSummaries: true 再按 Ctrl+O(否则展开是空的)。两个信号都没有,多半是中转模型没转发思考参数。


推理深度由 effort 指令控制

扩展思考不是"开/关"两档,而是深浅可调。控制它的是 effort(推理强度),默认就是较高的 high,大多数编码任务不用动。

需要时用 /effort 调:

text
/effort

不带参数会弹出滑块;也可以直接指定级别:

text
/effort high

可选级别(具体支持哪些取决于模型):

级别适合场景
low短、明确、对延迟敏感的小任务
medium想省点 token、可以牺牲一点深度
high默认,深度和成本的平衡点,覆盖绝大多数任务
xhigh更深的推理,token 花得更多
max最深推理、不限 token,仅对当前会话生效;可能"想过头",用前先试

日常基本不用碰——默认 high 已经够用。遇到真正烧脑的问题再往上调。


单个难题临时加码:ultrathink

不想改全局 effort,只想让这一轮多想想?在提示词里任意位置写上 ultrathink 这个词:

text
我们的认证系统应该用 JWT 还是 Session?
考虑安全性、扩展性和开发体验。ultrathink

Claude Code 会识别这个关键词,给这一轮追加一条"深入推理"的指令,下一轮自动恢复正常。

只有 ultrathink 是关键词

ultrathink 是被程序识别的特殊关键词。而 "think hard"、"think more"、"仔细想想" 这些只是普通提示词文字——它们也能引导 Claude 多分析(模型会响应你的措辞),但不会ultrathink 那样真正触发机制级的加码。


想关掉思考怎么办

少数情况下你可能想关掉它(比如想要更快的响应、或者中转模型表现怪异):

  • 临时切换:按 Alt+T(macOS 是 Option+T)切换当前会话的思考开关
  • 设为默认关闭:运行 /config 切换 thinking 模式,会写进 ~/.claude/settings.jsonalwaysThinkingEnabled

注:部分最新旗舰模型(如 Fable 5)始终使用扩展思考,上面的开关对它无效。


什么时候值得调深,什么时候保持默认

默认 high 应付日常完全够。真正值得 /effort xhigh 或加 ultrathink 的,是这几类:

值得加码:

  • 架构与技术选型(CRDT vs OT?微服务 vs 单体?)
  • 复杂 Bug 排查(低复现率、跨模块、并发相关)
  • 安全审计(从攻击者视角审查代码)
  • 性能优化决策(多种方案需要权衡)

保持默认就好:

  • 简单代码生成(写个函数、改个 bug)
  • 格式转换(JSON 转 CSV)
  • 快速问答(某个 API 怎么用)

黄金法则

遇到"我不确定最佳方案"或"这个问题有多条可行路径"时,加一句 ultrathink 往往立竿见影。


开始闯关

目标:在一个复杂问题上确认思考在工作,并对比加码前后的差别。

第 1 步:找一个有深度的问题

回忆一个 Claude 之前给过浅层或不够有说服力答案的问题——技术选型、设计方案、疑难 Bug 都行。

第 2 步:正常提问,确认思考在跑

直接发送问题,注意状态行有没有出现 "Thinking" 子行。出现了,说明默认思考正常工作。

第 3 步:读推理(需要先开设置)

想看 Claude 这一轮到底想了什么,先在 settings.json 里设 showThinkingSummaries: true,再按 Ctrl+O 展开——推理会以灰色斜体显示。没开这个设置的话,展开是空的,这是正常的。读思考过程经常能解释"它为什么给这个结论"。

第 4 步:加 ultrathink 重问一次

同一个问题,末尾加上 ultrathink,对比这一轮的推理深度和答案质量有没有变化。

第 5 步:如果完全看不到思考

说明当前可能是中转模型不支持。改用提示词替代方案:

text
请从以下几个角度分别分析,再给出最终建议:
[你的问题]

分析角度:
1. [角度一]
2. [角度二]
3. [角度三]

强制结构化提问,效果接近思考模式。


通关检定

  • [ ] 知道扩展思考在官方模型上默认开启,不是要手动开的隐藏功能
  • [ ] 能通过 "thinking" 指示器确认它在工作,知道读推理内容要先开 showThinkingSummaries
  • [ ] 知道用 /effort 调推理深度,默认是 high
  • [ ] 会用 ultrathink 在单轮临时加码,也知道 "think hard" 不是关键词
  • [ ] 了解中转模型可能不支持,知道用结构化提示词替代

全部点亮就算通关 ✓


卡关了?翻车指南在这

Ctrl+O 展开了,但思考内容是空的

这是默认行为,不是 bug——交互式会话里思考块默认被隐去(redact)。在 ~/.claude/settings.json 里设 showThinkingSummaries: true,重启后再展开就能看到灰色斜体的推理了。

连 "thinking" 指示器都没出现过

两种可能:一是当前模型不支持(中转服务商未转发 thinking 参数);二是思考被关掉了。先按 Alt+T 切一下、或 /config 看 thinking 开关;还不行就换官方 API Key 测试。确认是中转模型不支持的话,用结构化提示词替代。

思考很长,但最终答案很短

思考长不代表答案长——Claude 可能在推理阶段权衡了很多,但结论本身就是简洁的。这是正常行为。需要更详细的答案,在提示词里明确说"请详细展开回答"。

ultrathink 写了好像没区别

ultrathink 加的是这一轮的推理力度,简单问题上区别本来就不明显——它的价值在真正烧脑的难题上。另外确认你写的是 ultrathink 这个完整词,而不是 "think more" 之类。

思考消耗 token 太多

推理本身要花 token,effort 越高花得越多。解决办法:日常保持默认 high,只在真正需要时用 /effort xhighultrathink;省 token 的小任务可以 /effort low


下一关

3.2 多 Agent 并行编排 →

扩展思考解决"单次回答想得够不够深"的问题,下一关解决"一个 Claude 不够用"的问题——让 Claude 自己调度多个子 Agent 同时处理不同子任务,并行降低等待时间。

面向公开用户维护,内容基于 Claude Code 官方文档与真实使用经验整理