不再串行死等工具:Second Thought借空闲并发思考,主线程解码降43%
Second Thought: Reasoning in Parallel as LLM Agents Act and Observe
在大模型驱动的智能体(LLM Agent)设计中,经典的 ReAct(Reasoning + Acting)范式几乎统治了整个领域。无论是在代码库中定位修复 Bug,还是在终端执行多步骤运维指令,Agent 的运行逻辑通常都是一条严格串行的状态机流水线:先在“思考”(Thought)阶段组织语言、推演逻辑;紧接着在“动作”(Action)阶段将思路转换为具体的工具调用参数;最后进入“观察”(Observation)阶段,静默挂起并等待外部环境返回执行结果。
ArXiv URL:https://arxiv.org/abs/2608.13667v1
这种看似自然的设计,实际上隐藏着严重的效率悖论。随着测试期算力扩展(Test-time Compute Scaling)成为共识,开发者倾向于让模型生成更长的思考链路来换取更高的任务解决率。然而,在标准的串行流程中,思考链(CoT)里的每一个新 Token 都被无情地摆在关键路径(Critical Path)上——思考越深入,用户或调用端所经历的端到端等待延迟就越漫长。更讽刺的是,当 Agent 生成完工具调用代码并将其发往外部环境执行时,大模型的推理进程立刻陷入彻底的冻结。在几秒甚至几十秒的环境执行与网络等待期间,Agent 拥有充沛的推理算力,却在“无所事事”地干等。
来自新加坡管理大学(Singapore Management University)的研究团队在其最新工作中指出了这一被长期忽视的系统漏洞:Action 与 Observation 之间的间隔,本质上是一个周期性出现的推理空闲窗口(Reasoning Idle Window)。既然环境执行总是需要时间,为什么不把下一轮所需要的深度思考提前搬到这段空闲期中并行展开?
针对这一问题,本文提出了无需额外训练的推理期框架 Second Thought。该方案巧妙地在每个 Thought 阶段收尾的瞬间分叉出 4 个轻量级辅助分支,利用执行与等待环境反馈的时间差并行推演,并在 Observation 抵达时瞬间回收成果、拼入上下文。这项工作不仅打破了 Agent 串行思考的时延枷锁,更在 SWE-Bench Pro、Terminal-Bench 2.1 以及 $\tau^{3}$-bench 等多项高难度基准上证明:通过在空闲期并发思考,主线程在后续交互中的解码负担最高可降低 43%,任务交互总轮数全线减少,且在多个任务上取得了超过 10 个百分点的显著准确率提升。

推理空闲窗口:被遗忘的并行计算算力
要理解 Second Thought 的出发点,必须先剖析传统 ReAct 循环中的时间分配。在一个标准交互轮次 $t$ 中,Agent 面对当前的交互历史 $H_t$,首先消耗时间 $\tau^{\text{thought}}_t$ 生成推理链 $R_t$;随后进入 Action 阶段,消耗时间 $\tau^{\text{act}}_t$ 将计划串行化为工具调用格式 $A_t$;最后是 Observation 阶段,消耗时间 $\tau^{\text{obs}}_t$ 等待系统、编译器、API 或模拟器的反馈 $O_t$。
在这三段持续时间中,深度的逻辑推理仅存在于 $\tau^{\text{thought}}_t$。Action 阶段的解码主要是在填充语法结构与参数字面量,涉及的高阶规划极少;而 Observation 阶段模型甚至完全不进行解码。也就是说,在整个连续区间 $W_t = \tau^{\text{act}}_t + \tau^{\text{obs}}_t$ 内,Agent 的思考完全停滞。这构成了每轮交互中规律出现的推理空闲窗口 $W_t$。
以往也有研究尝试在 Agent 中引入并行机制,但思路大体分为两类:一类是在 Thought 阶段做水平维度的扩展,如 Self-Consistency 或 Tree-of-Thought(ToT)。这种做法通过采样多条平行的候选链来探索更优解,但它们之间属于竞争关系,不仅需要设计复杂的打分、剪枝或多数表决模块,且端到端延迟受限于最慢的一条分支,反而拉长了关键路径。另一类是推测执行(Speculative Execution)或异步工具调用,其目标仅仅是将已经决定好的动作提前发出,或者在等待时预先生成下一步的常规输出,遇到状态不一致时需要昂贵的验证与回滚机制。这些尝试的本质依然是在调度“本就会生成的 Token”,并未真正提升推理的广度。
Second Thought 提供了一种完全正交的切入角度:利用外部不可避免的等待时间,在旁路凭空注入额外的审视与推演。由于这些辅助思考发生在动作发出之后、环境结果返回之前,它们注定无法篡改当前轮次已经不可逆的 Action。因此,这些旁路思考不参与竞争,不需要投票回滚,其唯一使命就是在终点线前做好侦察,为下一轮交互 $t+1$ 预判形势、铺平道路。
核心机制:如何在不确定截止时间的悬崖边思考?
将推理任务卸载到外部等待区间看似理想,但在工程实现上面临两个极为苛刻的约束:其一,环境执行时间 $\tau^{\text{obs}}_t$ 是高度动态且不可预测的,可能毫秒级结束,也可能耗时数十秒,辅助推理随时面临被外部信号硬中断(Interruption)的风险;其二,旁路思考必须提供有增量价值的见解,如果只是重复主干已经想过的内容,或者输出一堆没有语义完整性的半截句子,反而会污染后续上下文。
Second Thought 通过一套精简的“Fork-Decode-Merge”流水线,优雅地化解了上述难题。

分叉与前缀缓存复用
在主线程生成完当前轮次思考 $R_t$ 的瞬间,Second Thought 并不引入任何外部 Critic 代理,而是让当前模型继续“自我分身”。主线程继续执行 Action 的序列化与调用分发,系统则在同一时刻为模型派生出 4 个平行的辅助推理分支。
这种让模型从当前状态直接派生的设计极其高效:4 个分支完整继承了截至 $R_t$ 为止的所有上下文历史,不需要经过中间层浓缩或协议转换;更关键的是,在现代推理引擎支持下,这 4 个辅助分支可以百分之百复用主线程积累的 Prefix KV Cache,从而将并发启动的系统开销压到最低。为了在狭窄的空闲窗口中跑出最快速度,辅助分支在生成时会显式禁用原生沉思模式(Native Thinking Mode),直接吐出显式文本。
原子思考协议(Atomic Thoughts)
面对随时可能被观测信号叫停的现实,传统由长篇连贯自然段组成的 CoT 必然会失效——一旦在中间某个连词处被强行打断,残缺的推理片段对于后续轮次往往弊大于利。
为此,Second Thought 强制约束所有辅助分支遵守“原子思考协议”:
分支输出流必须由一系列严格使用 <thought>...</thought> 显式 XML 标签封装的微型单元组成。每一个单元限制在 25 个词以内,且必须做到语义闭环,专注于单一的局部洞察,绝不依赖前后文的代词或引用。
这一设计的精妙之处在于赋予了系统单方面、零协同的“硬截断”能力。一旦环境返回 Observation $O_t$,系统立刻向下游所有辅助分支发出取消信号。收集器在解析缓冲区时,直接丢弃最后一个未闭合的标签残片,只保留所有已经完整闭合的 <thought> 单元。哪怕某条分支只来得及生成一个 20 词的闭合断言,该断言对下一轮也是完全可用且自洽的;即使某条分支因时间过短完全没有产出闭合单元,系统也只需将其静默丢弃,此时流程无缝退化为标准 ReAct,毫无故障隐患。
互补性四维思考设计
为了确保旁路推理不会沦为低效的碎碎念,Second Thought 根据时间轴(回顾历史 vs. 展望未来)与作用域(聚焦本轮 vs. 放眼全局)这两个正交维度,构建了四个互补的辅助分支:
-
核查分支(Check,回顾-局部):专注于审查当前刚做出的决策,检查该命令是否潜藏了未经证实的假设,或者是否存在参数拼写、路径越界等低级疏漏。
-
召回分支(Recall,回顾-全局):跳出当前的局部思维,重新从漫长的历史轨迹中打捞早期的全局约束、最初的任务定义或是前几轮曾被警告过的限制条件,防止 Agent“走得太远而忘了为什么出发”。
-
预演分支(Rehearse,展望-局部):预判当前命令成功返回后的下一步动作。例如,如果当前的查找命令找到了目标文件,下一步该改哪几行代码。这种推演相当于把下一轮的思考提前在后台完成预计算。
-
备选分支(Alternative,展望-全局):提前构思如果当前调用遭遇报错(如权限不足、文件不存在、编译失败)时的应急预案(Plan B),确保后续轮次无需在受挫后重新从零破局。
当 Observation 返回时,系统把所有幸存的原子思考聚合(每种类型截取上限为 5 条以防止上下文无限膨胀),直接拼接在环境观测消息的末尾。当第 $t+1$ 轮开启时,主模型一睁眼看到的,是已经附带了“多方会诊备忘录”的全新状态。
实验评测:不仅是提速,更是推理范式的重构
为了全面检验该框架的普适性与稳定性,研究人员在三个覆盖完全不同交互模式的基准上进行了深度测试:主打长流程真实代码修复的 SWE-Bench Pro、专注系统级容器与命令操作的 Terminal-Bench 2.1,以及强调规则检索与多轮函数调用的客户服务场景 $\tau^{3}$-bench。测试选用了来自不同技术流派的三款前沿推理模型:DeepSeek-V4-Flash、Qwen3.6-Plus 以及 MiniMax-M3。
基准对照组除了原始的 ReAct(base)之外,还引入了一个极具说服力的对照设计——计算预算对齐基线(Budget Forcing, s1)。这个强对照组通过在主线程的 Thought 结尾强制压制结束符,强行逼迫主模型在主干上多思考等量的 Token。这一设计的核心目的就是回答一个尖锐问题:Second Thought 的收益,究竟仅仅是因为“算力堆得多”,还是因为“把思考以正确的方式放对了位置”?
评测结果给出了一致且清晰的答案。
在全部 9 组(模型 $\times$ 基准)的测试矩阵中,Second Thought 在所有 9 个配置下均实现了平均交互轮数(#Turns)的下降。这意味着 Agent 解决问题的路径明显更加收敛,减少了在试错和无效探索上的空转。
更值得关注的是关键路径上的解码量($\text{#OUT}_{\text{main}}$)。在 9 个组合中的 6 个配置下,主线程的串行解码 Token 数量出现了断崖式下滑,在 SWE-Bench Pro 搭配 Qwen3.6-Plus 的场景中,主线程解码甚至大幅降低了 43%(从 36.5k Token 锐减至 20.8k Token),在这些生效场景下平均缩减幅度达到了约 20%。
在任务成功率(Pass@1)方面,Second Thought 在 7 个配置中保持了与基线相当的高水准(差异不具统计显著性),而在另外两个配置中实现了大幅度的绝对跨越——在 Terminal-Bench 2.1 上搭配 Qwen3.6-Plus 和 DeepSeek-V4-Flash 时,Pass@1 分别大幅提升了 12.4 个百分点与 10.2 个百分点。
当对比强制增加主线程思考量的 $s1$ 基准时,Second Thought 的架构优势展现得淋漓尽致。在 $s1$ 能够适用的 4 个测试组合中,Second Thought 均取得了严格更优的 Pass@1,同时让主线程串行解码量缩减了 1.3 倍至 3.2 倍。这强有力地证明:在复杂 Agent 交互中,单纯盲目拉长主干思考链不仅无法换来线性提升,反而容易让模型陷入过度自我辩解或死胡同;而在旁路解耦、多视角的原子思考,才真正带来了结构性的信息增益。
深入机理剖析:增益到底源自何处?
为了排除网络抖动和 API 速度波动对耗时统计的干扰,研究团队在严格受控的环境下重放了 50 个 SWE-Bench Pro 任务实例,采用固定并发与成对(Paired)对比的方式测量真实的端到端物理挂钟时间(Wall-clock Latency)。
数据表明,Second Thought 让每个任务的中位数耗时从 256.9 秒缩短至 229.0 秒,净下降 10.9%。深入拆解耗时结构可以发现:
主线程自身的解码时间下降了 13.4%(与 15.0% 的主线程 Token 下降比例高度吻合);工具在环境中的执行总耗时下降了 6.0%(这得益于总交互轮数从 56.2 轮减少到了 52.8 轮)。尽管在后台同时运行 4 个辅助分支不可避免地会占用部分显存带宽,导致主线程的解码吞吐产生微弱损耗(从 141.3 降至 138.6 Token/s,降幅仅 1.9%),但在每个任务节省出的 27.9 秒时间面前,这 2.8 秒的并发开销完全可以忽略不计。
这一实测结果彻底打消了人们对“Token 只是被账面重新归类”的疑虑,证明关键路径的物理缩短是实打实的。
那么,旁路生成的原子思考,到底是如何重构下一轮的主干思考的?研究人员设计了一个“思考替换效应”(Reasoning Substitution Effect)实验:随机抽取 100 条交互轨迹,在第 $t+1$ 轮开始时,分别在“提供旁路思考”与“剥离旁路思考”两种状态下重放生成过程。
结果显示,当剥离这些旁路原子思考后,Agent 在下一轮主线程上生成的推理 Token 均值立刻从 196.2 暴增至 316.5。这证实了一个核心假设:Second Thought 实质上在后台把原本需要在前台串行硬想的推演过程提前计算完毕了。当模型在下一轮看到已经写好的备选预案和参数核查时,其主干思考链便无需再从头推导,只需迅速确认并直接落笔生成动作。
在针对四个维度的消融实验中,各个维度的分工也得到了直观的印证:
-
Recall(全局召回)是守护成功率底线的核心护城河。一旦在系统里剔除 Recall 分支(w/o-recall),SWE-Bench Pro 上的 Pass@1 遭遇了最严重的断崖式下跌(跌落至 48.0%),说明 Agent 在长流程排错时极易遗忘早期的环境约束和任务先验,而旁路的历史召回有效阻断了重复跳坑。
-
Rehearse(局部预演)则是削减主线程 Token 的最大功臣。移除该分支(w/o-rehearse)虽然准确率没有显著波动,但主干解码量立刻反弹了 10% 以上,证明对下一步动作的推演确实起到了极其关键的“分流预处理”作用。
全配置方案在实验中精准占据了 Pareto 最优前沿,四种思考维度互相协同,缺一不可。
从串行等待到无缝流水线:未来 Agent 的计算形态
回顾大模型推理系统的发展历程,系统工程师们曾花费巨大力气在底层实现 PagedAttention、Chunked Prefill 以及投机采样(Speculative Decoding),本质上都是在榨干 GPU 在空间与流水线层面的利用率。而在更宏观的 Agent 交互架构层面,这种对计算资源“时间碎片”的挖掘才刚刚开始。
Second Thought 的真正启发性在于,它重塑了智能体在物理时间轴上的存在方式。长期以来,开发者在思维定势上默认 Agent 的每一步都必须是严格同步的因果闭环。但现实世界的物理交互本身就存在巨大的不可逆性与天然等待期。在网络请求飞驰、容器编译构建、测试用例运行的数十秒空白期内,让原本昂贵且强大的思考核心处于“假死状态”,是对端侧与集群算力的极大浪费。
当然,天下没有免费的午餐。正如论文在成本分析中所坦承的那样,由于持续派生 4 个辅助分支,在某些窗口极长的场景中,每个任务消耗的总 API Token 数量有所上升(在 SWE-Bench Pro 上根据计费模型不同增加约 16% 至 35% 不等)。这种权衡在不同的业务场景下具有完全不同的价值倾向:在对 Token 账单极其敏感的离线低优先级批处理中,串行方案依然是省钱的选择;但在对交付延迟极其严苛的交互式代码补全、实时人机协同以及复杂的自动化终端运维中,用适度廉价的后台 Token 吞吐,换取主干交互轮数减少、任务延时降低 10% 以上以及准确率双位数提升的收益,无疑具有极具吸引力的工程价值。
从“想好了再做,做了只能等”,到“边做边等,在等待中把未来的路想清楚”,Second Thought 展现出了大模型交互范式演进的一个重要趋势:未来的 Agent 不再是一条死板的单线程逻辑链,而会进化为一个主干负责执行决断、外围伴随大量异步轻量化思考探针的有机计算网络。在系统与现实世界的交互间隙中,计算将无处不在。