把强 Agent 的经验变成"技能包"给弱 Agent 用:硬核拆解 SkillX
> 浙大团队提出 SkillX 框架,用 GLM-4.6 自动构建分层技能知识库,弱模型插上技能包后性能暴涨,甚至能完成原本做不了的任务。
一个不平等的课堂
想象一个场景:你是一个刚入职的程序员,面对一个复杂的 API 集成任务。你的同事——一个十年老兵——已经做过几十个类似的项目,积累了大量"套路"。如果他能把这些套路整理成一个"技能包"直接给你用,你就能跳过漫长的摸索期,直接以老兵的水平干活。
这就是 SkillX 想做的事情——只不过"老兵"是 GLM-4.6,"新兵"是各种弱模型,"技能包"是一个结构化的技能知识库。
当前的 Agent 有什么问题?
现在的 LLM Agent 有一个根本性的缺陷:每次面对新任务都从零开始。
不管之前做过多少类似的任务,Agent 不会"记住"学到的经验。这就像一个医生每次看病都重新翻教科书,而不是利用积累的临床经验。
近年来有一些"自我进化"的 Agent 尝试解决这个问题——让 Agent 从过去的执行轨迹中学习。但论文指出了三个结构性缺陷:
1. 孤立学习:每个 Agent 独立学习,重复发现相同的经验。就像每个医生都独立重新发明青霉素。 2. 经验泛化差:从少量任务中提取的经验很难迁移到新任务。就像一个只看过感冒病例的医生突然要处理骨折。 3. 能力天花板:Agent 只能从自己的探索中学习,经验的深度受限于自身能力。就像一个小学生不可能通过自学发现微积分。
SkillX 的核心洞察是:经验应该被结构化、分层、可复用地存储,而不是作为原始轨迹堆在那里。
三层技能体系:从战略到战术
SkillX 把经验组织成一个三层金字塔:
第一层:战略计划(Planning Skills)
最高层是"做什么"。面对一个任务,先制定一个高层计划——需要哪些步骤,每步的目标是什么。
比如"导出 Spotify 所有歌曲到 CSV 文件"这个任务,战略计划是: 1. 认证 Spotify 账号 2. 获取所有播放列表 3. 收集所有歌曲 ID 4. 去重 5. 导出为 CSV
这不是代码,是结构化的自然语言步骤,每一步都标注了需要调用的关键 API。
第二层:功能技能(Functional Skills)
中间层是"怎么做"。每个功能技能是一个可复用的代码片段,封装了一个特定的操作。
比如 spotify_find_most_liked_song 这个技能:
- 输入:一组歌曲 ID
- 输出:点赞数最高的歌曲标题
- 实现:遍历每个 ID,调用
apis.spotify.show_song获取详情,比较点赞数 - 工具依赖:
apis.spotify.show_song
name(名称)、document(功能描述+参数+输出+注意事项)、content(实现代码)、tools(依赖的工具列表)、metadata(元信息)。第三层:原子技能(Atomic Skills)
最底层是"怎么用"。原子技能是工具级别的使用示例——如何正确调用某个特定的 API。
比如"如何使用 apis.spotify.show_song 获取歌曲详情",包含具体的调用格式、参数说明、返回值结构。
这三层形成了一个从抽象到具体的完整链条:战略计划告诉你做什么,功能技能告诉你怎么做,原子技能告诉你工具怎么用。
全自动流水线:从轨迹到技能库
SkillX 的整个构建过程是全自动的,不需要人工干预。流水线分四个阶段:
阶段一:轨迹生成与技能提取
用强模型(GLM-4.6)在目标环境中执行任务,收集执行轨迹。然后从轨迹中提取三层技能:
- 计划提取:从完整的执行轨迹中提炼出高层步骤
- 功能技能提取:从每个步骤中提取可复用的代码模式
- 原子技能提取:从 API 调用中提取工具使用模式
阶段二:迭代精炼(Iterative Skills Refinement)
这是最精巧的部分。技能库不是一次性构建的,而是多轮迭代:
1. 用当前技能库辅助 Agent 执行新任务 2. 根据执行反馈,修改/合并/过滤技能 3. 更新技能库 4. 重复
每一轮迭代都有三种操作:
- 修改:根据新经验改进现有技能
- 合并:把相似的技能合并成一个更通用的技能
- 过滤:删除冗余或低质量的技能
阶段三:探索式扩展(Exploratory Skills Expansion)
这是打破"能力天花板"的关键。如果只从已有任务中提取技能,技能库的覆盖范围就受限于训练数据的多样性。
SkillX 让 Agent 主动探索环境——尝试新的操作组合,发现新的使用模式,然后从这些探索轨迹中提取新技能。
这就像一个厨师不仅从已有菜谱中学习,还会主动尝试新的食材搭配,发现新的美味组合。
阶段四:技能检索与注入
当弱模型需要执行任务时,SkillX 通过语义检索找到最相关的计划和技能,注入到系统提示中。
检索分两步: 1. 先检索最相关的战略计划,重写为伪计划(pseudo-plan) 2. 再根据伪计划中的步骤,检索对应的功能技能和原子技能
整个过程对弱模型来说是透明的——它只需要按照注入的技能指导执行即可。
实验结果:弱模型插上翅膀
论文在三个高难度基准上测试了 SkillX 的效果:
AppWorld(应用交互)
AppWorld 是一个模拟真实应用环境的基准,Agent 需要操作 Spotify、Venmo、Reddit 等应用的 API 完成复杂任务。
| 基础模型 | 无技能库 | + SkillX | 提升 |
|---|---|---|---|
| GPT-4o-mini | 32.5% | 48.3% | +15.8 |
| Llama-3.1-8B | 21.7% | 35.8% | +14.1 |
| Qwen2.5-7B | 26.7% | 38.3% | +11.6 |
BFCL-v3(函数调用)
Berkeley 函数调用基准测试:
| 基础模型 | 无技能库 | + SkillX | 提升 |
|---|---|---|---|
| GPT-4o-mini | 58.9% | 71.1% | +12.2 |
| Llama-3.1-8B | 36.7% | 52.2% | +15.5 |
τ²-Bench(长期对话式任务)
| 基础模型 | 无技能库 | + SkillX | 提升 |
|---|---|---|---|
| GPT-4o-mini | 22.5% | 33.3% | +10.8 |
关键发现
1. 分层技能优于其他经验表示:相比原始轨迹(trajectories)、工作流(workflows)、洞见(insights),三层技能体系在所有基准上都表现最好 2. 迭代精炼有效:三轮迭代后技能库质量显著提升,特别是合并操作减少了冗余 3. 探索式扩展突破天花板:主动探索发现的技能覆盖了训练数据中不存在的操作组合 4. 执行效率提升:装备技能库的 Agent 平均执行步骤更少,因为不需要"试错"
代码结构解析
SkillX 的代码仓库结构清晰:
SkillX/
├── core/skill.py # 技能数据模型(5键schema)
├── extraction/ # 技能提取模块
│ ├── plan_extractor.py # 计划提取
│ ├── skill_extractor.py # 功能/原子技能提取
│ └── tool_summary.py # 工具摘要生成
├── filtering/ # 技能过滤模块
│ ├── general_filter.py # 通用过滤器
│ └── pipeline.py # 过滤流水线
├── expansion/ # 探索式扩展
│ ├── explorer.py # 环境探索器
│ └── task_generator.py # 任务生成器
├── inference/ # 推理与检索
│ ├── retriever.py # 技能检索(embedding-based)
│ ├── plan_rewriter.py # 计划重写
│ └── benchmarks/ # 基准测试适配器
├── pipeline.py # 扩展提示词
└── skillx_db/ # 预构建的技能库
└── appworld/
├── vanilla-iter1/ # 第1轮迭代
├── vanilla-iter2/ # 第2轮迭代
└── vanilla-iter3/ # 第3轮迭代(最终版)
技能库的每个技能都遵循标准化的 5 键 schema:
{
"name": "spotify_find_most_liked_song",
"document": "功能描述、参数、输出、注意事项",
"content": "实现代码",
"tools": ["apis.spotify.show_song"],
"metadata": {
"skill_type": "functional",
"source_tasks": ["task_1", "task_2"],
"cluster_id": 3
}
}
与 Claude Skills 的对比
论文在引言中直接对比了 Anthropic 的 Claude Skills:
| 维度 | Claude Skills | SkillX |
|---|---|---|
| 格式 | 长上下文、渐进式披露 | 分层、条目化 |
| 存储 | 需要复杂的沙箱系统 | 轻量级检索模块 |
| 注入 | 需要多轮交互 | 一次性注入系统提示 |
| 跨模型迁移 | 困难(依赖 Claude 特有能力) | 容易(标准化格式) |
| 构建 | 半手动 | 全自动 |
工程师的实用指南
如果你想在自己的项目中使用 SkillX:
1. 准备环境:需要目标环境的 API 文档和访问权限 2. 选择骨干模型:用最强的可用模型(论文用 GLM-4.6)来生成技能库 3. 运行提取流水线:让骨干模型执行任务,自动提取三层技能 4. 迭代精炼:至少跑 2-3 轮迭代,合并和过滤冗余技能 5. 部署检索:用 embedding 模型建立技能索引,推理时按需检索注入
注意事项:
- 技能库的质量高度依赖骨干模型的能力
- 检索模块目前还是简化版(代码中有 TODO 标注),生产环境需要更强的 embedding 检索
- 技能库是环境特定的——Spotify 的技能库不能直接用于 Slack
我的思考
SkillX 让我想到一个更深层的问题:AI Agent 的"经验"到底应该以什么形式存在?
现在大多数 Agent 框架(LangChain、AutoGPT、CrewAI)都在解决"如何让 Agent 执行任务"的问题,但很少有人认真思考"如何让 Agent 积累经验"。
SkillX 的答案是:经验应该是结构化的、分层的、可复用的。 这和人类的知识组织方式高度一致——我们有"方法论"(战略计划)、有"操作手册"(功能技能)、有"工具使用技巧"(原子技能)。
但这个方向还有很多未解的问题:
- 技能库如何跨环境迁移?(Spotify 的技能能迁移到 Apple Music 吗?)
- 技能库如何随着环境变化自动更新?(API 改版了怎么办?)
- 多个技能库如何组合?(Spotify + Venmo + Reddit 的技能能协同工作吗?)
---
论文信息
- 标题: SkillX: Automatically Constructing Skill Knowledge Bases for Agents
- 作者: Chenxi Wang, Zhuoyun Yu, Xin Xie 等(浙江大学)
- arXiv: 2604.04804(v2, 2026-04-19)
- 代码: github.com/zjunlp/SkillX
- 许可证: MIT
🌟 智谱 GLM-5 已上线
我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。
🎁 领取 2000万 Tokens