不是固定Top-K!SkillReranker:基于执行图的Agent自适应技能检索
Task Decomposition-Guided Reranking for Adaptive Agent Skill Retrieval

大模型智能体(Agent)正越来越多地依靠外部技能库来完成复杂任务。相比于完全依赖模型的隐式推理能力,调用封装好的功能代码或API能够显著提升执行的稳定性和成功率。然而,随着技能库规模的不断膨胀,如何精准地为当前任务挑选最合适的技能,成为了制约Agent系统能力上限的瓶颈。
ArXiv URL:https://arxiv.org/abs/2607.06283v1
现有的检索方法往往依赖简单的语义相似度匹配,并固定返回Top-K个候选技能。这种粗暴的策略在真实场景下面临两个致命缺陷:一是任务需求往往具体而微,而技能描述偏向通用,导致大量“看似相关实则无用”的技能被召回;二是不同任务的复杂度差异巨大,简单任务被强塞K个技能会引发严重的上下文冗余和Token浪费,而复杂任务固定K个技能又可能导致关键环节缺乏支持。
针对上述挑战,苏州大学与香港科技大学的研究团队联合提出了 SkillReranker,一个用于推理阶段的Agent技能自适应重排框架。该方法放弃了将候选技能作为扁平列表打分的传统路线,而是将任务和技能映射到一个有向无环执行图(Directed Acyclic Execution Graph)中。通过寻找任务状态的天然分割点,SkillReranker能够根据任务的实际复杂度,动态且自适应地决定需要多少个技能,在显著提升任务成功率的同时,大幅降低了环境交互步数和Token消耗。
代理系统技能检索的核心痛点
在展开具体方法前,有必要深入剖析传统技能检索为何在现代Agent架构中逐渐失效。
最核心的冲突来源于任务需求与技能描述之间的粒度鸿沟。实际应用中,用户下达的指令通常非常精简且聚焦于特定目标(例如“加热杯子”)。相反,技能库中的工具为了保证复用性,往往采用泛化、抽象的说明(例如“利用电器加热物品”或“改变物体温度”)。这种表达层面的错位,导致那些依靠密集向量检索(Dense Retrieval)的系统极易陷入语义模糊的陷阱。

如上图所示,当面对特定的物理交互任务时,系统可能会召回多个在文本嵌入上高度相似的候选技能。这些技能虽然表面上都与“加热”或“电器”有关,但在实际的前置条件和执行路径上却存在天壤之别。如果检索模型缺乏对这些操作逻辑的深层理解,仅凭文本表面相关性进行推荐,Agent在执行时便会频繁遭遇“技能调用失败”的窘境。
同时,固定数量的召回策略带来了不可忽视的副产品:决策过载与资源浪费。对于一个只需两步操作的简单任务,强行加载5个以上的完整技能文档不仅毫无必要,反而会冲淡大模型在Prompt中的注意力(Attention Dilution),诱导Agent做出错误规划。因此,真正理想的技能检索器不仅要选得准,还要懂得“该选几个就选几个”。
SkillReranker框架解析:从文本到执行图
为了彻底解决语义模糊和固定数量召回的弊端,SkillReranker采取了“先解构,再建图,后分段”的两阶段设计思路。整个框架的核心在于将任务和技能从纯文本形态,转化为具有明确状态转移语义的图结构。

任务与技能的结构化解构
SkillReranker的第一步是消除自然语言描述中的模糊性,将其规范化。
在任务侧,框架利用专家LLM将自然语言形式的用户指令,分解为按逻辑顺序排列的高级子任务序列 $T=(t_0, \dots, t_{m-1})$。在此基础上,进一步推导出与之对应的关键子状态序列 $S=(s_0, \dots, s_m)$。其中,$s_0$ 代表任务的初始状态,而随后的每一个状态 $s_{i+1}$ 都描述了完成子任务 $t_i$ 后的最新进展。这一转换过程将原本浑然一体的任务,切分成了若干个离散的状态节点。
在技能侧,系统同样采用LLM对离线技能文档进行解析,提取出两个核心要素:前提状态(Precondition State)和完成状态(Completion State)。前提状态定义了调用该技能必须满足的物理或逻辑条件,完成状态则声明了技能成功执行后所达成的结果。如果某项技能没有任何门槛,其前提状态即被设定为空。这种解析方式本质上是将每一个静态的技能文本,重塑为一种状态间的转移算子。
构建有向执行图
有了统一的状态空间表达后,SkillReranker接下来通过粗排阶段的Top-K召回获取一个初步候选池,并以此为基础构建有向无环执行图。
在这个图中,任务解析得出的关键子状态序列 ${s_0, \dots, s_{n-1}}$ 构成了图的节点。每一个候选技能则被建模为图中的一条有向边。边的起点由技能的“前提状态”与任务状态的匹配程度决定,终点则由“完成状态”决定。
具体而言,如果一个技能不需要任何前提条件,其起始节点就是 $s_0$;否则,框架会计算技能前提状态与各个任务节点的相似度,选取最匹配的节点作为起点。终点的确定方式类似,但严格限制在起始节点之后的任务状态中寻找。如果某个技能的有效落点超出了任务序列的末端,说明它对当前任务的推进没有实质帮助,会被直接抛弃。通过这一系列运算,候选技能不再是孤立的文本片段,而是精准锚定在了任务特定阶段的执行边。
彻底摆脱固定Top-K:自适应阶段划分与技能选取
在执行图构建完毕后,如何决定选择哪些技能,以及选择多少个技能?这正是SkillReranker超越传统基准的关键所在。
理想的技能组合,其覆盖的作用区间应当首尾相连,共同铺平从初始状态走向最终目标状态的道路。因此,SkillReranker引入了一种基于边缘权重的边界检测机制。框架会首先为每条边计算一个结合了全局相关性的权重值,然后针对每一个状态节点评估三个维度的信息流动:
-
输入能量 (In):从该节点之前发出的、且目标落在该节点或其之前的边权重总和。
-
输出能量 (Out):从该节点或其之后发出的边权重总和。
-
跨越能量 (Cross):起点在该节点之前,终点在该节点之后的边权重总和(即直接越过该节点的技能影响)。
如果对于某个节点,其局部的输入能量和输出能量都显著大于跨越能量,框架就会判定该节点是任务流程中的一个天然“断点”(Split Point)。这些断点将整条任务链划分为若干个连续的、逻辑上相对独立的执行阶段(Stage)。由于断点的数量完全由任务自身的内在结构和候选技能的覆盖情况共同决定,这就从根本上实现了分段的自适应性。
在划分出独立的阶段后,SkillReranker会对每个阶段内部的候选技能进行交叉编码器(Cross-encoder)打分。此时的评分函数不仅考察技能文本与全局任务指导的相关性,更强调技能与该阶段内部子任务描述的局部契合度。随后,系统会提取每个阶段得分最高的技能,按时间顺序排列并去重,最终输出供Agent使用的目标技能集合。
当任务极其简单时,整个流程可能不会产生任何断点,系统自然只返回少量甚至单个技能;当任务绵延复杂时,系统会自动切分出多个阶段,并补充不同环节所需的互补技能,实现了颗粒度恰到好处的按需分配。
实验结论:性能攀升与资源释放
为了验证这种基于图结构的动态检索机制的实际效能,研究团队在ALFWorld(聚焦于家庭环境物理操作)和ScienceWorld(聚焦于科学实验的多步骤交互)两个公认的交互式基准上展开了系统评测。实验覆盖了包括DeepSeek-v4-Flash、GPT-5.4-Mini和Qwen3.6-27B在内的三种主流模型基座,充分测试了该方法的泛化能力。
结果显示,SkillReranker在绝大多数评估维度上取得了压倒性的优势。
在反映任务完成度的平均奖励(Average Reward)指标上,SkillReranker在12个评估组别中拿下了11个第一。尤其是在面对未见过的复杂任务时,其相对传统检索模型的提升尤为显著。例如,在使用DeepSeek-v4-Flash作为底层决策模型的ALFWorld未见测试集(unseen split)上,SkillReranker将任务成功率从73.14分提升至78.73分,展现了结构化对齐对提升Agent泛化能力的巨大帮助。
除了任务完成质量的提高,由于剔除了大量无效技能的干扰,Agent在环境中的交互步数(Environment Steps)也得到了全方位的缩减。以ScienceWorld为例,代理系统能够用更少、更精确的操作抵达目标状态,显著减少了因为技能调用错误导致的反复试错和死胡同现象。
最值得关注的是资源消耗层面的收益。统计数据显示,SkillReranker在ALFWorld可见任务集上的平均技能选择数量仅为1.3个,在未见任务集上为1.291个;在ScienceWorld的各项测试中也维持在1.3个以下。这意味着绝大多数任务并不需要传统检索方案中默认加载的3个或5个技能。这种自适应裁剪机制大幅度压缩了Agent面临的Prompt上下文长度,使得SkillReranker在所有模型配置下都实现了最低的Token消耗。对于在生产环境中需要大规模并发调用的Agent系统而言,这一机制直接对应着推理成本的大幅降低。
细粒度操作案例剖析
为了更直观地理解全局与局部结合的动态检索效果,我们可以观察研究团队提供的具体案例。

在上方的简单任务场景中,任务指令为“将手表放到边桌上”。这在逻辑上属于极简的物理位移操作。尽管全局检索阶段召回了多个表面相关的技能,但SkillReranker在构建执行图后发现,该任务区间内只包含一个主要的子动作:获取并放置目标。因此,系统没有产生任何中断节点,而是精准锁定了得分最高的 alfworld-object-locator 技能。这充分验证了框架能够抵抗多余技能的诱惑,防止Agent产生过度思考。

相比之下,下方的复杂任务“将热马克杯放进咖啡机中”则展现了完全不同的处理逻辑。这一任务暗含了“获取物品”和“加热物品”两个截然不同的物理操作。在这个案例中,执行图成功探测到了操作流派的转换边界,将任务划分为两个阶段。随后,在计算局部匹配度时,不仅保留了用于定位物品的 alfworld-object-locator,还自适应地追加了 alfworld-heat-object-with-appliance 技能,确保了复杂长链条任务的顺利交接。
总结与展望
SkillReranker的提出,标志着Agent技能检索开始从“粗放式的文本匹配”向“精细化的状态推理”演进。通过显式构建任务执行节点与技能功能的有向对应关系,并在推理阶段实现动态分段切割,研究团队证明了Agent所需要的不是更多候选技能,而是恰好覆盖执行断裂带的关键能力。
当然,该框架目前仍有改进空间。其状态转换图的质量高度依赖于初始LLM对任务和技能的结构化拆解能力,如果基础大模型在离线拆解阶段出现理解偏差,将直接传导并影响后续的图构建。此外,交叉编码器的引入不可避免地增加了单次检索的推理延迟。
尽管如此,SkillReranker为后续的Agent系统设计提供了一个清晰的指导原则:在日渐庞大的能力库面前,赋予Agent“量体裁衣”的动态资源调度机制,远比无脑堆砌候选列表要高效得多。这对于推动大语言模型向更可靠、更轻量级的现实世界自动代理迈进,具有重要的参考价值。