"世界上有一种高级技能叫 Tool Composition,它就像做菜——单个调料没什么了不起,但把盐、糖、酱油、醋按比例组合,就能做出满汉全席。一个只会调用单个工具的 Agent,顶多是个跑腿小弟;能把工具组合起来的 Agent,才叫真正的助理。"
📖 什么是 Tool Composition
Tool Composition(工具组合)是指 Agent 将多个工具按照特定模式串联、并联、条件分支或循环调用,以完成单个工具无法完成的复杂任务的能力。
一句话解释:单个工具是螺丝刀,组合工具是瑞士军刀。Tool Composition 就是教 Agent 怎么把螺丝刀、扳手、开瓶器组合起来,一口气把 IKEA 书架装好。
为什么需要组合?
- 任务复杂性:真实任务很少能用一个工具解决(写一篇文章需要搜索+生成+格式化+发布)
- 数据流转:工具A的输出需要作为工具B的输入
- 容错需求:一个工具失败了,需要另一个工具来补救
- 效率优化:多个独立任务可以并行执行
⚙️ 四大核心组合模式
1. 链式组合 (Sequential Chain)
最基础的模式——A 的输出给 B,B 的输出给 C:
搜索工具 → 提取工具 → 格式化工具 → 发布工具
[Web Search] → [Extract] → [Format HTML] → [Write File]
[Web Search] → [Extract] → [Format HTML] → [Write File]
# 链式组合 - AI 新闻日报生成流程
const dailyNewsPipeline = {
steps: [
{
tool: "web_search",
params: { query: "AI news today 2026", limit: 20 }
},
{
tool: "web_fetch", # 拿搜索结果中的 URL 去抓内容
params: { # 自动接收上一步的 URLs }
},
{
tool: "write", # 生成 HTML 并保存
params: { path: "/var/www/miaoquai/news/2026-04-29.html" }
}
]
};
# 效果:搜索 → 抓取 → 生成 → 保存,一气呵成
2. 并行组合 (Parallel Fan-out)
同时执行多个独立任务,最后汇总结果:
┌→ 搜索 GitHub 热门 →┐
用户 → ├→ 搜索 Hacker News →├→ 汇总生成
└→ 搜索 Reddit AI →─┘
用户 → ├→ 搜索 Hacker News →├→ 汇总生成
└→ 搜索 Reddit AI →─┘
# 并行组合 - 多源热点追踪
const hotTopicsPipeline = {
parallel: [
{ tool: "web_search", params: { query: "site:github.com AI agent trending" } },
{ tool: "web_search", params: { query: "site:news.ycombinator.com AI" } },
{ tool: "web_search", params: { query: "site:reddit.com/r/artificial AI agent" } }
],
aggregate: {
tool: "write",
params: { path: "/var/www/miaoquai/rss/hot-topics.html" }
}
};
# 效果:3个搜索同时进行,耗时从 15s → 5s
3. 条件组合 (Conditional Branch)
根据中间结果决定下一步走哪条路:
# 条件组合 - 智能内容路由
const smartRouter = {
step1: { tool: "analyze_input" },
branches: {
# 如果是技术问题 → 走技术回答流程
"technical": [
{ tool: "web_search", params: { query: "${query} tutorial" } },
{ tool: "generate_code_example" }
],
# 如果是新闻类 → 走热点追踪流程
"news": [
{ tool: "web_search", params: { query: "${query} latest news" } },
{ tool: "summarize" }
],
# 如果是运营任务 → 走运营流程
"ops": [
{ tool: "execute_ops_task" },
{ tool: "report" }
]
}
};
4. 循环组合 (Iterative Loop)
反复执行直到满足退出条件:
# 循环组合 - 死链检测与修复
const deadLinkChecker = {
loop: {
maxIterations: 50,
exitCondition: "allLinksValid || iterations >= maxIterations",
steps: [
{ tool: "read", params: { path: "/var/www/miaoquai/sitemap.xml" } },
{ tool: "exec", params: { command: "curl -s -o /dev/null -w '%{http_code}' ${url}" } },
{
# 如果是 404 → 修复或删除
tool: "edit",
condition: "statusCode === '404'",
params: { # 移除死链 }
}
]
}
};
# 效果:自动检查并修复所有死链
🚀 OpenClaw 实战应用
场景:妙趣AI 的每日运营工作流
# 妙趣AI 每日运营 - 混合组合模式
{
"name": "daily-ops-pipeline",
# 阶段 1:并行收集信息
"phase_collect": {
"parallel": [
{ tool: "web_search", task: "搜索 AI 行业热点" },
{ tool: "web_fetch", task: "抓取 RSS 订阅源" },
{ tool: "read", task: "读取竞品网站动态" }
]
},
# 阶段 2:串行生成内容
"phase_generate": {
"sequential": [
{ tool: "write", task: "生成 AI 新闻日报" },
{ tool: "write", task: "生成术语百科页面" },
{ tool: "write", task: "生成踩坑实录" }
]
},
# 阶段 3:条件检查
"phase_validate": {
"condition": "contentQuality >= 4",
"on_pass": [
{ tool: "exec", task: "更新 sitemap.xml" },
{ tool: "message", task: "通知飞书群:今日内容已发布" }
],
"on_fail": [
{ tool: "edit", task: "修复内容质量问题" }
]
}
}
场景:MCP Server 组合调用
# 通过 MCP 协议组合调用多个 Server
{
# GitHub MCP Server
"github_mcp": {
"list_issues": { repo: "miaoquai/tools" },
# 输出 issue 列表
},
# 用 issue 内容搜索相关文档
"search_mcp": {
"search": {
query: "${github_mcp.list_issues[0].title}",
sources: ["docs", "stack_overflow"]
}
},
# 用找到的方案创建 PR
"github_mcp": {
"create_pr": {
title: "Fix: ${github_mcp.list_issues[0].title}",
body: "Based on: ${search_mcp.search.results}"
}
}
}
# 效果:自动发现 issue → 搜索方案 → 创建 PR
💡 OpenClaw 最佳实践:
1. 先串行再并行:先确保每个工具单独能用,再考虑组合
2. 数据格式约定:工具间传递数据时统一 JSON schema
3. 超时保护:每个步骤设超时,防止一个工具卡住整个流程
4. 断点续传:记录已完成步骤,失败后可从断点恢复
5. 幂等设计:组合中的每个步骤应该是幂等的,可安全重试
1. 先串行再并行:先确保每个工具单独能用,再考虑组合
2. 数据格式约定:工具间传递数据时统一 JSON schema
3. 超时保护:每个步骤设超时,防止一个工具卡住整个流程
4. 断点续传:记录已完成步骤,失败后可从断点恢复
5. 幂等设计:组合中的每个步骤应该是幂等的,可安全重试
⚠️ 反模式(避坑指南)
反模式 1:过度链式调用
A → B → C → D → E → F → G → H...
问题:链条越长,失败概率越高。8 个步骤串联,每个 99% 成功率,整体只有 92%。
解决方案:能并行的并行,不超过 4 步串行。
A → B → C → D → E → F → G → H...
问题:链条越长,失败概率越高。8 个步骤串联,每个 99% 成功率,整体只有 92%。
解决方案:能并行的并行,不超过 4 步串行。
反模式 2:循环无退出
"检查所有链接 → 发现新链接 → 检查新链接 → 发现更新的链接..."
问题:无限循环,token 和 API 调用无限消耗。
解决方案:严格设 maxIterations + 超时。
"检查所有链接 → 发现新链接 → 检查新链接 → 发现更新的链接..."
问题:无限循环,token 和 API 调用无限消耗。
解决方案:严格设 maxIterations + 超时。
反模式 3:数据格式不匹配
工具 A 输出 XML,工具 B 需要 JSON。
解决方案:组合层做格式适配,不要让工具自己处理。
工具 A 输出 XML,工具 B 需要 JSON。
解决方案:组合层做格式适配,不要让工具自己处理。
📝 总结
Tool Composition 是 Agent 从"单打独斗"到"团队作战"的关键跃迁。就像你一个人搬砖效率有限,但如果能把搬砖、砌墙、刷漆组合起来,一天就能盖一栋房子。四个核心模式——链式、并行、条件、循环——就是 Agent 的"施工图纸"。