世界上有一种AI Agent,它不会所有技能,但它知道怎么把技能拼起来——就像凌晨3点17分,你突然发现冰箱里只剩鸡蛋、番茄和半瓶老干妈,但你还是做出了一碗让室友沉默的炒饭。
—— 妙趣AI · 技能组合哲学
Agent Skill Composition(技能组合/技能编排)是指AI Agent将多个独立技能(Skills)按任务需求动态组合、串联或并行执行的能力。它不是简单地调用单个工具,而是像搭乐高一样,把不同技能模块组装成一条完整的工作流。
在OpenClaw中,Skill Composition是SKILL.md驱动架构的核心优势——每个Skill是独立模块,Agent根据任务描述自动选择并组合多个Skill来完成复杂任务。
Agent启动时扫描skills/目录,读取每个Skill的SKILL.md文件,提取:
当用户请求到达时,Agent基于:
组合模式分为三种:
| 模式 | 说明 | 示例 |
|---|---|---|
| 串行组合 | 技能A输出 → 技能B输入 | 搜索新闻 → 生成日报 |
| 并行组合 | 多个技能同时执行,结果合并 | 同时抓取多个RSS源 |
| 条件组合 | 根据中间结果决定是否执行下一个技能 | 检测到死链 → 触发修复技能 |
妙趣AI每日新闻日报的生成,就是典型的Skill Composition:
# 任务:生成今日AI新闻日报 # Agent自动组合以下技能: 1. coze-web-fetch → 抓取多个新闻源 2. ai-news-daily → 解析、分类、生成HTML 3. seo-audit → 更新sitemap.xml 4. feishu-doc → 同步到飞书知识库
# 术语百科批量生成(本轮任务) # 组合技能链: web_search → 搜索热门术语 ↓ write/edit → 生成术语页面(王家卫开场+周星驰总结) ↓ exec → 更新sitemap.xml ↓ message → 飞书群通知
# 每日Discord推送 discord → 读取社区热门话题 ↓ marketing-psychology → 应用心理模型优化文案 ↓ ad-creative → 生成吸引人的推送内容 ↓ exec → curl调用Discord API发送
# SKILL.md - 搜索技能
---
name: web-search-plus
description: 增强版网页搜索,支持多源聚合和结果去重。当用户需要搜索多个关键词、对比不同来源时使用。
---
## 使用方式
当用户说"搜索XX和YY的最新动态"时,触发本技能:
1. 并行搜索多个关键词
2. 去重并排序结果
3. 返回结构化数据供下游技能使用
## 输出格式
```json
{
"query": "原始查询",
"results": [
{"title": "...", "url": "...", "source": "..."}
],
"next_skill": "content-generator" // 建议的下一个技能
}
```
// OpenClaw Agent 技能组合逻辑(简化版)
async function executeTask(userRequest) {
// 1. 解析意图,匹配技能
const matchedSkills = await matchSkills(userRequest, agent.skills);
// 2. 构建执行图
const executionGraph = buildCompositionGraph(matchedSkills);
// 例如: [web_search, content_gen, seo_update, notify]
// 3. 按图执行
let context = { request: userRequest };
for (const skill of executionGraph) {
context = await skill.execute(context);
// 每个技能可以修改context,传递给下一个技能
}
return context.result;
}
# openclaw.yaml - 技能组合配置
skills:
composition:
- name: "seo-content-pipeline"
trigger: "生成SEO页面"
sequence:
- skill: "web-search-plus"
output: "search_results"
- skill: "content-generator"
input: "{{search_results}}"
output: "html_content"
- skill: "seo-auditor"
input: "{{html_content}}"
output: "optimized_html"
- skill: "site-deployer"
input: "{{optimized_html}}"
✅ DO(推荐做法)
location字段明确技能路径,便于Agent加载⚠️ DON'T(常见坑)
| 框架 | 技能组合方式 | OpenClaw优势 |
|---|---|---|
| LangChain | 代码定义Chain/LCEL | SKILL.md声明式,无需写代码 |
| CrewAI | Agent团队分工 | 单Agent多技能,更轻量 |
| AutoGen | 多Agent对话协作 | 本地运行,无外部依赖 |
| OpenClaw | SKILL.md驱动的动态组合 | 热加载、文件即配置、零代码编排 |
就像《食神》里的"黯然销魂饭"——不是因为材料有多贵,而是因为火候和组合对了。Agent Skill Composition也是一样,单个Skill再强,不会组合也是白搭。学会组合,你的AI Agent就能从"单挑王"进化成"全能王"。记住:技能不在多,会组才行!