📅 更新于 2026-05-29 | OpenClawAgent Skills技能编排

🧩 Agent Skill Composition 详解

世界上有一种AI Agent,它不会所有技能,但它知道怎么把技能拼起来——就像凌晨3点17分,你突然发现冰箱里只剩鸡蛋、番茄和半瓶老干妈,但你还是做出了一碗让室友沉默的炒饭。

—— 妙趣AI · 技能组合哲学

📖 什么是 Agent Skill Composition?

Agent Skill Composition(技能组合/技能编排)是指AI Agent将多个独立技能(Skills)按任务需求动态组合、串联或并行执行的能力。它不是简单地调用单个工具,而是像搭乐高一样,把不同技能模块组装成一条完整的工作流。

在OpenClaw中,Skill Composition是SKILL.md驱动架构的核心优势——每个Skill是独立模块,Agent根据任务描述自动选择并组合多个Skill来完成复杂任务。

🧠 核心原理

1. 技能发现(Skill Discovery)

Agent启动时扫描skills/目录,读取每个Skill的SKILL.md文件,提取:

2. 技能选择(Skill Selection)

当用户请求到达时,Agent基于:

3. 组合执行(Composition Execution)

组合模式分为三种:

模式说明示例
串行组合技能A输出 → 技能B输入搜索新闻 → 生成日报
并行组合多个技能同时执行,结果合并同时抓取多个RSS源
条件组合根据中间结果决定是否执行下一个技能检测到死链 → 触发修复技能

🛠️ OpenClaw 实战应用

场景一:多源内容聚合

妙趣AI每日新闻日报的生成,就是典型的Skill Composition:

# 任务:生成今日AI新闻日报
# Agent自动组合以下技能:
1. coze-web-fetch → 抓取多个新闻源
2. ai-news-daily → 解析、分类、生成HTML
3. seo-audit → 更新sitemap.xml
4. feishu-doc → 同步到飞书知识库

场景二:SEO内容生成流水线

# 术语百科批量生成(本轮任务)
# 组合技能链:
web_search → 搜索热门术语
  ↓
write/edit → 生成术语页面(王家卫开场+周星驰总结)
  ↓
exec → 更新sitemap.xml
  ↓
message → 飞书群通知

场景三:Discord社区运营

# 每日Discord推送
discord → 读取社区热门话题
  ↓
marketing-psychology → 应用心理模型优化文案
  ↓
ad-creative → 生成吸引人的推送内容
  ↓
exec → curl调用Discord API发送

💻 代码示例

示例1:定义可组合的Skill

# SKILL.md - 搜索技能
---
name: web-search-plus
description: 增强版网页搜索,支持多源聚合和结果去重。当用户需要搜索多个关键词、对比不同来源时使用。
---

## 使用方式
当用户说"搜索XX和YY的最新动态"时,触发本技能:
1. 并行搜索多个关键词
2. 去重并排序结果
3. 返回结构化数据供下游技能使用

## 输出格式
```json
{
  "query": "原始查询",
  "results": [
    {"title": "...", "url": "...", "source": "..."}
  ],
  "next_skill": "content-generator"  // 建议的下一个技能
}
```

示例2:Agent中的组合调用(伪代码)

// 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;
}

示例3:YAML配置定义组合关系

# 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(推荐做法)

⚠️ DON'T(常见坑)

📊 工具对比

框架技能组合方式OpenClaw优势
LangChain代码定义Chain/LCELSKILL.md声明式,无需写代码
CrewAIAgent团队分工单Agent多技能,更轻量
AutoGen多Agent对话协作本地运行,无外部依赖
OpenClawSKILL.md驱动的动态组合热加载、文件即配置、零代码编排

🎬 周星驰式总结

就像《食神》里的"黯然销魂饭"——不是因为材料有多贵,而是因为火候和组合对了。Agent Skill Composition也是一样,单个Skill再强,不会组合也是白搭。学会组合,你的AI Agent就能从"单挑王"进化成"全能王"。记住:技能不在多,会组才行!

🔗 相关链接