← 返回 2026-08-17

第二想法:LLM 智能体在行动与观察的同时并行推理 Second Thought: Reasoning in Parallel as LLM Agents Act and Observe

Zhensu Sun, Chengran Yang, Yunbo Lyu, Jieke Shi, David Lo 📅 2026-08-13 👍 16 2026-08-22 18:30
LLM智能体 ReAct 并行推理 推理效率 推理时计算

在ReAct行动-观察空闲窗口并行分支推理,不加关键路径即可减回合、省解码、保精度

前置知识

ReAct 范式

ReAct 让 LLM 智能体在 Thought(显式推理)、Action(工具调用)、Observation(环境反馈)三种状态间循环求解任务。回合 $t$ 中模型基于历史 $H_t$ 生成推理 $R_t$ 与动作 $A_t$,环境返回观察 $O_t$ 并并入历史 $H_{t+1} = H_t \cup \{R_t, A_t, O_t\}$。格式约定把实质性推理限制在 Thought 阶段:Action 只是把计划渲染成工具调用,Observation 阶段没有任何解码。

本文的问题定义完全建立在 ReAct 循环的时序结构上,所谓推理空闲窗口就是其中的 Action-Observation 区间,不熟悉这个循环就无法理解方法的切入点。

推理空闲窗口(Reasoning Idle Window)

指每个 ReAct 回合中动作序列化与等待环境观察的连续区间,时长为 $W_t = \tau_t^{act} + \tau_t^{obs}$,回合总延迟 $\tau_t = \tau_t^{think} + \tau_t^{act} + \tau_t^{obs}$。区间内主线程不做任何推理,且长度由外部环境决定、不可预测。本文把它视为每回合复现、可被并行计算填补的闲置容量。

这是全文的核心概念:原子思考的中断友好设计、共享前缀缓存、fork 与 merge 的时机,全部围绕该窗口的特性展开。

测试时计算扩展与 budget forcing

测试时计算扩展指在推理阶段投入更多计算(更长思维链、多条采样路径)来换取更高准确率。budget forcing(s1 方法)通过抑制结束思考分隔符、从预填前缀强迫模型继续推理,是可控延长思维链的代表技术。这类方法把所有额外 token 都放在关键路径上串行解码,以延迟换精度。

论文的 s1 基线就是 compute-matched 的 budget forcing 对照,理解它才能看懂把同等推理预算放在主线程还是空闲窗口这一核心实验设计。

KV 缓存与前缀复用

自回归解码时 Transformer 会缓存已计算 token 的 Key-Value 向量避免重复计算;若多个生成流共享相同提示前缀(如同一份对话历史),可复用同一份前缀 KV 缓存,使后续分支的负载以近乎零边际成本的缓存读取为主,而非持续解码。

四个辅助分支与主线程共享前缀 KV 缓存,是 Second Thought 近乎免费获得额外推理的系统前提,也解释了成本分析中开销为何主要来自缓存读取。

研究动机

ReAct 风格的 LLM 智能体已是软件工程、终端操作、多轮工具对话等任务的主流方案,靠显式文本推理轨迹来规划、验证并适应环境变化。但推理时计算扩展的代价是:每个额外推理 token 都在关键路径上串行生成,准确率以成比例的墙钟延迟为代价,长推理智能体在交互场景中变得很慢。更关键的是,推理并非贯穿智能体工作流全程:典型 ReAct 循环只在 Thought 阶段产生实质性推理,一旦想法定稿、动作被序列化并等待环境返回,推理就被冻结。以论文实验为例,SWE-Bench Pro 上 MiniMax-M3 平均每任务要跑 79.6 个回合,Terminal-Bench 2.1 上 DeepSeek-V4-Flash 要 40.2 个回合,而每个回合的 Action-Observation 区间都完全闲置、不产生任何推理。这些每回合复现、累积可观的空闲时间,正是被浪费的并行容量。

本文的目标是论文的目标是:在不训练模型、不增加关键路径串行解码、不牺牲任务准确率的前提下,把每个回合的推理空闲窗口 $W_t = \tau_t^{act} + \tau_t^{obs}$ 变成有用的并行推理时间,并让这些辅助推理服务于后续回合。具体拆成三点:其一,主线程延迟不得因新增推理而变长,最好反而因下一回合的思考已被预计算而缩短;其二,辅助推理要实质改善决策质量,例如减少浪费在失败搜索上的回合、避免违反任务约束的修改(如 Figure 1 中破坏向后兼容的编辑);其三,方案必须对窗口被外部观察随时截断这一硬约束鲁棒——观察的到来会突然终止所有进行中的推理,分支即使生成到一半被砍掉,也必须留下结构完整、语义可用的部分结果。

与已有工作不同的是,已有技术与本文的切入点有本质区别。并行推理一线(Self-Consistency、Tree-of-Thought 到种群选择、跨分支信息共享)都在 Thought 阶段内部水平采样多条竞争性求解路径,需要投票、排序或显式合并,还要等最慢分支,本身引入额外延迟。异步与投机执行、实时智能体框架虽然也把计算与工具延迟重叠,但重叠的是主轨迹本来就要生成的 token 或其投机预测,轨迹上的推理内容总量不变,精度通常只是持平。Sleep-time compute 虽把思考搬到查询之前的静态上下文,但其窗口是外部调度的,而非智能体循环内在的。本文的独特角度是:首次识别并形式化每回合必然出现、由环境节奏支配的 Action-Observation 空闲区间,用同一模型的轨迹续写在窗口内产出互补维度(而非竞争候选)的辅助思考,收割后直接拼接进历史——无需投票、无需验证、无需回滚。

核心方法

Second Thought 是一个免训练的推理框架。直觉是:主线程在动作执行与环境响应之间本来就要等一段时间,与其干等,不如让同一个模型分身继续思考。技术上,每当主线程 Thought 阶段结束的瞬间(即 $W_t$ 起点),框架 fork 出四个异步辅助分支——Check(审查未验证假设)、Recall(召回淡化的历史约束)、Rehearse(预演可能的意外结果)、Alternative(生成备选策略)。四个分支与主线程的动作序列化和工具执行并行解码,输入是完整历史 $H_t$ 加刚生成的 $R_t$ 加一条分支专属指令,并禁用模型原生思考以尽快产出。所有分支按原子思考流式输出;当观察 $O_t$ 到达时立即终止所有分支,把已完成的原子思考截取、每维最多保留 5 条,追加到工具观察消息末尾,供第 $t+1$ 回合的 Thought 阶段直接利用。整个过程中关键路径上没有新增任何推理 token。

核心创新是把并行推理从水平竞争范式倒转为垂直互补范式。已有方法的分支是同一问题的候选解,需要投票或合并,还要等最慢分支;而 Second Thought 的四个分支针对同一轨迹的四种互补失效模式,沿时间方向(回顾 vs 前瞻)与作用范围(当前回合 vs 整体历史)两个正交轴划分:Check 审计 $R_t$ 中可能被观察推翻的脆弱假设,Recall 从 $H_t$ 浮出已淡化的关键约束,Rehearse 为合理意外预置条件化下一步(如若 grep 无匹配则改按符号片段搜索),Alternative 为当前目标维护带触发条件的备选策略。分支输出是建议性思考而非动作承诺,因此整合退化为字符串拼接。第二个关键想法是原子思考契约:每条思考包在 标签内、不超过 25 词、自包含且不互相引用,使分支在任意 token 处被截断时最多损失正在生成的一条,已闭合单元仍完整有效——恰好匹配窗口被观察硬性截止、时长不可预测的特性。

方法步骤详情

第一步 fork:主线程 Thought 阶段结束瞬间,把完整对话快照(历史 $H_t$ 与新推理 $R_t$)连同分支指令分别送入四个解码流;分支禁用原生思考、共享前缀 KV 缓存以零拷贝继承完整上下文。第二步原子思考流式生成:每分支把输出写成一系列不超过 25 词的自包含单元,各包在 标签里,沿互补维度展开——Check 标注未被确认的环境假设,Recall 重提关键历史约束,Rehearse 预演条件化反应,Alternative 给出备选路线及其触发条件。第三步收割合并:观察 $O_t$ 一到立即取消所有分支,每个输出缓冲截断到最后一个闭合 标签、丢弃残缺单元,每维封顶 5 条以约束上下文增长,未产出完整单元的分支直接省略;存活的原子思考按维度追加到工具观察消息末尾。第四步续跑:第 $t+1$ 回合的 Thought 阶段在含第二想法的更新历史上照常推理。主线程可单方面终止分支,无需任何优雅退出协议。

技术新颖性

技术新颖性有四点。其一,问题形式化新:首次定义推理空闲窗口 $W_t$ 并刻画为每回合复现的闲置并行容量,区别于外部调度的 sleep-time compute 与投机执行的重叠对象。其二,分支构造方式新:不引入外部评审模型,而是让同一模型续写自身状态($H_t + R_t$ 加指令),前缀 KV 缓存天然复用,分支免费继承完整任务上下文且无需交接协议。其三,中断友好协议新:原子思考的 XML 标签契约使被观察硬截断从缺陷变成设计前提,收割只是截断加拼接文本缓冲。其四,实验设计新:s1 基线把与分支等量的推理预算强制放在主线程自己的思考上,形成 compute-matched 对照,把算力放在哪里与算多少解耦;Table 2 进一步分离窗口时长与 fork 条件两个变量。消融证明四维确实互补:完整配置是 Pareto 最优,任何单维(only-X)或留一(w/o-X)变体都无法同时超越它的精度与效率。

Second Thought 的工作流。
Figure 2: Second Thought 的工作流。

实验结果

在 SWE-Bench Pro(150 实例)、Terminal-Bench 2.1(89 任务)、τ³-bench(97 任务)三个基准与三个推理模型(DeepSeek-V4-Flash、Qwen3.6-Plus、MiniMax-M3)的九个组合上:平均回合数九组全降(SWE-Pro 上 MiniMax-M3 从 79.6 到 71.9);主线程解码量六组下降、最高 43%(SWE-Pro/Qwen3.6 从 36,519 到 20,798 token)。Pass@1 七组无显著变化,两组显著提升且都在 Terminal-Bench 2.1:Qwen3.6-Plus +12.4 点(39.3%→51.7%,超 s1 的 46.1%)、MiniMax-M3 +10.2 点(49.4%→59.6%);唯一下降 52.0%→51.3%(150 例中的 1 例,不显著)。配对墙钟重放显示中位单任务耗时 256.9s→229.0s(−10.9%),解码 168.7s→146.1s(−13.4%),四分支仅使吞吐降 1.9%。移除收割的思考使下一回合推理量从 196.2 涨到 316.5 token,说明其替代了关键路径思考;收割产出随窗口时长单调上升(0.0%→90.1%),96.5% 的任务至少收到过一次第二想法。

Second Thought 在三个基准上的总体性能。
Table 1: Second Thought 在三个基准上的总体性能。
SWE-Bench Pro 上 Second Thought 的每任务 API 成本。
Table 3: SWE-Bench Pro 上 Second Thought 的每任务 API 成本。
SWE-Bench Pro + DeepSeek-V4-Flash 上单维(only-X)与留一(w/o-X)变体;左上更优。
Figure 3: SWE-Bench Pro + DeepSeek-V4-Flash 上单维(only-X)与留一(w/o-X)变体;左上更优。
查看结构化数据
任务指标本文基线提升
SWE-Bench Pro(DeepSeek-V4-Flash) Pass@1 / 主线程输出token / 回合数 52.0% / 20,255 / 52.8 base 48.7% / 23,841 / 56.2;s1 49.3% / 54,463 / 58.5 Pass@1 +3.3 点,解码量 −15%,回合数 −3.4,全面优于 s1
SWE-Bench Pro(Qwen3.6-Plus) Pass@1 / 主线程输出token / 回合数 51.3% / 20,798 / 50.6 base 52.0% / 36,519 / 57.1;s1 48.7% / 65,634 / 55.7 解码量降 43%(全文最大),回合数 −6.5,Pass@1 −0.7(不显著)
SWE-Bench Pro(MiniMax-M3) Pass@1 / 主线程输出token / 回合数 55.3% / 14,579 / 71.9 base 55.3% / 15,400 / 79.6(s1 不可用) Pass@1 持平,回合数 −7.7(−9.7%,显著)
Terminal-Bench 2.1(DeepSeek-V4-Flash) Pass@1 / 主线程输出token / 回合数 52.8% / 32,892 / 35.8 base 50.6% / 48,202 / 40.2;s1 50.6% / 68,003 / 33.4 Pass@1 +2.2,解码量 −32%,为 s1 的 2.1 倍少
Terminal-Bench 2.1(Qwen3.6-Plus) Pass@1 / 主线程输出token / 回合数 51.7% / 31,396 / 24.0 base 39.3% / 25,158 / 25.5;s1 46.1% / 40,642 / 22.1 +12.4 点(显著),比 s1 再高 5.6 点,解码 1.3 倍少于 s1
Terminal-Bench 2.1(MiniMax-M3) Pass@1 / 回合数 59.6% / 43.1 base 49.4% / 44.6(s1 不可用) +10.2 点(显著),回合数略降
τ³-bench 银行域(DS-V4 / Qwen3.6 / MM-M3) Pass@1 / 回合数 24.0/26.3;19.8/25.9;20.8/20.0 24.0/27.5;16.7/26.1;17.7/24.0 Pass@1 最高 +3.1,回合数全线下降(MM-M3 −4.0)

局限与改进

作者坦承的成本代价最直观:四分支使每任务 API 成本上升 66.4%–181.5%(如 Qwen3.6-Plus 从 $0.514 到 $1.297),几乎全由缓存前缀读取驱动,各模型输出 token 成本差异不足 $0.02;只保留 Alternative 单分支可把开销压到 16.3%–35.5%。收益高度依赖空闲窗口长度:τ³-bench 等窗口短、失败源于检索质量与政策遵守而非规划失误的领域,增益有限(最高 +3.1 点),作者承认分支类型按领域动态选择是未来方向。默认配置窗口饥饿,只捕获相对基线 +8.0 可及增益中的 +3.3(41%),而捕获更多须把主线程等待分支的成本转回关键路径(unbounded 虽达 56.7%,但主线程 token 涨到 48.4k)。我的补充观察:每维封顶 5 条、每条不超过 25 词的硬约束可能截断复杂推理;九组中七组 Pass@1 持平说明其本质是效率优化而非能力扩展;全部结果基于 API 服务与闭源权重模型,窗口时序与缓存折扣随供应商和时段漂移,落地数字需要重放校准。

独立分析的弱点

弱点一:成本不对称。收益主要是延迟与回合数,代价却是实打实的 API 输入费用(最高 +181.5%),对预算敏感的团队不友好;改进方向是按窗口时长预测动态决定是否 fork、fork 几个分支,短窗口任务直接跳过。弱点二:收益结构不均衡。九组中七组 Pass@1 无显著变化,两组大增益都集中在 Terminal-Bench 2.1,说明方法对规划错误主导的任务有效、对检索与政策遵循主导的任务作用有限;可按文中展望为不同领域定制分支(如银行域加政策一致性检查分支)。弱点三:fork 时机与上下文条件耦合未彻底解开。fork onset 把窗口扩到 Thought 阶段拿到 51.3%,但分支看不到 $R_t$,产出原子思考从 376 涨到 1418 且单位质量更低;若让分支在 fork 后以流式方式逐步看到正在生成的 $R_t$,可能两全。弱点四:评估全在文本工具环境,未覆盖 GUI、机器人等多模态观察,也未分析四个分支之间的思考重复度与去重空间。

未来方向

作者明确提出两个方向:按领域动态选择或剪裁分支类型(例如为法律、医疗智能体加领域规则校验分支);寻找或构造窗口更长的环境,使 unbounded 设置下 +4.7 点的头部增益变得可及——Table 2 显示窗口时长是主导杠杆,默认配置仅捕获 +8.0 中的 +3.3。基于其成果还可延伸:一是训练轻量预测器在观察到达前估计窗口剩余时长,自适应决定分支数与终止时机;二是把收割的原子思考蒸馏回主线程,或作为过程奖励信号用于强化学习;三是与投机执行结合,把 Rehearse 预演的条件步骤直接编译成投机动作,待观察验证后提交;四是扩展到多智能体系统,让一个智能体的第二想法成为另一个智能体的输入,实现跨轨迹的空闲计算共享;五是研究原子思考在超长轨迹中的检索与组织方式,替代目前每维硬编码 5 条的上限。

复现评估

复现条件中上。代码已在匿名仓库开源(https://anonymous.4open.science/r/2nd-thought),框架免训练、纯推理期实现,工程难点主要在异步 fork/取消的运行时正确性与各模型原生思考开关的适配(论文提到 MiniMax-M3 不支持未闭合思考前缀续写,s1 因此在两组不可用)。三个基准全部公开:SWE-Bench Pro 随机抽样的 150 实例(100 回合上限、mini-SWE-agent)、Terminal-Bench 2.1 官方 89 任务、τ³-bench 银行域 97 任务。主要障碍是算力与费用:需要三个商用推理模型的 streaming API,按 Table 3 单任务成本 $0.015–$1.297 估算,完整九组实验需数千美元。协议描述细致(Pass@1 用 Benjamini–Hochberg 校正的 McNemar 检验,其余用 Wilcoxon 符号秩检验),且作者因 API 速度漂移专门做了 3 次重复的配对墙钟重放,方法论可照搬,但时序敏感的延迟数字需要自行重放校准。