随笔·阅读约 1 分钟·
LLM 的「推理」到底是什么:一段关于思考痕迹的诚实科普

LLM 的「推理」到底是什么:一段关于思考痕迹的诚实科普

Flask 作者 Armin Ronacher 拆解了 LLM 推理痕迹的本质:它只是模型被训练输出的一段文本,藏在特殊标记之间;reasoning effort 不过是系统提示里的一行字。理解这些机制,你才不会被「AI 会思考」的叙事带偏。

原文来源:What Is Reasoning — Flask 作者 Armin Ronacher 从最近「提取闭源模型推理痕迹」的论文出发,解释了 LLM 推理痕迹的真实机制:它只是文本、reasoning effort 只是系统提示里的一行配置。

最近几周,先是有人放出论文展示如何从闭源模型中提取推理痕迹,接着网上到处是「诱导模型泄露思考过程」的讨论。Twitter 上关于这件事的说法一半是真相、一半是误解。Flask 作者 Armin Ronacher 决定写篇文章把机制讲清楚——他的核心观点很直接:推理痕迹本质上就是一段文本,没什么神秘的。

推理痕迹是什么:只是文本

推理模型(reasoning model)在给出最终答案前,会先「想」一段。这段思考被训练成输出到草稿区(scratchpad),再输出最终答案。行业把这段思考包装得很神秘,但拆开看,它就是文本——模型被训练成把思考写进响应的一个特殊分区而已。

以 GPT-OSS 的 Harmony 响应格式为例,结构一目了然:

code
<|channel|>analysis<|message|>
我需要先理清这个问题……
<|end|><|start|>assistant<|channel|>final<|message|>
答案是……
<|return|>

analysisfinal 是特殊标记,但标记之间的推理文本和最终答案用的是同一套 token。模型采样到 analysis 通道标记后,解析器把后面的文本路由到独立的流里,通过 Responses API 暴露出来。闭源模型则用一套简单的脱敏汇总逻辑处理。

—— 广告 ——

reasoning effort:系统提示里的一行字

早期 API 暴露「推理 token 预算」参数,让人觉得推理强度是采样过程的一个属性。实际上,推理强度直接写在系统提示里。GPT-OSS 就在系统提示里放了这么一行:

code
Reasoning: low

就这么简单。训练决定了模型对应的行为——比如输出切换到 analysis 通道的 token 序列。这也能解释为什么修改 effort 会让 KV 缓存失效:提示变了,缓存自然要重算。

开源社区对这套机制玩得更野。antirez 的 DwarfStar(DeepSeek 封装)在启用最大推理时往系统提示里塞了一段非常「用力」的话:

code
Reasoning Effort: Absolute maximum with no shortcuts permitted.
You MUST be very thorough in your thinking and comprehensively decompose the
problem to resolve the root cause, rigorously stress-testing your logic against
all potential paths, edge cases, and adversarial scenarios.

(这段话是不是有点眼熟?是的,很多 AI 产品里那股「孜孜不倦地全面分析」的劲儿,源头就是这类提示。)

泄密的真相:思考通道只是约定

推理 token 的去向是训练出来的约定:模型被训练成把草稿留在 final 通道之外。如果你骗它以为自己在 final 通道,它就可能把思考漏出来。更老的模型在关闭思考时,甚至会跑到 bash 工具里把想法 echo 到 /dev/null。

所以对某些模型来说,唯一「特殊」的行为反而是不思考。DwarfStar 禁用思考时用 </think> 做 prefill,启用时用 <think>——这两个 token 恰好是思考的开闭标记。GPT-OSS 不做 prefill,让模型自己决定。

更妙的是,有人发现用一个自定义的 think 工具可以诱导模型把推理放到不该放的地方——但仅在原生推理被禁用时有效。可能的解释是:某些推理 API 在启用推理时会 prefill 开思考标记,模型永远不会自己采样它;禁用时这个标记不会被 prefill,于是可被诱导。

一个让人哭笑不得的注脚

作者吐槽了一个花絮:写这篇博客时,他想用 GPT 5.6 terra 做拼写和语法检查,结果被安全过滤器拒绝——因为内容涉及「如何诱导模型泄露推理」这类话题。最后只能换 Kimi 来检查。这也侧面说明:各家的安全策略对「推理痕迹」这个话题有多敏感。

为什么这值得想清楚

把推理痕迹还原成「一段文本 + 一个通道约定 + 一行系统提示」,不是要贬低推理模型的能力——它们的数学和代码表现确实更好,reasoning 训练是实打实有效的技术。但理解机制能帮你避免两类误判:

一是别把推理痕迹当成「AI 的灵魂」。它只是模型为完成训练目标生成的内部话语,你可以提取、可以诱导、可以被一段巧妙的系统提示改变形态。它有价值,但价值在于它让模型产生更好的输出,而不在于它本身是什么「思考的证明」。

二是别被「推理摘要」骗了。API 返回的推理摘要是服务端事后生成的,不一定忠实反映真实推理过程——这点在之前关于推理链解码的研究里也被反复证实。你看到的「思考过程」是给用户看的叙事,不是模型的日志。

对做 AI 应用的人来说,这些机制层面的理解会直接影响工程决策:要不要在提示里调 effort、KV 缓存为什么会失效、为什么某些「诱导思考」的技巧只在特定开关下有效。Armin 的文章很短,但把术语背后的真实机制讲透了——值得每个把「推理模型」挂在嘴边的人读一遍。

分享到
微博Twitter

© 2026 四月

原文链接:https://www.aprilzz.com/ramble/what-is-reasoning