# 第九阶段 · 模块九 · 第二节:思维链提示
什么是思维链提示(Thinking)?Claude Code 如何实现思维链?adaptive thinking 是什么?
Claude Code 全局架构
┌─────────────────────────────────────────────────────────────────────┐
│ 高级主题 │
│ │
│ 思维链提示 ← 本节 │
│ ├── ThinkingConfig ──> thinking.ts │
│ ├── 思维模式 ──> adaptive/enabled/disabled │
│ └── 模型支持 ──> modelSupportsThinking │
└─────────────────────────────────────────────────────────────────────┘
思维链(Chain of Thought)= 模型在生成最终答案前先展示思考过程
┌─────────────────────────────────────────────────────────────────────┐
│ 无思维链: │
│ 问题 → 答案 │
│ │
│ 有思维链: │
│ 问题 → 思考过程 → 答案 │
└─────────────────────────────────────────────────────────────────────┘
源码位置:`src/utils/thinking.ts`
export type ThinkingConfig =
| { type: 'adaptive' } // 自适应思维
| { type: 'enabled'; budgetTokens: number } // 启用思维
| { type: 'disabled' } // 禁用思维
问 1:思维链有什么用?
// 思维链的优势:
// 1. 更清晰的推理
// - 模型展示思考步骤
// - 更容易发现错误
// 2. 更复杂的推理
// - 可以处理多步骤问题
// - 可以尝试不同方法
// 3. 更好的结果
// - 尤其对于数学、代码问题
源码位置:`src/utils/thinking.ts`
// 1. adaptive - 自适应(默认)
// 模型自动决定是否使用思维链
// 2. enabled - 启用
// 强制使用思维链,可指定 token 预算
// 3. disabled - 禁用
// 不使用思维链
// adaptive = 模型自动决定何时使用思维
// 模型会根据问题复杂度自动判断:
// - 简单问题:不使用思维(节省 token)
// - 复杂问题:使用思维(提升效果)
export function modelSupportsAdaptiveThinking(model: string): boolean {
// 仅支持 Claude 4.6+ 的特定模型
return canonical.includes('opus-4-6') ||
canonical.includes('sonnet-4-6');
}
问 1:adaptive 和 enabled 的区别?
// adaptive:模型自己决定
// - 更智能
// - 节省 token
// - 仅部分模型支持
// enabled:强制思维
// - 始终使用思维
// - 消耗更多 token
// - 所有支持的模型可用
// thinking 需要消耗 token
// budgetTokens = 分配给思维的 token 数量
{ type: 'enabled', budgetTokens: 10000 }
// 最多使用 10000 tokens 思考
# 命令行配置
claude --thinking enabled
claude --thinking adaptive
claude --thinking disabled
# 指定预算
claude --thinking enabled --max-thinking-tokens 20000
问 1:思维预算越大越好吗?
// 不是
// 优点:更深入的思考
// 缺点:消耗更多 token,成本更高
// 建议:
// - 简单问题:adaptive 或较小的预算
// - 复杂问题:较大的预算(10000-20000)
源码位置:`src/utils/thinking.ts` 第 90 行
export function modelSupportsThinking(model: string): boolean {
const canonical = getCanonicalName(model);
const provider = getAPIProvider();
// 1P 和 Foundry:所有 Claude 4+ 模型
if (provider === 'foundry' || provider === 'firstParty') {
return !canonical.includes('claude-3-');
}
// 3P(Bedrock/Vertex):仅 Opus 4+ 和 Sonnet 4+
return canonical.includes('sonnet-4') ||
canonical.includes('opus-4');
}
export function modelSupportsAdaptiveThinking(model: string): boolean {
const canonical = getCanonicalName(model);
// 仅 Claude 4.6+ 支持
if (canonical.includes('opus-4-6') ||
canonical.includes('sonnet-4-6')) {
return true;
}
// 其他模型不支持
return false;
}
问 1:哪些模型不支持思维?
// Claude 3 系列不支持
// - claude-3-opus
// - claude-3-sonnet
// - claude-3-haiku
// 对于这些模型:
// Claude Code 会自动禁用思维功能
源码位置:`src/utils/thinking.ts` 第 32 行
// 用户可以在提示中包含 ultrathink 关键词
// 强制使用深度思维
export function hasUltrathinkKeyword(text: string): boolean {
return /\bultrathink\b/i.test(text);
}
// 在消息中使用 ultrathink
// 模型会进入深度思考模式
// 示例:
// "Write a sorting algorithm. ultrathink about the best approach."
问 1:ultrathink 和 --thinking 有什么区别?
// ultrathink:提示词中的关键词
// - 用户在消息中触发
// - 一次性深度思考
// --thinking:命令行标志
// - 全局启用思维
// - 持续生效
源码位置:`src/utils/thinking.ts`
// 思维过程显示为彩虹色动画
const RAINBOW_COLORS = [
'rainbow_red',
'rainbow_orange',
'rainbow_yellow',
'rainbow_green',
'rainbow_blue',
'rainbow_indigo',
'rainbow_violet',
];
// 动画效果让用户知道模型正在"思考"
┌─────────────────────────────────────────────────────────────────────┐
│ 🤖 正在思考... ████████████████░░░░░░░░ │
└─────────────────────────────────────────────────────────────────────┘
问 1:思维过程对用户可见吗?
// 默认可见
// Claude Code 会显示思维进度
// 用户可以:
// 1. 查看完整的思维过程
// 2. 中断思维(如果时间过长)
// 3. 配置是否显示
// 适合:
// - 算法设计
// - 代码优化
// - 复杂调试
// - 多步骤推理
// - 架构设计
// 不适合:
// - 简单查询(今天天气?)
// - 快速回答(定义什么是变量)
// - 闲聊对话
// 思维会消耗额外的时间和 token
// 时间:可能增加 2-5 倍
// Token:可能增加 10-30%
// 但通常能获得更准确的结果
问 1:什么时候应该禁用思维?
// 禁用思维的场景:
// 1. 需要快速响应
// - 简单问题
// - 只需要确认
// 2. 成本敏感
// - token 预算有限
// - 简单任务
// 3. 模型不支持
// - Claude 3 系列
答案:
// 建议:
// 1. 默认使用 adaptive
// - 模型自动决定
// - 平衡效果和成本
// 2. 复杂问题使用 enabled + 大预算
// - 算法设计
// - 架构决策
// 3. 快速任务使用 disabled
// - 简单查询
// - 闲聊
答案:
// 会
// 思维消耗的 token 也需要付费
// 约增加 10-30% 的 token 消耗
// 但可能减少重试次数
// 总体可能更划算
答案:
# 启用 verbose 模式
claude --verbose
# 查看思维日志
# Claude Code 会显示:
# - 思维开始
# - 思维进度
# - 思维完成
| 文件 | 核心内容 |
| `src/utils/thinking.ts` | 思维链实现 |
| `src/cli/print.ts` | 思维显示 |
下一节我们将深入 代码库索引:
- 代码索引的工作原理
- 索引优化策略
- 语义搜索
*- 第一轮:□ 事实准确性*
*- 第二轮:□ 深度与洞见*
*- 第三轮:□ 可读性与价值*