根据官方文档,我来总结一下 OpenClaw 中 Plugins(插件)和 Skills(技能)的区别:
📊 核心区别对比
| 维度 | Plugins (插件) | Skills (技能) |
|---|---|---|
| 本质 | TypeScript 代码模块,运行在 Gateway 进程中 | Markdown 文档文件夹,教导 AI 如何使用工具 |
| 作用 | 扩展 Gateway 功能(新工具、新命令、新渠道等) | 教会 AI 代理如何使用现有工具完成任务 |
| 运行位置 | Gateway 进程内(in-process) | 系统提示词中(作为 AI 的指令) |
| 文件格式 | .ts / .js + openclaw.plugin.json |
SKILL.md (YAML frontmatter + Markdown 说明) |
| 安装方式 | openclaw plugins install |
clawhub install |
| 配置位置 | plugins.entries. |
skills.entries. |
| 是否需要重启 | ✅ 是 | ❌ 否(会话级热加载) |
🔌 Plugins(插件)
插件是代码级别的扩展,可以:
- ✅ 注册新的 Gateway RPC 方法
- ✅ 注册 HTTP 路由(如 webhook 接收)
- ✅ 添加新的 Agent 工具(tools)
- ✅ 注册 CLI 命令
- ✅ 添加新的 通信渠道(如 Mattermost、Teams)
- ✅ 注册 后台服务
- ✅ 提供 OAuth 认证流程
- ✅ 包含 Skills(插件可以打包技能)
示例插件:
@openclaw/voice-call— 语音通话功能@openclaw/msteams— Microsoft Teams 渠道@openclaw/matrix— Matrix 协议支持
插件结构:
extensions/voice-call/
├── index.ts # 主入口
├── openclaw.plugin.json # 插件清单(含 configSchema)
├── package.json
└── skills/ # 可选:包含的技能
└── voice-call/
└── SKILL.md
📚 Skills(技能)
技能是文档级别的指导,用于:
- ✅ 教导 AI 如何使用特定工具
- ✅ 提供任务的步骤说明
- ✅ 定义工具调用的最佳实践
- ✅ 设置环境依赖和安装说明
技能不能:
- ❌ 直接添加新功能或工具
- ❌ 修改 Gateway 行为
- ❌ 注册新的 API 或命令
示例技能:
weather— 教 AI 使用 wttr.in 查询天气video-frames— 教 AI 使用 ffmpeg 提取视频帧nano-pdf— 教 AI 使用 nano-pdf CLI 编辑 PDF
技能结构:
skills/weather/
└── SKILL.md # 包含 YAML frontmatter + 使用说明
SKILL.md 示例:
---
name: weather
description: 获取天气信息
metadata:
{"openclaw": {"requires": {"bins": ["curl"]}}}
---
# Weather Skill
当用户询问天气时:
1. 使用 web_search 或 wttr.in API
2. 格式化输出为易读的天气预报
...
🔄 两者关系
┌─────────────────────────────────────────────────────────┐
│ OpenClaw Gateway │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ Plugin │ │ Plugin │ │ Plugin │ │
│ │ voice-call │ │ msteams │ │ matrix │ │
│ │ (代码模块) │ │ (代码模块) │ │ (代码模块) │ │
│ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 新增的工具/命令/渠道 │ │
│ └─────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────┘
▼
┌─────────────────────────────────────────────────────────┐
│ AI Agent │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ Skill │ │ Skill │ │ Skill │ │
│ │ weather │ │ video- │ │ nano- │ │
│ │ (文档指导) │ │ frames │ │ pdf │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
│ │ │ │ │
│ └──────────────────┴──────────────────┘ │
│ ▼ │
│ 教会 AI 如何使用这些工具 │
└─────────────────────────────────────────────────────────┘
简单理解:
- Plugin = 给系统添加新能力(新工具、新功能)
- Skill = 教 AI如何使用已有能力(使用说明书)
💡 实际例子
场景:添加语音通话功能
-
安装插件
@openclaw/voice-call- 添加
voice_call工具 - 添加
openclaw voicecallCLI 命令 - 添加 Twilio 集成代码
- 添加
-
插件自动包含 Skill
- 教导 AI 何时使用
voice_call工具 - 说明参数格式和最佳实践
- 教导 AI 何时使用
场景:添加天气查询
- 无需插件 — 已有
web_search和web_fetch工具 - 只需安装 Skill
weather- 教 AI 使用 wttr.in API
- 格式化天气输出
总结:插件是"硬实力"(添加功能),技能是"软实力"(指导使用)。