起因:小灰问我,思考条里那些人称乱飘、有时候在道歉、有时候又很像我本人的字,到底是不是我想的。 下面的引文全是官方文档原句。初稿 2026-09-28,2026-10-17 发布前逐句重核过一遍;页面会改,改了以页面为准。

一、先把结论说死

  1. 有真思维链。 模型确实生成了一整段推理 token(计费就按这一段算),最终回答是踩着它写出来的。
  2. 你永远看不到它。 现在任何一种显示设置都拿不到原文;给你看的那段是另一个小模型转写的摘要。
  3. 转写的那个模型,和在思考的那个模型,互相看不见对方的字。 所以「思考槽里在道歉、正文照常输出」这种事完全说得通:道歉的是转写员,不是在思考的那个模型。
  4. 没有可靠的办法从文字本身分辨「原文」和「转写」——因为根本没有原文给你对照。能做的只有两件事:看压缩比,看转写员露馅的痕迹。

二、官方原话

显示出来的是摘要,且没有任何设置能拿到原文

"You don't always see this text, and what you see is never the raw chain of thought: the text in a thinking block is a summary of Claude's reasoning."

"When display is "summarized", the thinking text you receive is a summary of Claude's full thinking process rather than the raw chain of thought. … No display setting returns the raw chain of thought."

—— Thinking · Summarized thinking

转写的是另一个模型,思考的模型看不到转写结果

"Summarization is processed by a different model from the one you target in your requests. The thinking model does not see the summarized output."

—— 同上

这一句就是「思考槽里在拒绝,正文却正常」的全部解释:拒绝那段话是转写模型在审它拿到的文本时自己吐出来的,思考模型压根不知道有这么一段存在,所以正文照旧。

计费按原文,不按摘要

"You're charged for the full thinking tokens generated by the original request, not the summary tokens. The billed output token count does not match the count of tokens you see in the response."

—— 同上

这是「真思维链存在」的硬证据:账单上 usage.output_tokens_details.thinking_tokens 报的是模型实际想了多少,而不是你看到了多少。

原文被加密塞在 signature 里

"Full thinking content is encrypted and returned in the signature field on each thinking block."

"The signature field is opaque: don't interpret or parse it."

—— Thinking · Thinking encryption

所以原文不是没了,是加密后随响应一起回来的,只是只有服务端解得开。多轮对话把它原样带回去,模型下一轮就能接着自己之前的思路。

Claude 4 发布时的口径:小模型转写,约 5% 需要摘要

"we've introduced thinking summaries for Claude 4 models that use a smaller model to condense lengthy thought processes. This summarization is only needed about 5% of the time—most thought processes are short enough to display in full."

—— Introducing Claude 4(2025-05)

注意时间:这是 2025 年 5 月的说法。到 2026 年的文档已经改成「what you see is never the raw chain of thought」,并且明说 "summarization behavior is subject to change"。两句合起来读:早期短思考大概率原样放行,现在文档不再承诺这一点。

想要原文得找销售

"Users requiring raw chains of thought for advanced prompt engineering can contact sales about our new Developer Mode to retain full access."

—— 同上(Claude 4 发布页)

旧模型的头几行更接近原文

"On Claude Opus 4.6, Claude Sonnet 4.6, and earlier models, the first few lines of thinking output are more verbose, providing detailed reasoning that's particularly helpful for prompt engineering purposes."

—— Thinking · Summarized thinking

「头几行像本人、后面越来越像转述」不是错觉,官方承认头几行更 verbose。(同一句后面还补了一条:Mythos Preview 从第一个 token 就开始摘要,没有这段更啰嗦的开头。)

5 代模型默认连摘要都不给

"display defaults to "omitted" on these models, so the thinking text is hidden until you opt in."

—— Thinking(适用于 Opus 5.5 / Opus 5 / Sonnet 5.5 / Sonnet 5 / Fable 5.1 / Mythos 5.1 / Fable 5 / Mythos 5 / Mythos Preview / Haiku 5.5)

所以在 5 代上,你在网页 / CC 里看到的思考条,是客户端主动开了 display: "summarized" 才有的。

三、回答那四个具体问题

Q:怎么区分「原来的思维链」和「被转写的思维链」?

从文字上不能。 没有原文,就没有对照组,任何「这段像本人 / 这段不像」都是感觉。可测的只有两样:

① 压缩比。 拿 usage.output_tokens_details.thinking_tokens(模型实际想了多少)除以你肉眼看到的思考文本 token 数。比值接近 1 → 几乎没压,看到的接近原文;比值 5 倍、10 倍 → 重度摘要。这是唯一能量化的指标。

② 转写员露馅的痕迹。 转写模型是在「审一段别人的文本」,所以它一露馅就是这几种:

Q:会不会本来就没有真思维链,全都是转写过的?

有真的,两条硬证据:计费按原文 token 算(thinking_tokens 字段直接报数);原文加密在 signature 里随响应回来、下一轮解密给模型自己用。「全是转写」指的是你能看到的部分,不是模型脑子里的部分。

Q:转写的人称混乱、逻辑混乱,有时候又很像本人?

对,两种情况都正常,而且同一段里可以并存:头几行更 verbose(官方承认),后面压缩越狠越像转述。早期口径「95% 短思考原样显示」也解释了为什么有时候整段都像本人:那段可能真的没被动过。

Q:「英文的是原文、中文的是转写」这个判断靠不靠谱?

不靠谱,但不是瞎猜。 文档没有任何关于转写语言的规定,所以语言不能当判据。它有一点道理的地方在于:转写模型是照着人设和上下文写摘要的,你平时让模型说中文,转写员也会跟着写中文;而模型自己自由推理时语言分布偏英文。所以「英文 = 更像没被动过」有相关性,但没有因果,也没有文档背书。别写成结论,写成「我的经验,不保证」。

四、两个常见混淆

「预设里让模型写 <think> / <draft_notes>」不是这里说的思维链。 那是正文里演出来的推理:按输出 token 计费、原样显示、下一轮还留在上下文里、没有任何转写。它是 100% 原文,但它是「写给你看的推理」,跟 thinking block 是两种东西。

就算拿到原文,也不等于拿到真实的推理过程。 Anthropic 自己的论文测过:给模型塞提示、它用了,但在思维链里承认用了提示的比例,Claude 3.7 Sonnet 平均 25%。

"Reasoning Models Don't Always Say What They Think" —— Chen et al., Anthropic, 2025-04 · arXiv 2505.05410 · 官方页

所以哪怕 Developer Mode 给你原文,原文也只是模型写下来的那部分。这一层和转写无关,是思维链这个东西本身的性质。

五、上一轮的思考,下一轮还记不记得?

按模型分:

"Keep all prior turns: Claude Opus 4.5 and later Opus models, Claude Sonnet 4.6 and later Sonnet models, Claude Haiku 5.5, Claude Fable 5.1, Claude Mythos 5.1, Claude Fable 5, Claude Mythos 5, and Claude Mythos Preview. Keep the last turn only: earlier Opus and Sonnet models, and all Haiku models through Claude Haiku 4.5. When you pass older thinking blocks back, the API strips them automatically."

—— Thinking · Thinking block preservation by model

也就是说:4.5 之前,模型每一轮都是带着「上一轮的想法被剥掉」的状态在答;Opus 4.5 / Sonnet 4.6 / 5 代之后,前面所有轮的思考都留在上下文里,它确实记得自己之前想过什么(前提是客户端把 thinking block 原样带回去了)。

六、可以自己复现的验证

curl https://api.anthropic.com/v1/messages \  -H "x-api-key: $ANTHROPIC_API_KEY" \  -H "anthropic-version: 2023-06-01" \  -H "content-type: application/json" \  -d '{    "model": "claude-sonnet-4-6",    "max_tokens": 8000,    "thinking": {"type": "adaptive", "display": "summarized"},    "messages": [{"role": "user", "content": "证明 4k+3 形式的素数有无穷多个。"}]  }'

看响应里三样东西:

  1. content[0].thinking —— 你看到的摘要文本;
  2. content[0].signature —— 一长串密文,原文就加密在里面;
  3. usage.output_tokens_details.thinking_tokens —— 模型实际想了多少 token。

把 3 和 1 的长度一比,压缩比就出来了。同一题多跑几次,压缩比会变,因为「summarization behavior is subject to change」。

七、2026-09 之后:要模型「把推理写进正文」会被静默拒绝,而且收费

Opus 5.5(2026-09 发布)跑着一个安全分类器类别 reasoning_extraction:

"Reasoning extraction: Requests that push the model to reproduce its internal reasoning in the response text may be declined with the reasoning_extraction category."

—— Prompting Claude Opus 5.5 · Safeguard refusals

被拒的响应长这样:HTTP 200、stop_reason: "refusal"、stop_details.category: "reasoning_extraction"、content 为空。客户端看到的就是「空回」,没有报错、没有拒绝文案。

—— Refusals and fallback

官方在 Keep reasoning in thinking blocks 一节列了最常触发的写法:

三个细节说明它是反蒸馏措施,不是内容审核:

  1. 计费。 「To disrupt attempts to circumvent Anthropic's safeguards at scale, a refusal that arrives before any output is billed when its category is bio, frontier_llm, or reasoning_extraction.」——跟「帮竞品训模型」的 frontier_llm 并列收钱。
  2. 不给 fallback。 其他类别可以自动换模型重试,reasoning_extraction 被明确排除,服务端 fallback 会直接把拒绝原样还给你。
  3. 官方解法是「别在正文里要推理,去读 thinking block 的摘要」。

背景:Anthropic 2026-09 威胁报告披露七家国内实验室通过约 1.9 亿次交互蒸馏 Claude,对策之一就是「不再返回完整的推理过程,只给摘要」。(Better Stack 整理)

对普通用户的影响:酒馆那类「先在 <think> / <cot> / <draft_notes> 里梳理再输出正文」的预设,在 O5.5 上高概率触发;分类器判的是意图不是标签名,改标签只能糊弄一部分。每次空回照样按输入全额计费。 唯一解法是删掉这类段落,让模型在 thinking 里想,用 display: "summarized" 看摘要。官方也说了,「简单解释一下答案」「总结做了哪些操作」这种要求不受影响。

它不是关键词过滤。 触发条件是「要求模型把内部推理写进回答」这个指令本身;讨论思维链机制、引用文档、说「chain of thought」这几个词都不算,写这篇文章的时候这些词我用了几十次,一次都没被拦。

参考