面向LLM智能体的组合式技能路由:分解、检索与组合

arXiv cs.CL 论文

摘要

介绍了SkillWeaver,一个用于将多个技能路由到LLM智能体的分解-检索-组合框架,以及CompSkillBench,一个包含300个组合查询的基准测试,涵盖2,209个真实MCP服务器技能。

arXiv:2606.18051v1 公告类型:新 摘要:LLM智能体越来越依赖外部技能——可复用的工具规范——但现实世界任务通常需要组合多个技能,而不仅仅是选择一个。我们将此形式化为组合式技能路由问题:给定一个复杂的用户查询和一个大型技能库,将查询分解为原子性子任务,为每个子任务检索合适的技能,并组合成一个可执行的计划。我们提出了SkillWeaver,一个结合了LLM任务分解器、带FAISS索引的双编码器技能检索器以及依赖感知的DAG规划器的分解-检索-组合框架。为了支持评估,我们引入了CompSkillBench,一个包含300个组合查询的基准测试,涵盖来自公共MCP生态系统的2,209个真实MCP服务器技能,跨越24个功能类别。我们的实验表明,任务分解质量是主要瓶颈:标准LLM分解在步骤级别仅达到34.2%的类别召回率。为解决这个问题,我们提出了迭代式技能感知分解(SAD),这是一种检索增强的反馈循环,能迭代地将分解与可用技能对齐。SAD在单次迭代中将分解准确率从51.0%提升到67.7%(+32.7%,Wilcoxon p < 10^-6);基于DA条件的分析证实,正确的粒度是有效检索的前提(当DA=1时,CatR@1从34%上升到41%)。SkillWeaver将上下文窗口消耗减少超过99%,迁移实验也证实了其泛化能力(即使目标类别不在检索池中,相对DA增益也达到+35.6%)。
查看原文
查看缓存全文

缓存时间: 2026/06/17 05:42

# LLM驱动的组合技能路由:分解、检索与组合
来源:https://arxiv.org/html/2606.18051

###### 摘要

LLM智能体日益依赖外部技能——可复用的工具规范——但真实世界任务通常需要*组合*多种技能,而非仅选择单一技能。我们将此形式化为**组合技能路由**问题:给定一个复杂用户查询和一个大型技能库,将查询分解为原子性子任务,为每个子任务检索合适的技能,并组合成一个可执行计划。我们提出**SkillWeaver**,一个分解-检索-组合框架,结合了LLM任务分解器、基于FAISS索引的双编码器技能检索器,以及一个依赖感知的DAG规划器。为支持评估,我们构建了**CompSkillBench**,一个包含300个组合查询的基准测试,涵盖来自2,209个真实MCP服务器技能,跨越24个功能类别,数据源自公共MCP生态系统。我们的实验表明:*任务分解质量是主要瓶颈*:标准LLM分解在步骤级别仅达到34.2%的类别召回率。为解决此问题,我们提出**迭代式技能感知分解(SAD)**,一种检索增强的反馈循环,能够迭代地将分解与可用技能对齐。在单次迭代中,SAD将分解准确率从51.0%提升至67.7%(相对提升32.7%,Wilcoxon检验p<10⁻⁶);DA条件分析证实,正确的粒度是有效检索的先决条件(当DA=1时,CatR@1从34%升至41%)。**SkillWeaver**将上下文窗口消耗降低超过99%,迁移实验证实了其泛化能力(即使目标类别不在检索池中,DA相对增益仍达35.6%)。

## 1 引言

大语言模型(LLM)的智能体范式已从单轮生成演变为包含工具使用、规划和多步骤任务执行(Schick et al., 2023; Qin et al., 2023; Patil et al., 2024)。现代LLM智能体中涌现的一个关键架构模式是使用**技能**:模块化的、可复用的工具规范,定义了具体能力及其调用时机和方式的说明(Anthropic, 2025)。我们遵循Anthropic的SKILL.md规范使用"技能"一词;技能与传统API的不同之处在于,它们强调结构化自然语言文档和可组合性元数据。随着智能体技能库的增长——仓库中已包含数千个社区贡献的技能——一个基本的路由问题出现了:*给定一个用户查询,智能体应调用哪个(或哪些)技能?*

先前的工作将技能路由视为单一技能选择(Zheng et al., 2025),但真实世界的查询经常需要**多种**技能——例如,“下载数据集、转换数据并创建可视化报告”需要一个API客户端、一个数据处理工具和一个可视化工具。

我们将此形式化为**组合技能路由**(图1):给定查询q和技能库S,生成一个有序技能序列[s₁, ..., sₖ],其中每个sᵢ处理一个原子性子任务。

我们提出**SkillWeaver**,一个三阶段框架,通过以下步骤解决此问题:

1. **分解**:基于LLM的任务分解器,将复杂查询分解为原子性子任务,每个子任务恰好需要一个技能。
2. **检索**:双编码器检索器,利用语义相似性为每个子任务从技能元数据中识别候选技能。
3. **组合**:兼容性感知规划器草图(公式4),利用技能间兼容性为每一步选择技能。我们通过一项试点执行研究(附录I,76.7%的链完成率)验证了端到端的可行性,同时将受控评估聚焦于已识别的瓶颈(分解-检索)。

为评估组合技能路由,我们构建了**CompSkillBench**,这是首个专为此任务设计的基准测试。CompSkillBench包含300个组合查询,涵盖2,209个真实技能,跨24个功能类别,提供真实技能链和三个难度级别。技能源自公共MCP服务器生态系统(超过2,200个注册服务器),并通过去重确保质量。

我们的实验得出了若干关键发现:

- • **分解是瓶颈**:标准LLM分解在2,209个真实技能池中仅达到34.2%的CatR@1。DA条件分析显示,正确的步骤数是关键因素(当DA=1时,CatR@1升至41.2%),证实了分解粒度是主要限制因素。
- • **SAD缩小了差距**:我们提出的**迭代式技能感知分解(SAD)**,一种检索增强的反馈循环,将分解与可用技能词汇对齐,在单次迭代中将DA从51.0%提升至67.7%(相对提升32.7%,p<10⁻⁶)。剩余CatR@1差距(37%对比72%的@10上限)被LLM列表重排序试点部分缩小(@1相对提升10.3%,p<0.01;附录K),将“交叉编码器重排序作为未来工作”转变为经验验证的杠杆。
- • **元数据足以用于检索**:仅元数据编码实现了69.0%的CatR@10,表明简洁的技能元数据在2,209个技能中仍携带强大的区分信号。
- • **SAD可泛化至未见技能**:迁移实验显示,SAD在类别级保留(DA相对增益35.6%)和随机技能保留(相对增益23.2%)场景下均保持优势,证实了其词汇级而非技能特定的学习特性。

“下载数据集、转换数据并创建可视化报告”
**第一阶段:分解(LLM)**
t₁: 下载数据集
t₂: 转换数据
t₃: 创建报告
**第二阶段:检索(双编码器 + FAISS)**
api-client, http-fetch, ...
csv-parser, etl-pipeline, ...
chart-gen, dashboard, ...
top-k k top-k k top-k k
**第三阶段:组合(DAG + 兼容性)**
s₁: api-client
s₂: csv-parser
s₃: chart-gen
g₀
g₁
**SAD(§4.4)** 提示
**技能库**
(N=2,209)

图1:SkillWeaver概览。查询被分解为子任务,每个子任务通过双编码器检索匹配技能,然后组合成DAG。虚线箭头:SAD反馈循环(§4.4)。

## 2 相关工作

#### **工具选择与路由**。

API检索(Patil et al., 2024; Qin et al., 2023)、文档匹配(Hao et al., 2024)和层级路由(Zheng et al., 2025)研究的是单一工具选择。SkillRouter(Zheng et al., 2025)与我们的工作最为接近,它使用双编码器进行单一技能路由。层级/自反智能体(Du et al., 2024)和工具创建框架(Yuan et al., 2025)扩展了工具使用,但仍将选择视为单一工具或单步问题。CRAFT(Yuan et al., 2025)与我们的组合阶段最为相关:它通过LLM驱动的大型API池过滤,为每个查询创建专门的工具集。然而,CRAFT并未执行明确的多步骤分解——它假设一个扁平的查询到工具集映射——并在单轮任务上通过执行成功度进行评估。相比之下,**SkillWeaver**处理需要有序多技能链的**组合**查询,SAD在分解和检索之间提供跨阶段反馈,这在CRAFT的流程中没有类似物。这些方法均未针对组合任务联合优化分解粒度、检索和技能间兼容性。

#### **工具增强的LLM基准测试**。

API-Bank(Li et al., 2023)、ToolQA(Zhuang et al., 2024)和TaskBench(Shen et al., 2023b)对工具使用进行基准测试,但局限于固定或较小的工具集。我们的**CompSkillBench**是首个针对数千技能上的组合**路由**的基准测试。

#### **任务分解与规划**。

提示策略(Wei et al., 2022; Zhou et al., 2022)、分解式提示(Khot et al., 2023)、规划框架(Huang et al., 2022; Wang et al., 2023; LangChain, 2023)和智能体系统(Yao et al., 2023; Shen et al., 2023a)探索了使用静态模板的LLM分解。SAD与先前检索增强方法的区别在于反馈的**方向**:Self-RAG(Asai et al., 2024)、ReAct(Yao et al., 2023)和Reflexion(Shinn et al., 2023)将检索到的证据馈入**生成**或**行动**步骤(输出侧),在给定固定计划的情况下优化模型输出的内容;SAD将检索到的技能馈回**分解输入**(输入侧),在检索**最终确定之前**修正计划粒度。输入侧反馈是更困难的设计选择——它要求模型通过部分关键词重叠与不完美的Pass-1候选者来修订其计划——但特别适合组合技能路由,因为其中的瓶颈是将分解词汇与技能池匹配,而非优化单个生成步骤。

#### **MCP生态系统与工具发现**。

MCP协议(Anthropic, 2024)标准化了智能体-工具集成,拥有超过10,000个服务器。渐进式发现(Qin et al., 2023)系统性地解决了工具过载问题。最近关于零样本工具发现的工作(Wang et al., 2025)通过协议级优化实现了显著的令牌减少,而ToolACE(Liu et al., 2025)整理了大规模工具调用数据集用于微调。代码优先的智能体框架如TaskWeaver(Qiao et al., 2024)解决了执行编排问题,但未涉及技能检索。这些努力是互补的:它们解决了智能体**如何**访问工具,而我们解决了给定查询**应组合哪些**技能。

#### **检索增强生成**。

我们将双编码器检索(Karpukhin et al., 2020)适配于技能,并通过检索到的提示将检索扩展到上游,以告知分解过程。

## 3 问题形式化

#### **技能库**。

技能库S = {s₁, ..., sₙ}包含N个技能。每个技能sᵢ是一个元组(nᵢ, dᵢ, bᵢ, Cᵢ),其中nᵢ是名称,dᵢ是自然语言描述,bᵢ是完整的规范体(指令、示例、配置),Cᵢ ⊆ C是从分类体系C中得出的一组功能类别。

#### **组合技能路由**。

给定一个需要多种能力的复杂查询q,目标是生成:

1. **分解**:D(q) = [t₁, ..., tₖ],包含K个原子性子任务。
2. **技能分配**:σ: [t₁, ..., tₖ] → Sᵏ,将每个子任务映射到一个技能。
3. **执行计划(DAG)**:G = (V, E),指定步骤之间的依赖关系。

组合路由函数为f: q → (D, σ, G),优化:

max_{D,σ,G} α Σₖ rel(tₖ, σ(tₖ)) + (1-α) Σ_{i,j∈E} compat(σᵢ, σⱼ)  (1)

其中rel(·)衡量子任务-技能相关性,compat(·)衡量技能间兼容性,α ∈ [0,1]控制相关性-兼容性的权衡(在公式4中实例化)。虽然公式1的联合优化通常是不可行的,我们的级联流程(§4)提供了一个可处理的近似;SAD(§4.4)通过将检索信号馈回分解过程进一步收紧此近似。

## 4 方法:SkillWeaver

**SkillWeaver**通过三个级联阶段实现组合技能路由(图1)。

### 4.1 第一阶段:任务分解

给定一个复杂查询q,任务分解器使用指令调优的LLM生成一个原子性子任务的有序列表:

D(q) = LLM(p_sys, p_user(q)) = [t₁, ..., tₖ]  (2)

其中p_sys指示模型将子任务输出为JSON字符串数组,每个子任务恰好需要一个技能。

### 4.2 第二阶段:技能检索

对于每个子任务tₖ,我们使用双编码器(all-MiniLM-L6-v2, 384维)检索top-m候选者:

cand(tₖ) = top-m_{s∈S} cos(E_q(tₖ), E_s(s))  (3)

我们比较两种表示:**仅元数据** (n_s ⊕ d_s) 和 **体感知** (n_s ⊕ d_s ⊕ b_s[:2000])。嵌入经L2归一化并使用FAISS(Johnson et al., 2019)建立索引,用于精确内积搜索。未来工作可能探索领域自适应或交叉编码器重排序替代方案(§8)。

### 4.3 第三阶段:组合

给定每一步的检索候选者,组合阶段选择最终的技能分配。选择目标结合了检索相关性和步骤间兼容性:

σ(tₖ) = argmax_{s∈cand(tₖ)} α · sim(tₖ, s) + (1-α) · c̄ₖ(s)  (4)

其中c̄ₖ(s)是与前序步骤的兼容性分数平均值(通过I/O类型强制转换、类别Jaccard和关键词共现来衡量),且α=0.5(在[0.3, 0.7]范围内稳健;见附录E)。步骤之间的依赖关系通过语言标记和I/O重叠来检测,生成一个DAG以在可能的情况下实现并行执行。

#### **当前评估范围**。

本文聚焦于分解-检索阶段,我们将其识别为主要瓶颈(§7)。

相似文章