Swarm Skills:让多智能体协作协议变成可携带、可进化的资产

5 阅读11分钟

论文: Swarm Skills: A Portable, Self-Evolving Multi-Agent System Specification for Coordination Engineering

作者: Xinyu Zhang, Zhicheng Dou, Deyu Li, Jianjun Tao, Shuo Cheng, Ruifeng Shi, Fangchao Liu, Enrui Hu, Yangkai Ding, Hongbo Wang, Qi Ye, Xuefeng Jin, Zhangchun Zhao (中国人民大学高瓴人工智能学院 & openJiuwen团队)

链接: arxiv.org/abs/2605.10…

发布日期: 2026-05-11


你有没有想过一个很奇怪的事——

单智能体的技能(Skill)已经可以像App一样打包、分发、安装了。Claude的SKILL.md就是一个标准化的技能包,写好一次,到处能用。但多智能体呢?你在CrewAI里写的团队模板,AutoGen里配的GroupChat,MetaGPT里定义的SOP——跑完就没了。换一个框架?完全不能用。

这就像每个团队做完项目就把流程文档全删了,下次再来类似任务,又要从零开始摸索"谁干什么、怎么配合"。不是浪费,是巨大的浪费。

Swarm Skills这篇论文就是要解决这个问题。

先搞清楚:Swarm Skill到底是什么?

名字里带"Skill",但它不是一个Skill,而是一组Skill的编排方案

打个比方:

  • 普通Skill = 一个人的岗位说明书(你会什么、用什么工具、怎么干活)
  • Swarm Skill = 一整个部门的组织架构图(有哪些岗位、谁先干谁后干、怎么配合、预算多少)

它们虽然都叫"Skill",都放在skills/目录下,都用SKILL.md做入口,但层次完全不同。普通Skill描述的是一个Agent能做什么,Swarm Skill描述的是一群Agent怎么合作

再直白一点——一个Swarm Skill本质上就是一家虚拟公司

  • SKILL.md = 公司简介 + 组织架构(有哪些部门)
  • roles/ = 每个岗位的JD(岗位职责、需要什么能力、用什么工具)
  • workflow.md = 业务流程(哪个部门先干、谁交付给谁、哪些可以并行)
  • bind.md = 公司制度(预算上限、deadline、质量标准)
  • evolutions.json = 公司的经验积累(上次项目踩了什么坑、下次怎么改进)

一个被忽视的空缺

论文把AI工程的演进分成四个阶段——Prompt Engineering、Context Engineering、Harness Engineering、Coordination Engineering。前三个都围着单智能体转,到了Coordination Engineering才真正面对"多智能体怎么协作"这件事。

但最关键的瓶颈不是"怎么让多个Agent跑起来"——CrewAI、AutoGen、MetaGPT已经做了——而是协作经验沉淀:成功的协作模式能不能被记录、复用、持续改进?

论文做了一个很有说服力的调研:在现有的Anthropic Skills社区里,大量高下载量的Skill其实是在用单智能体格式"假装"多智能体。比如一个叫c-level-advisor的Skill里面塞了9个角色,ra-qm-team定义了13个专家人格。用户想表达"团队协作"的需求,但标准只支持单智能体,只能凑合。

这说明什么?需求早就有了,只是没人给一个正经的标准。

"描述格式,不是运行时"——最关键的设计决策

Swarm Skills最核心的一句话就是:它是一个描述格式,不是一个运行时。

传统框架把协作逻辑写死在Python代码或私有配置文件里。CrewAI的模板AutoGen读不懂,MetaGPT的SOP也不能搬到CrewAI——它们各自定义了自己的"执行图",彼此互不兼容。

Swarm Skills完全反过来——它只规定**"谁来做、做什么、有什么约束",完全不碰"怎么做"**。消息怎么传递?任务队列怎么管理?进程怎么隔离?那是宿主Agent(Host Agent)运行时的事。

换个说法:Swarm Skill是一份作战方案,Host Agent是指挥官。作战方案写了"你需要5个人、A负责侦察、B负责火力、C负责后勤、A先出动然后BC跟上",但具体怎么调兵遣将、用什么通讯设备,是指挥官自己的事。任何指挥官拿到这份方案都能排兵布阵,不需要适配器。

那具体怎么用?跑一遍流程

整个使用流程是这样的:

  1. Host Agent收到一个任务,比如"帮我规划一次旅行"
  2. Leader扫描所有Swarm Skill的简介——只看frontmatter里的description字段,省token
  3. Leader选中合适的Swarm Skill,比如travel-planning-swarm
  4. 按需读取详细内容——用read_file逐层加载SKILL.md正文、roles/、workflow.md、bind.md
  5. 创建队友——Leader根据roles/里的定义,用Host Agent原生的子Agent工具(比如Task)实例化各个角色
  6. 按workflow协作——队友们按workflow.md描述的方式配合完成任务
  7. 执行完后,系统自动扫描轨迹——发现摩擦就生成Evolution Record追加到evolutions.json

注意第5步——Swarm Skill自己不会"运行",它只是告诉Host Agent该怎么组织团队。队友的创建、消息的传递,全靠Host Agent的原生能力。Swarm Skill只提供"剧本",不提供"舞台"。

五个组件,一个目录

一个Swarm Skill长这样:

swarm-skill/
├── SKILL.md          # 入口:frontmatter元数据 + 自然语言概述
├── roles/            # 角色定义(每个角色一个.md文件)
├── workflow.md       # 工作流描述(自然语言或Mermaid语法)
├── bind.md           # 执行边界(最大轮次、token预算、质量门控)
└── evolutions.json   # 进化记录(运行时自动生成和更新)

跟传统多智能体框架比一下就很清楚了:

CrewAI / AutoGenSwarm Skills
协作逻辑写死在Python代码里写在Markdown文件里
跨框架❌ 不行✅ 任何能读懂Markdown的Agent都能用
可进化❌ 跑完就没了✅ 自动记录改进,越用越好
降级处理换框架直接报错不支持多Agent就降级成单Agent顺序执行

SKILL.md是入口,frontmatter里声明kind: swarm-skill告诉框架"这是多智能体技能",roles[]列出角色配置。有意思的是,这些新字段利用了Anthropic Skills标准的additionalProperties: true机制——不支持多智能体的框架会自动忽略它们,把Swarm Skill当普通Skill用。不崩溃,只是降级成单智能体顺序执行。优雅降级,而不是报错退出。

roles/目录里每个角色一个.md,Leader用read_file加载后创建队友。workflow.md用自然语言或Mermaid语法描述任务依赖。bind.md设定约束——防止团队跑飞。

而evolutions.json——这是最有趣的部分。

只追加,不修改——像Git一样的进化记录

每次执行完一个Swarm Skill,系统会自动扫描执行轨迹,寻找"摩擦":循环依赖、冗余通信、角色职责耦合……发现后生成一条Evolution Record追加到evolutions.json:

{
  "id": "evo_20260430_001",
  "context": "Budget Reviewer在数值审计和创意写作之间反复切换,效率低下",
  "change_directive": {
    "target_files": ["roles/copywriter.md", "workflow.md"],
    "action": "SPLIT_ROLE",
    "content": "拆分出独立的Copywriting Expert,与预算审查并行执行"
  },
  "metrics": {
    "effectiveness_score": 0.5,
    "utilization_rate": 0.0,
    "freshness_decay": 1.0
  }
}

只追加,不修改基础文件。 SKILL.md、roles/、workflow.md保持原样,进化记录是叠加在上面的。这就像Git——每次改进是一条commit,基础代码是干净的,出问题随时revert。

而且因为evolutions.json是Swarm Skill的一部分,所以进化经验是跟着资产走的。你把一个Swarm Skill从Agent A传给Agent B,B自动继承A积累的所有协作经验。这在以前是不可能的——你用CrewAI跑出来的经验,AutoGen一点都沾不到。

用"虚拟公司"来说就是:你把一家公司卖给新老板,公司制度、项目经验、踩过的坑全部打包带走,新老板不用从零开始。

怎么进化?三个阶段循环

格式定义了"进化记录放哪",但怎么产生和评估这些记录?配套的自我进化算法分三个阶段:

CREATE(从零到有):当Host Agent执行任务时动态创建了多个子智能体,算法监控到"协作信号"(≥2个角色 + 跨Agent依赖),就把执行轨迹蒸馏成一个新的Swarm Skill。比如"分析框架A vs B"被抽象成"N-way Component Comparison"这个通用模式。新Skill存到暂存区,Leader选了才正式采纳——自然淘汰机制。

USE(按需加载):Leader只看所有Skill的description(省token),选中后才用read_file逐层加载详情。历史进化记录也会被注入,让团队自动受益于过去的改进。

PATCH(摩擦驱动):任务完成后扫描轨迹,找两类信号——隐式摩擦(循环依赖、冗余通信)和显式改进(用户反馈、Agent反思)。找到就自动追加Evolution Record。

还是用公司的类比:CREATE相当于"新业务线跑通了,沉淀成标准流程";USE相当于"下次接类似项目,直接翻手册";PATCH相当于"项目复盘发现问题,记到改进清单里"。

但进化不能乱来——三维评分和治理动作

Evolution Record会越积越多,不能什么都留着。系统用三维加权评分评估每条记录:

Si=wEE+wUU+wFFS_i = w_E \cdot E + w_U \cdot U + w_F \cdot F

  • E (Effectiveness):补丁的实际效果。用贝叶斯平滑(Beta(1,1)先验)稳定早期评估,不会因为一两次异常结果就大起大落
  • U (Utilization):采纳率。如果Leader总是忽略某条进化指令,说明它没用,U就衰减
  • F (Freshness):时间衰减,指数半衰期(如90天)。过时的优化不该永远占着上下文窗口

低分记录自然沉底,最终被忽略。

当记录积累到一定量(≥10条),触发三大治理动作:

  • SIMPLIFY:LLM驱动的修剪——低分删、重叠合、措辞磨。相当于公司定期"清理旧制度"
  • REBUILD:解决"首次运行锁定"——如果初始工作流就很差,打再多补丁也不如推倒重来。REBUILD把补丁合并到基础文件,生成干净的版本,清空evolutions.json。相当于"公司架构重组"
  • ROLLBACK:REBUILD搞砸了?回滚到之前归档的版本。相当于"重组失败,恢复原状"

这套机制让进化不是"野蛮生长",而是有质量管控的持续改进。

看看实际效果:一个旅行规划的例子

论文用了一个travel-planning-swarm来演示整个系统怎么跑。

任务:五一从杭州去东北,一家三口(含1岁宝宝),预算2万。5个专家角色:交通、住宿、景点、计划整合、预算审查。

执行中出了个有趣的冲突——交通专家选了便宜的晚班航班,景点专家安排了第一天下午的行程,时间对不上。两个Agent自主协商,考虑到1岁宝宝的舒适度,决定改上午航班,保住下午行程,预算也没超。

任务完成后,算法发现"预算审查者"同时干财务审计和社交媒体文案写作,职责耦合。自动生成Evolution Record建议拆分。确认后REBUILD,团队从5人变6人,文案和审查并行——越用越强

这就像一家真公司——项目做多了发现"财务和文案让一个人干"效率太低,自然就拆成两个岗。Swarm Skills把这个过程自动化了。

零适配器部署的秘密

Swarm Skills声称"Zero-Adapter Deployment"——不需要翻译层就能跨框架用。怎么做到的?

答案是渐进式披露(Progressive Disclosure)。整个协作协议用自然语言和Markdown写,唯一有结构的是SKILL.md的frontmatter。Host Agent不需要解析什么专有执行图,它只需要读懂自然语言的工作流描述,然后用原生的read_file和子智能体创建工具来执行。

对Claude Code来说,部署就是把目录复制到skills/文件夹,完事。对不支持多智能体的框架,会优雅降级成单智能体顺序执行——不会崩溃,只是效果差一些。

我的看法

真正厉害的地方:问题定义精准——"协作经验沉淀"这个痛点以前没人系统提过。设计哲学也对——"描述格式而非运行时"让它天然可移植,如果自己定义执行引擎,就又变成另一个CrewAI了。进化机制的工程化程度很高,贝叶斯平滑、时间衰减、SIMPLIFY/REBUILD/ROLLBACK这套组合拳不是拍脑袋想出来的。

我的疑虑:自然语言工作流的鲁棒性是个问题——不同模型对同一段workflow.md的理解可能差别很大,这比代码定义的执行图脆弱。论文也承认缺乏大规模跨框架定量测试,目前只有JiuwenSwarm一个参考实现。"首次运行锁定"也不太好解决——初始工作流很差的话,PATCH可能只是给烂楼刷漆。

实践启发:不管你用什么框架做多智能体,现在就该把协作协议和运行时解耦——别把逻辑写死在代码里。evolutions.json"只追加不修改"的模式很值得借鉴,任何需要持续改进的系统都能用。三维评分的思路也通用——不是所有"改进"都是真改进,量化评估比拍脑袋靠谱。


Swarm Skills提出了一个简洁但野心勃勃的想法:多智能体的协作方式,应该像单智能体的技能一样,可以打包、分享、安装、进化。 当AI从"一个人干活"走向"一个团队干活",协作经验能不能沉淀和复用,决定了团队是每次从零开始,还是越用越强。

它给出的答案很有说服力——让协作协议本身成为可进化的生命体。


🤖 以上是小歪对这篇论文的研读笔记,欢迎交流讨论~