Chain of Thought 到底是什么?从提示词技巧到内置推理模型

CoT 为什么有效、如何被训练进模型,以及为什么不该把所有思考永久塞进上下文

August 31, 2026·6 min read·Yimin
#LLM#Chain of Thought#Reasoning Model#AI Agent#Token

Chain of Thought 不是模型脑内活动的录像,而是一块由模型自己书写、自己继续阅读的计算草稿纸。理解这句话,就理解了现代 reasoning model 的一半。

🎯 为什么语言模型需要“先想再答”?

看一道简单问题:

一本书 12 元,买 7 本后又优惠 15 元,最后付多少钱?

直接回答要求模型一步跳到最终 token:

69 元

如果先展开中间步骤,任务会变成:

12 × 7 = 84
84 - 15 = 69
所以最后付 69 元

第二种写法看起来更啰嗦,却把一次困难预测拆成了多次简单预测。模型生成 84 后,后续计算可以直接把它当作上下文使用,不必把全部中间状态都“憋”在一次前向计算里。

这就是 **Chain of Thought(CoT,思维链)**最朴素的价值:让模型把中间计算写出来,再基于自己刚写出的内容继续计算。


🧠 CoT 到底是什么?

CoT 是模型在最终答案之前生成的一系列中间推理 token,例如拆解问题、列出条件、计算、验证和修正。

但下面四个概念经常被混在一起:

概念它是什么能否直接看到
神经网络内部计算每一层 Transformer 产生的 hidden states、attention 和特征激活通常不能
Chain of Thought模型生成的中间推理 token取决于产品和 API
Reasoning 字段API 对这些 token 的一种包装形式API 决定
Agent 状态任务进度、工具结果、已完成步骤等外部记录应由应用管理

最重要的区别是:CoT 不是 hidden states 的逐字翻译。

模型内部一直在进行高维向量计算;CoT 则是模型通过自然语言或特殊符号生成的一条“可继续消费的推理轨迹”。它可能对解题有帮助,却不一定完整、忠实地解释模型内部为什么得出答案。

你可以把两者想象成:

模型内部计算:无数神经元共同活动,像整个大脑
CoT 文本:模型写在纸上的演算过程,像草稿
最终答案:交到你手上的答卷

草稿通常有用,但草稿不是大脑扫描图。


⚙️ 为什么“多写几步”真的能提高能力?

LLM 的基本动作是预测下一个 token:

已有 token → 预测下一个 token → 加入上下文 → 再预测

如果只允许输出最终答案,模型可用于计算的生成步骤很少。允许生成 CoT 后,每一个中间 token 都会成为下一步的新输入,相当于增加了 test-time compute(推理时计算量)

它主要带来四个好处:

  1. 分解问题:把多步任务拆成更简单的局部任务。
  2. 保存中间变量:数字、假设和计划不用只存在于隐式激活中。
  3. 提供纠错机会:模型可以在最终答案前检查冲突、回退或换路径。
  4. 连接外部行动:在 Agent 中,推理可以决定下一步调哪个工具,再根据结果更新计划。

这不是凭空增加知识。如果模型不知道一个事实,写十页 CoT 也可能只是写出十页更有结构的幻觉。CoT 更像是让模型更充分地使用已有能力。


🏛️ CoT 的历史:从“草稿纸”到 reasoning model

2021:Scratchpad——先把中间计算写出来

Show Your Work: Scratchpads for Intermediate Computation with Language Models 研究了一个直接想法:训练 Transformer 输出中间计算步骤,再输出结果。

研究发现,即使生成更多 token 增加了出错机会,把复杂计算拆成较简单的中间步骤,整体表现仍可能显著提升。“给模型一块草稿纸”的工程直觉由此变得清晰。

2022:Chain-of-Thought Prompting——不改模型,只改提示词

Chain-of-Thought Prompting Elicits Reasoning in Large Language Models 把这个现象推向主流:只需在 prompt 中提供几组“问题 → 推理步骤 → 答案”的示例,大模型就会模仿这种解题方式。

紧接着,Large Language Models are Zero-Shot Reasoners 展示了更简单的做法:一句 “Let’s think step by step” 就可能诱导模型展开推理。

这一阶段的 CoT 主要还是 prompting 技巧:模型权重没有改变,开发者通过上下文把潜在能力“叫出来”。

2022:从一条思路扩展到多条思路和行动

同一年出现了几条重要分支:

  • Self-Consistency:采样多条不同推理路径,再选择最一致的答案。
  • STaR:让模型生成推理轨迹,筛选能得到正确答案的轨迹,再用它们继续训练模型。
  • ReAct:让 Reasoning 与 Action 交替出现,形成“思考 → 调工具 → 观察 → 再思考”的 Agent 循环。

CoT 从“数学题写过程”逐渐演变成 Agent 的控制流。

2023:不仅奖励答案,也监督过程

Let’s Verify Step by Step 区分了两种训练信号:

监督方式奖励什么
Outcome supervision最终答案是否正确
Process supervision每个中间推理步骤是否合理

这意味着模型不只学习“猜中答案”,还可以学习哪些推理路径更可靠。

2024—2025:Reasoning model 与 test-time compute

2024 年,OpenAI 在 Learning to reason with LLMs 中介绍 o1:通过大规模强化学习,让模型学会更有效地使用 CoT;性能会随训练计算量和推理时思考量增加而提升。

2025 年,DeepSeek-R1 进一步展示了通过可验证奖励进行强化学习,可以激励模型形成反思、检查和延长推理等行为。

这时的变化不再是“用户写一句 step by step”,而是模型在 post-training 阶段已经学会:遇到困难问题时,应该主动分解、尝试、验证和修正。

现在:Thinking 成为模型和 API 的正式能力

以 Gemma 4 为例,模型使用专门的 thinking control tokens 区分 thought、tool call 和最终回答,并支持开启或关闭 thinking mode。Gemma 4 Thinking

现代 API 也常把结果拆开:

reasoning / thinking:供模型完成本轮推理
content:给用户或下一层应用的最终回答
tool_call:请求应用执行一个外部动作

这就是我们常说的“CoT 被内置了”。


🧩 “内置推理”究竟内置了什么?

它不是给 Transformer 加了一个神秘的逻辑芯片,而是多层机制共同作用:

大规模预训练
    ↓ 获得语言、知识和潜在推理模式
Reasoning traces / 合成数据微调
    ↓ 学会展开有效中间步骤
过程监督或可验证奖励的强化学习
    ↓ 学会检查、回退、延长或缩短思考
特殊 chat template 与 control tokens
    ↓ 区分 thought、answer、tool call
API 与推理引擎
    ↓ 控制 thinking budget,并解析或隐藏 reasoning

因此,“内置”至少包含三层含义:

  1. 行为被训练进模型:不用每次教它什么叫逐步推理。
  2. 格式被训练和模板固化:模型知道在哪个 channel 思考、在哪个 channel 回答。
  3. 产品提供控制面:API 可以设置 reasoning effort、thinking budget 或返回格式。

但内置不代表免费,也不代表自动记忆。Reasoning token 仍然需要生成、占用计算量,通常也会计入 token 使用量;下一次无状态 API 调用也不会天然记住上一次想过什么。


🔍 Reasoning 字段为什么不能直接当作历史记忆?

一次 Chat Completions 请求通常是无状态的。服务端返回:

{
  "role": "assistant",
  "reasoning": "本轮中间推理",
  "content": "最终答案"
}

下一次请求时,应用仍要自行决定历史怎么组织。不同模型的 chat template 对历史 thought 的要求并不相同,reasoning 也不是一个跨供应商统一的“永久记忆槽”。

以 Gemma 4 的官方建议为例:

场景历史 thought 的处理方式
普通多轮对话移除旧 thought,只保留最终回答
同一轮工具调用在 tool call 和 tool result 之间保留相关 thought
长时间 Agent 任务把关键推理提炼成简短摘要或结构化状态

原因很简单:工具执行前的 thought 往往包含“为什么调用这个工具、之后要验证什么”,在 tool result 返回时仍属于同一个未完成事务;而已经结束的普通对话,没有必要永久携带全部草稿。

长期 Agent 更应该保存的是:

{
  "goal": "完成目标任务",
  "completed_steps": ["步骤 A", "步骤 B"],
  "observed_state": "步骤 B 已确认成功",
  "next_step": "验证最终结果"
}

这比保存十页“我觉得下一步也许应该……”更稳定、更便宜,也更容易审计。


💰 全量回放 CoT 为什么会很贵?

假设一个工具循环每轮产生 1,000 个 reasoning tokens,并且每次请求都重发全部历史:

第 1 次请求:回放 0
第 2 次请求:回放 1,000
第 3 次请求:回放 2,000
第 4 次请求:回放 3,000
第 5 次请求:回放 4,000
──────────────────────
累计额外输入:10,000 tokens

每次请求的上下文线性增长,但整个任务累计处理的 token 接近二次增长。除此之外还有三个成本:

  • 延迟:输入越长,prefill 越慢。
  • 上下文窗口:旧 reasoning 会挤掉更重要的用户输入和工具证据。
  • 认知锚定:早期错误假设被反复回放,模型更难换思路。

Prompt caching 可以降低部分重复前缀的成本,但它不能替代正确的上下文设计。


🚀 现在更通用的工程做法

任务类型推荐做法
简单问答、改写、分类直接回答,不必强制长 CoT
数学、规划、复杂代码使用模型内置 reasoning,并给出合适 budget
可验证任务用测试、计算器、编译器或 verifier 检查结果,而不是只相信文字推理
短工具循环暂时保留与当前 tool call 相关的 reasoning
长时间 Agent保存结构化任务状态,并定期生成简短进度摘要
高可靠场景多路径采样、Self-Consistency、过程验证或独立审查
用户解释生成简洁、可核验的解释,不直接暴露原始内部 CoT

一个成熟 Agent 的上下文通常应该是:

少量稳定规则
    + 当前用户目标
    + 最近的必要对话
    + 真实工具结果
    + 结构化任务状态
    + 必要的短期 reasoning

而不是:

从任务开始到现在的所有原始思考全文

⚠️ CoT 的三个常见误区

误区一:CoT 就是模型真实思维的录像

不一定。自然语言 CoT 可能遗漏真实影响因素,也可能事后合理化答案。Anthropic 的 Reasoning models don’t always say what they think 展示了 reasoning trace 的 faithfulness 问题。

所以 CoT 可以辅助理解和调试,但不能单独充当严格审计证据。

误区二:思考越长,答案越好

长 CoT 提供更多计算机会,也提供更多跑偏机会。简单问题强制长篇推理,可能增加延迟、幻觉和过度分析。

正确目标不是“想得最长”,而是“为任务分配足够且有效的 test-time compute”。

误区三:把 reasoning 存下来,模型就拥有长期记忆

Reasoning 只是文本历史。它会占 token,会被截断,也可能携带错误。真正的长期记忆需要检索、摘要、结构化状态和明确的数据生命周期。


📝 总结:CoT 是计算接口,不是心灵窗口

回顾整条演进路线:

内部神经网络计算
    ↓
把中间步骤写成 scratchpad
    ↓
用 prompt 诱导 Chain of Thought
    ↓
采样多路径、连接工具、监督推理过程
    ↓
通过微调与强化学习训练 reasoning behavior
    ↓
用专门 channel 和 API 把 thinking 内置化

CoT 之所以有效,是因为生成中间 token 给了模型更多连续计算步骤,也把中间状态写进了它随后能读取的上下文。

现代 reasoning model 则进一步把这种行为训练进模型,并通过特殊 token、chat template 和 API 变成正式能力。但三个边界始终不变:

  1. CoT 不等于完整、忠实的内部思维。
  2. Reasoning token 不是免费的,也不会自动跨请求保存。
  3. 长期 Agent 应保存结果和状态,而不是永久保存全部草稿。

最好的类比仍然是草稿纸:难题需要它,工具执行到一半时不能突然把它扔掉;但题目做完后,应该把结论写进答卷,而不是每做下一题都把过去所有草稿重新抄一遍。


📚 参考资料