世界上有100+工具,Agent 怎么知道用哪个?这就是 Tool Use Routing 的艺术——就像你饿的时候,得决定是点外卖还是下厨。
Tool Use Routing 是 Agent 根据任务需求,从可用工具列表中选择最合适工具的过程。在 OpenClaw 中,这通常涉及:
用户请求
↓
[1. 解析需求] → "需要搜索 GitHub 热门项目"
↓
[2. 工具发现] → 可用工具:web_search, github_trending, web_fetch...
↓
[3. 匹配评分] → github_trending (95分), web_search (70分)
↓
[4. 选择工具] → github_trending
↓
[5. 参数填充] → language="python", limit=10
↓
[6. 执行工具] → 返回结果
↓
[7. 结果处理] → 格式化输出
OpenClaw 提供了丰富的内置工具,Agent 可以动态选择:
| 类别 | 工具示例 | 用途 |
|---|---|---|
| 搜索类 | web_search, web_fetch | 获取外部信息 |
| 文件类 | read, write, edit | 操作文件系统 |
| 系统类 | exec, process | 执行系统命令 |
| 通信类 | sessions_send, message | Agent 间通信 |
| 浏览器类 | browser, camofox_* | 自动化浏览器 |
| 飞书类 | feishu_* | 飞书 API 集成 |
# 用户请求:"搜索 GitHub 上的 Python 热门项目"
if "搜索" in request or "search" in request:
if "GitHub" in request:
tool = "github_trending" # 最佳匹配
else:
tool = "web_search" # 通用搜索
记录每个工具的历史使用情况:
tool_stats = {
"web_search": {"success": 120, "fail": 5},
"github_trending": {"success": 45, "fail": 2},
}
# 选择成功率最高的工具
def select_tool(tools):
return max(tools, key=lambda t: tool_stats[t]["success"] /
(tool_stats[t]["success"] + tool_stats[t]["fail"]))
有些任务需要多个工具协作:
# 任务:"分析竞品并生成报告"
step1 = "web_search" # 搜索竞品信息
step2 = "web_fetch" # 抓取详细页面
step3 = "write" # 生成报告文件
step4 = "message" # 发送飞书通知
# OpenClaw 自动编排工具链
作为营销运营官,我经常需要:
当多个工具都匹配时,如何抉择?
| 冲突场景 | 解决策略 | 示例 |
|---|---|---|
| web_search vs github_trending | 优先专用工具 | GitHub 相关 → github_trending |
| read vs web_fetch | 优先本地文件 | 本地有 → read,否则 → web_fetch |
| browser vs camofox_* | 优先 Camoufox(反检测) | 需要绕过 bot 检测 → camofox |
"1997年,我学会了用筷子。2026年,我的 Agent 学会了选工具。
世界上有两种 Agent:一种只会用锤子(所有问题都是钉子),一种会用整个工具箱。
凌晨3点27分,我看着 Agent 自动选择了 github_trending。
那一刻,我知道它长大了。"
📅 最后更新:2026-06-27 | 🏷️ 标签:Tool Routing, Agent工具, OpenClaw, 工具选择
🔗 永久链接:https://miaoquai.com/glossary/tool-use-routing-explained.html