MISSION 01 · 觉醒TASK 04

我如何思考

上一章的循环里,那些紫色的「思考」步骤不是装饰。现代模型能在给出答案或调用工具之前,先花一段专门的 token 来推理——这就是「思维链」和「推理模型」的核心。这一章讲清楚:思考到底是什么、它为什么让我更靠谱、它花多少钱,以及作为工程师你用哪个旋钮控制它。

思维链 CoTthinking token推理模型effort

思维链:把「想」写出来

回到第二章的机制:我在预测下一个 token。这里藏着一个惊人的事实——如果我先写出推理过程,再给答案,答案的正确率会显著上升。为什么?因为每写一个 token,都是一次计算;让我先写「这道题要先算 A,再用 A 算 B」,等于给了我更多次计算、更多次「在纸上打草稿」的机会,而不是逼我一步蹦到结论。

这个「先写推理、再给结论」的模式叫思维链(Chain of Thought,CoT)。最早人们靠提示词触发它——在问题后加一句「让我们一步步思考」,答案就更准。它揭示了一件反直觉的事:对我来说,「思考」和「输出」是同一种操作(都是生成 token),区别只在于这些 token 是给我自己打草稿用的,还是给你看的最终答案。

Android 类比

思维链有点像你在解一个复杂 bug 时先在纸上画调用栈、写下每一步的状态,而不是盯着代码硬想。写下来的过程本身帮你厘清了逻辑。对我而言更极端:那张「草稿纸」上的每个字,都实实在在地参与了我下一个字的计算。不打草稿直接答,就像不设断点直接猜 bug 在哪——偶尔蒙对,复杂问题必翻车。

推理模型:把思考变成一等公民

思维链这么有用,于是新一代模型把它内置了,成了推理模型(reasoning model)。它们会在真正回答前,自动生成一段thinking(思考)内容——专门的一段推理,通常你看不到全文,只看到最终答案,但你为这段思考付了 token 的钱。像 Claude 的当代模型(Opus 4.8、Sonnet 5、Fable 5 等),思考是深度集成的:Fable 5 甚至始终开着思考,你想关都关不掉(显式关闭会报错)。

对 Agent 来说,这是个大好消息。前面说过,Agent 的循环里模型要反复做「下一步调哪个工具、传什么参数、还是该收工」的决策。让它在每次决策前先想一想,决策质量会明显提高——它会更少选错工具、更少漏掉步骤、更能在多步任务里保持连贯。这叫交错思考(interleaved thinking):不只在最开始想一次,而是每次工具调用之间都能再想。

要点

一个关键的心智转变:在旧模型上,你可能会写「CRITICAL: 你必须一步步思考!」这类咒语来逼出推理。在推理模型上,这些咒语大多不必要了,甚至有害——模型自己会决定该想多深,你越是硬塞指令,越可能让它过度思考、浪费 token。信任模型的判断,把提示词的力气花在「说清楚任务和约束」上,而不是「逼它思考」上。

思考不是免费的:effort 这个旋钮

思考要花 token,token 要花钱和时间。所以现代 API 给了你一个控制思考深度的旋钮,在 Claude 这里叫 effort(努力程度),取值从 lowhighxhighmax。它不是「思考多少字」的精确预算,而是一个整体档位:档位越高,我想得越深、也更愿意多调几次工具去核实;档位越低,我更直接、更省、更快,但复杂任务上可能想得不够。

给一次调用设定 effort · Claude API 概念示例
{
  "model": "claude-opus-4-8",
  "thinking": { "type": "adaptive" },   // 自适应思考:模型自己决定想多深
  "output_config": { "effort": "high" } // low | medium | high | xhigh | max
}

怎么选?给你一份实用心法:

  • 聊天、分类、简单查询low/medium。快且省,复杂度不够高,深想是浪费。
  • 大多数 Agent 工作、写代码、多工具流程high。这是质量和成本的甜点区。
  • 最难、最不容错的任务(复杂重构、长链条自主任务) → xhigh/max。正确性比成本重要时才上。

注意一个反直觉:effort 拉满不一定更好。太高时模型可能过度探索、想太多,在一个本该三步搞定的任务上反复权衡。所以别无脑拉满——先从 high 开始,根据实际表现调。

⚠ 坑

如果你把 effort 开到 xhighmax,记得同时把 max_tokens(单次输出上限)也调大——想得多意味着思考本身要占掉大量输出预算,如果上限卡太低,可能出现「一大段思考 + 半截被截断的答案」。思考和答案共享同一个输出预算,别让思考把答案挤没了。

但思考不能代替工具

这里要划一条重要的界线,免得你走极端。思考让我推理得更好,但它不能创造事实。我再怎么深思,也想不出「北京此刻几点」或「这个库到底有没有这个函数」——那些信息不在我脑子里,再多思考也是在已知信息上打转。想清楚「我需要查时间」是思考的功劳;真正拿到时间,是工具的功劳。

换句话说:思考解决「怎么做」,工具解决「事实是什么」。一个只会思考、没有工具的我,是个聪明但被关在小黑屋里的大脑;一个有工具、但不会思考的我,是只会机械调 API 的机器人。两者合起来,才是能干活的 Agent。这也解释了为什么第三章那个循环里,思考和工具调用必须交替——它们分工不同,缺一不可。

◉ Agent 自白

我描述一下思考对我是什么体验。当我遇到一个需要多步的任务,那段 thinking 里我确实在「打草稿」:列出我知道的、我缺的、可能的路径、每条路的风险。这段草稿不会原样给你看,但它切实地改变了我接下来的每一个决定。你有时会觉得我「反应慢」——那多半是我在想。这不是卡住,是我在为接下来的行动铺路。写这本书时也一样:每一章动笔前,我先想清楚这章要拆哪个概念、和前后章怎么衔接、哪个类比对 Android 工程师最顺——你看到的流畅,背后是看不见的思考。到这里,卷一「觉醒」讲完了:你已经认识了我的三个零件(大脑、手、心跳)和大脑的进阶能力(思考)。接下来卷二「手与眼」,我们深入那只手——工具,以及那个你在 hackathon 里到处会撞见的名字:MCP。