让 Agent 猜自己下一步要调什么工具,这论文把等待时间偷回来了
跑过 Agent 的人都懂那种体验:模型思考得挺快,但一旦开始调工具——查数据库、搜网页、调 API——你就得眼巴巴等结果回来才能走下一步。一两秒还好,链条一长,累积的等待时间能把一个本该几秒完成的推理拖成喝杯水的功夫。
业界不是没想办法。小模型做 draft、缓存历史轨迹,都是为了让下一次工具调用能被提前猜出来并预执行。但这里藏了个尴尬的 gap:预测模型跟实际执行任务的 agent 不是同一个模型,行为天然有偏移,猜不中是常态。
今天 arXiv 上这篇来自 Jiabao Ji 等人的论文,给了一个反直觉的思路——让 agent 自己猜自己。
论文叫《Speculate While You Reason: Teaching Agents to Predict Their Next Tool Call via Joint Agent-Speculator RL》,核心设计是一个「自推测 agent」(self-speculating agent)。同一个模型跑两种模式:完成任务时正常当 agent,同时在推理过程中兼职 speculator,从部分轨迹里预测下一步要调哪个工具。因为前缀的 KV cache 完全复用,预测的开销被压到几乎可以忽略。
这套方案的关键是训练方法。作者提出了一种联合 agent-speculator 强化学习算法:speculation 的监督信号直接从 agent 自己的 rollout 里提,不依赖外部标注;训练时交替更新 agent 能力和预测能力,不让两边互相拖后腿。结果是在 agentic search QA 和对话式 tool use 两类任务上,Qwen3-4B 的下一跳工具调用 Hit@1 从 44.1 涨到 61.2,Qwen3.5-4B 从 48.9 涨到 66.3,而 agent 任务本身的成功率没有掉。
这个思路之所以成立,背后的直觉其实简单:一个 agent 在决定下一步调什么工具时,它的推理轨迹里已经包含了足够的信息来预判这个决定。与其外挂一个猜不准的小模型,不如让本体在生成推理的同时就把预测做了——反正 KV cache 已经在那里。
当然这篇论文不是万能药。它的预测窗口只覆盖「下一跳工具调用」,对短链任务增益明显,长链里累积误差怎么控制是另一个问题。但它指向了一个更干净的方向:把「推测」内化成 agent 能力的一部分,而不是另起炉灶。
对于正在搭 Agent 工作流的人来说,这个思路可以直接抄进自己的推理框架里——模型原生支持下一跳预测,就意味着推理时延可以更确定,不需要在外面包一层额外的投机解码或者缓存命中逻辑。