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 里打开这个设置:
{
"showThinkingSummaries": true
}之后再按 Ctrl+O,Claude 这一轮的推理就会以灰色斜体显示出来——分析了哪些维度、排除了哪些方案、怎么收敛到结论。
两点说明:① 这个设置只对交互式会话有效,对
-p批处理、Agent SDK、VS Code 扩展无效;② 隐不隐藏只影响你看不看得到,不影响模型实际思考多少、也不影响计费(思考 token 照常计)。
一句话判断
看到 "thinking" 指示器 = 思考在跑,这是最直接的信号。想进一步读推理内容,先开 showThinkingSummaries: true 再按 Ctrl+O(否则展开是空的)。两个信号都没有,多半是中转模型没转发思考参数。
推理深度由 effort 指令控制
扩展思考不是"开/关"两档,而是深浅可调。控制它的是 effort(推理强度),默认就是较高的 high,大多数编码任务不用动。
需要时用 /effort 调:
/effort不带参数会弹出滑块;也可以直接指定级别:
/effort high可选级别(具体支持哪些取决于模型):
| 级别 | 适合场景 |
|---|---|
low | 短、明确、对延迟敏感的小任务 |
medium | 想省点 token、可以牺牲一点深度 |
high | 默认,深度和成本的平衡点,覆盖绝大多数任务 |
xhigh | 更深的推理,token 花得更多 |
max | 最深推理、不限 token,仅对当前会话生效;可能"想过头",用前先试 |
日常基本不用碰——默认 high 已经够用。遇到真正烧脑的问题再往上调。
单个难题临时加码:ultrathink
不想改全局 effort,只想让这一轮多想想?在提示词里任意位置写上 ultrathink 这个词:
我们的认证系统应该用 JWT 还是 Session?
考虑安全性、扩展性和开发体验。ultrathinkClaude Code 会识别这个关键词,给这一轮追加一条"深入推理"的指令,下一轮自动恢复正常。
只有 ultrathink 是关键词
ultrathink 是被程序识别的特殊关键词。而 "think hard"、"think more"、"仔细想想" 这些只是普通提示词文字——它们也能引导 Claude 多分析(模型会响应你的措辞),但不会像 ultrathink 那样真正触发机制级的加码。
想关掉思考怎么办
少数情况下你可能想关掉它(比如想要更快的响应、或者中转模型表现怪异):
- 临时切换:按
Alt+T(macOS 是Option+T)切换当前会话的思考开关 - 设为默认关闭:运行
/config切换 thinking 模式,会写进~/.claude/settings.json的alwaysThinkingEnabled
注:部分最新旗舰模型(如 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 步:如果完全看不到思考
说明当前可能是中转模型不支持。改用提示词替代方案:
请从以下几个角度分别分析,再给出最终建议:
[你的问题]
分析角度:
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 xhigh 或 ultrathink;省 token 的小任务可以 /effort low。
下一关
扩展思考解决"单次回答想得够不够深"的问题,下一关解决"一个 Claude 不够用"的问题——让 Claude 自己调度多个子 Agent 同时处理不同子任务,并行降低等待时间。