事件背景

据 r/LocalLLaMA 社区用户 onil_gova 发 帖披露,阿里巴巴最新发布的 Qwen3 .6 模型引入了一个新的 preserve_thinking 参数。该参数的作 用是在多轮对话中将模型的思维链(chain-of-thought)推 理内容保留在上下文中。这一改动直接解决了 Qwen 3.5 中存在的 KV cache 失效问题——在旧版本中,推理 token 会在每轮对话时被剥离并以 不同方式重新序列化,导致缓存连续性被 破坏,进而影响 Agent 的整体表现。

Qwen 官方模型页面明确指导开发者将参数设置为 " preserve_thinking": True,以替代此前的临时方案 "chat_template_kwargs": {"preserve_thinking": False}。该功能为选择性启 用(opt-in),必须显式开启,默认情况下不会自 动激活。

为何值得关注

KV cache 失效并非 无关紧要的表面问题。当模型在会 话中途丢失此前的推理 token 时,推理引擎必须在每一轮对话中 对完整上下文窗口重新计算 attention。对于需要工 具调用、多步规划、迭代式代码生成等操作的长 Agent 链路 而言,这直接转化为更高的延迟和更多的 token 消耗。

根据 帖子引用的 Qwen 官方文档,preserve_thinking「在 Agent 场景下尤为有益,完整保留推理上下文有 助于提升决策一致性,并在许多情况下通过减少冗余推理来降低整体 token 消耗」。言下之意:在生产环境中运行 Q wen3.6 Agent 流水线却未启用该参数的团 队,正在为每一次推理调用付出持续累积的额外成本。

两种状态下的行为差异是具体可见的。未启用该 参数时,模型将完全失去对自身此前思维链的访问能 力——这一缺口会在单次会话中表现为事 实性不一致或明显的「失忆」现象。启用后,模型能够将此 前的推理步骤作为一等公民的上下文加以引 用,这对以下场景具有重要意义:

  • 需要整合中间输 出结果的多步工具调用 Agent
  • 早期架构推理会 影响后续实现决策的代码生成循环
  • 任何跨越 一轮以上、使用思维模式(thinking mode)的工作流

技术细节

据 onil_gova 描述,问题根源出在 chat template 本身。Qwen 3 .5 的模板在序列化对话历史之前会剥离 thinking token,这意味着以特 定字节序列为基础构建的 KV cache 会在每一个新轮次因前 序 token 的序列化形式发生变化而失效。Qwen3.6 在 模板层面解决了这一问题,通过以原始形式保留 thinking block,确保缓存键(cache key)在各轮之间保持稳定。

该参数可在推理时传入。对于使用 chat_template_kwargs 的框 架,正确的调用方式为:

{"preserve_thinking": True}

验证方法简单直接。社区记录的测试方 法如下:提示模型在不使用工具的情况下生成两个 20 位数字,然 后在下一轮中询问第二个数字。在 preserve_thinking 关闭的状态下,模型会 回答第二个数字不存在——因为它无法访问此 前的推理内容。启用该参数后,模型能够立即从保留的 thinking 上下文中检 索出第二个数字。

根据 Qwen 官方模型页面,该参数同时适用于 thinking 和非 thinking 推理模式,这意味着 KV cache 效率的提升并不局限于显式思维链工 作流。

后续动态

截至本文发布时,各运 行时的支持情况尚不完整。r/LocalLLaMA 帖子证 实,LM Studio 目前尚不支持该参数。oMLX 项目目 前有一个由 onil_gova 提交的开放 Pull Request,正在推进 对该参数的支持,但尚未合并。使用其他运行时的开 发者——包括 vLLM、llama.cpp、Ollama、Transformers——应在 假定参数已生效之前,先验证自 己的推理服务栈是否正确处理了该参数。

  • LM Studio:已确认暂不支持,请关 注下一个版本周期的更新。
  • oMLX:PR 已开放,尚未合并 。
  • vLLM / Transformers:根据现有信息,状态未经确认——在 部署至生产 Agent 流水线之前,请务必验证模板处理逻辑。
  • Ollama:状态未 经确认——可能需要在 modelfile 层面进行模板自定义。

任何在 Agent 或多轮生产环境中运行 Qwen3.6 的团队,都 应立即审查自己的运行时配置。默认关闭该参数意味着你 的系统正在沿用 3.5 版本中同 样的 cache 失效行为——白白损失本可获得的推理效率。