很多初学者容易混淆OpenClaw的三个核心概念:ToolSkillPlugin

今天用一篇文章彻底讲清楚。

一句话概括

  • Tool = 底层能力(AI能调用的具体功能)
  • Skill = 能力说明书(告诉AI什么时候、怎么用Tool)
  • Plugin = 扩展入口(为OpenClaw添加新能力)

为什么要区分它们?

看一个比喻:

你有一个工具箱(Plugin)
里面有很多工具(Tool)
但你得给AI写说明书(Skill)
它才知道什么时候用什么工具

这是OpenClaw的设计哲学:能力与调用分离

深入理解 Tool

什么是Tool?

Tool是OpenClaw的底层执行单元,是AI真正能调用的功能。

// OpenClaw内置的Tool示例
{
  name: "weather-query",
  description: "查询指定城市的天气",
  params: { city: "string" }
}

{
  name: "email-send", 
  description: "发送邮件",
  params: { to: "string", subject: "string", body: "string" }
}

{
  name: "image_generate",
  description: "生成图片",
  params: { prompt: "string", model: "string" }
}

Tool的特点

  1. 底层执行 — 直接调用API或系统命令
  2. 无状态 — 不记上下文,只管执行
  3. 原子性 — 每个Tool只做一件事
  4. 内置+自定义 — 可自己开发新Tool

Tool从哪里来?

┌─────────────────────────────────────┐
│           Tool 来源                 │
├─────────────────────────────────────┤
│ 1. OpenClaw 内置Tool                │
│    (message, browser, exec, image)  │
│                                     │
│ 2. Plugin 提供                      │
│    (飞书插件提供 feishu.send)        │
│                                     │
│ 3. Skill 暴露                       │
│    (通过SKILL.md声明)               │
└─────────────────────────────────────┘

深入理解 Skill

什么是Skill?

Skill是调用配置包,告诉AI:

  • 什么时候触发(trigger)
  • 调用哪个Tool
  • 参数怎么构造
  • 结果怎么返回
---
name: weather-query
description: 查询城市天气
trigger:
  - 北京天气
  - 上海天气
  - weather
tools:
  - name: weather-query
---

# 当用户说"北京天气"时:
# 1. 触发这个Skill
# 2. 调用 weather-query Tool
# 3. 提取城市名"北京"作为参数
# 4. 返回格式化结果

Skill的核心作用

1. 触发条件匹配

# 精确匹配
trigger: "北京天气"

# 包含匹配(任意包含"天气"都会触发)
trigger: "天气"

# 正则匹配
trigger: /.*天气.*/

2. 参数提取

Skill能从用户输入中自动提取参数

# 用户说"查一下北京后天天气"
# Skill自动提取:
#   - city: "北京"
#   - date: "后天"

3. 结果格式化

Tool返回原始数据,Skill负责美化输出

// Tool返回
{ temp: 15, humidity: 65, condition: "晴" }

// Skill格式化输出
北京今日天气:
🌡️ 温度:15°
💧 湿度:65%
🌤️ 天气:晴

Skill vs Tool 对比

维度 Tool Skill
定位 底层执行单元 调用配置包
触发 AI自主判断 关键词/正则触发
参数 需要显式指定 自动提取
结果 原始数据 格式化输出
复用 高(通用) 中(特定场景)
开发 需要写代码 写配置即可

举个例子

没有Skill(直接调Tool):

用户:查下北京天气
AI:调用 weather-query Tool(city="北京")
Tool返回:{temp:15, condition:"晴"}
AI:给你查到了,北京现在15度,晴天

有Skill(智能触发):

用户:北京天气咋样
AI:匹配到 weather Skill,触发
Skill自动提取城市、调用Tool、格式化输出
AI:北京今日天气:🌡️ 15° | 💧 65% | 🌤️ 晴

深入理解 Plugin

什么是Plugin?

Plugin是功能扩展包,为OpenClaw添加全新能力:

  • 新渠道(飞书、Telegram、Discord插件)
  • 新模型(Claude、DeepSeek插件)
  • 新Tool(天气API、数据库操作插件)

Plugin架构

┌─────────────────────────────────────────────┐
│              OpenClaw Gateway               │
├─────────────────────────────────────────────┤
│  渠道 Plugin    │   模型 Plugin   │  Tool插件 │
│  ─────────────  │  ─────────────  │ ──────── │
│  • 飞书         │   • Claude     │  • 天气   │
│  • Telegram    │   • Gemini     │  • 数据库  │
│  • Discord     │   • DeepSeek   │  • 邮件    │
└─────────────────────────────────────────────┘
              ↓
        Tool集合(供Skill调用)

Plugin vs Skill

维度 Plugin Skill
定位 功能扩展 能力配置
范围 整个OpenClaw 当前Agent
开发 需要写代码 写配置即可
粒度 粗(渠道/模型/Tool) 细(特定场景)

三者协作流程

用户输入 → Skill匹配 → Skill调用Tool → Tool执行 → Skill格式化 → AI回复
   │           │            │
   │           │            └────────── 来自Plugin
   │           │
   │           └────────────────────── 来自Skill配置
   │
   └────────────────────────────────── 触发条件

完整示例

# weather-skill/SKILL.md
---
name: weather-reminder
description: 天气查询并发送提醒
trigger: 天气提醒
tools:
  - name: weather-query
  - name: email-send
---

# 执行逻辑(JavaScript)
const weather = await callTool('weather-query', { city });
if (weather.includes('雨')) {
  await callTool('email-send', { 
    to: user.email, 
    body: '记得带伞!' 
  });
}
return '已发送提醒!';

执行流程:

用户:"帮我提醒北京天气到 xxx@email.com"
         ↓
Skill "weather-reminder" 匹配触发
         ↓
调用 Plugin 提供的 weather-query Tool
         ↓
调用 Plugin 提供的 email-send Tool
         ↓
Skill 格式化返回结果
         ↓
AI:"✅ 已查询北京天气,发送了带伞提醒!"

常见误区

❌ 误区1:Tool = Skill

很多人把两者混为一谈。

纠正:Tool是"工具",Skill是"说明书"。Tool本身不知道什么时候该用,只有配上Skill才智能。

❌ 误区2:Skill只能调用一个Tool

纠正:一个Skill可以调用多个Tool,这正是进阶篇要讲的多Tool协同。

❌ 误区3:Plugin太复杂,不需要

纠正:Plugin是能力来源。飞书接入、天气查询、图片生成——都是Plugin提供的。

什么时候用什么?

场景 需要做的
想接入新渠道(飞书/Telegram) 安装 Plugin
想让AI学会新能力(查天气/股票) 开发 Skill
想增强现有能力(格式化输出) 优化 Skill
想调用外部API Plugin + Skill

总结

今天我们学会了:

  1. Tool — 底层执行单元,AI真正调用的功能
  2. Skill — 调用配置包,告诉AI何时、如何用Tool
  3. Plugin — 功能扩展包,提供Tool来源
  4. ✅ 三者协作流程
  5. ✅ 常见误区澄清

记住这个比喻

Plugin是工具箱,Tool是箱里的具体工具,Skill是说明书。
有了说明书,AI才知道什么场景用什么工具。


原创不易,欢迎转发分享。

Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐