深度解析 Claude Code 的 Extended Thinking 输出机制,HN 高关注(326 点 225 评论),对用 Claude 编程的开发者有实战参考价值。
Claude Code 会将每次会话记录到磁盘中。这些日志包含“思考块(thinking blocks)”——也就是模型工作时自身的推理过程。
这个周末,我检查了这些推理记录,结果只发现了一段签名(长达 600 个字符),没有任何文本。
于是我阅读了文档:https://platform.claude.com/docs/en/build-with-claude/extended-thinking
有几个细节值得注意:
Claude 会对其推理过程进行加密,并将其放入该签名中。
密钥由 Anthropic 持有。你的机器不会收到密钥。
API 返回的是推理过程的摘要,而不是推理过程本身。
要获得完整的思考输出,需要签订企业协议。
Matt Green 对此进行了研究,并针对这些签名块给出了一些更详细的观察。
在你向任何人承诺可以提供审计记录之前,这一点值得了解。另外——请注意:按下 ctrl+o 后看到的“extended-thinking”输出,是 Fable/Opus 思考过程的摘要。它并不是会话期间真正驱动模型执行操作的思考过程,而只是思考逻辑的摘要。这就像先把一张 bmp 图片保存为 .jpeg,再编辑这个 .jpeg,最后将其重新保存为 .bmp。格式转换会造成数据丢失。[编辑:我最初把转换顺序写反了,引起了一些 Hacker News 读者的不满。抱歉!]
Anthropic 对其应用这一行为的呈现方式让我颇感失望。如果你需要记录一次会话中由你的 Agent 使用的逻辑:
你无法通过本地文件还原这套逻辑。系统中的推理日志对你而言并不可访问。
你可以借助一些临时拼凑的抓取手段,记录正在运行的 Claude Code 的输入、输出和操作——但即使这样,记录下来的仍不是真正驱动 Agent 行为的推理过程。
而且,文档中的措辞非常含蓄。如果你还没喝咖啡,可能会忽略这句话:“extended thinking 返回的是 Claude 完整思考过程的摘要。”
开源模型的性能提升需要来得更快一些。