Skills 生态
这一课你将能做到
- 用
openclaw skills搜索、安装、更新、验证 ClawHub 上的技能 - 为团队写一个自定义 Skill(含 SKILL.md 与工具定义)
- 说清楚 Skill 与 MCP、插件三者的分工边界
为什么要学
裸模型只会聊天;给它装上「查日志」「发钉钉」「执行部署脚本」的技能,它才能干活。Skills 是 OpenClaw 的能力扩展单元——ClawHub 上有社区贡献的现成技能,你也可以为团队写专属技能。不会用 Skills,bot 永远停留在「会说话的玩具」阶段。
人话:Skills 之于 OpenClaw,相当于 App 之于手机——没有 App 的手机只能打电话,没有 Skills 的 bot 只能聊天。
先建立图像
ClawHub(技能注册中心)
│
├── openclaw skills search "github" ← 搜索
├── openclaw skills install @owner/slug ← 安装
└── openclaw skills verify @owner/slug ← 验证签名
本地 Skill(团队自研)
└── ~/.openclaw/skills/<name>/
├── SKILL.md ← 技能说明书:名称、描述、何时触发
├── tools.json ← 工具定义:函数名、参数、执行动作
└── scripts/ ← 实际执行的脚本或命令
Agent 运行时
└── 收到消息 → 匹配 Skill → 调用工具 → 返回结果
SKILL.md 是「说明书」,告诉模型这个技能能干什么、什么时候该用;tools.json 是「工具箱」,定义具体可调用的函数。
跟着做
步骤 1:浏览与安装 ClawHub 技能
# 搜索
openclaw skills search "github"
openclaw skills search "calendar" --limit 10
# 安装(ClawHub 格式)
openclaw skills install @owner/github-skill
# 从 Git 安装
openclaw skills install git:owner/repo@main
# 从本地目录安装(团队自研)
openclaw skills install ./skills/deploy-bot --as deploy-bot
步骤 2:查看已安装技能
openclaw skills list
openclaw skills list --json
步骤 3:写一个最小自定义 Skill
创建 ~/.openclaw/skills/standup/:
<!-- SKILL.md -->
# Standup Bot
收集团队成员的日报并汇总发到 Slack。
## 触发条件
- 用户说「开始日报」或「standup」
- 每天早上 9:00 自动触发(配合 cron)
## 工具
- collect_standup: 向指定用户发送日报收集请求
- publish_standup: 汇总并发布到指定 Slack 频道
// tools.json
{
"tools": [
{
"name": "collect_standup",
"description": "向用户发送日报收集请求",
"parameters": {
"type": "object",
"properties": {
"user": { "type": "string" }
}
}
}
]
}
步骤 4:安装并启用
openclaw skills install ~/.openclaw/skills/standup
openclaw gateway restart
步骤 5:验证与更新
openclaw skills verify @owner/github-skill
openclaw skills update @owner/github-skill
openclaw skills update --all
讲清楚要点
- SKILL.md 是模型的「使用说明书」:它告诉模型「这个技能存在、什么时候用、怎么用」。写得好,模型才会在正确时机调用;写得模糊,技能形同虚设。
- tools.json 定义真实可调用的函数:每个工具有 name、description、parameters(JSON Schema),模型按 schema 生成调用参数,Gateway 执行对应动作。
- ClawHub 技能有签名验证:
skills verify检查技能包的完整性和来源,防供应链攻击。团队环境建议开启强制验证。 - Skill 与 MCP 分工:Skill 是 OpenClaw 原生技能,走 Gateway 内部调度;MCP(Model Context Protocol)是行业标准协议,用于对接外部工具服务。简单能力用 Skill,复杂外部集成用 MCP。
- 技能可限定到特定 agent:
skills install --agent <id>只给指定 agent 装技能,评审 bot 和值班 bot 可以各装各的。
你可能会懵的地方
-
Skill 和 Plugin 什么区别? Skill 是「教模型做一件事」的说明书+工具包,轻量;Plugin 是完整的 OpenClaw 插件,可以注册渠道、provider、工具、甚至修改 Gateway 行为,重量级。ClawHub 主要分发 Skill,Plugin 用
openclaw plugins管理。 -
SKILL.md 里写的「触发条件」是硬规则吗? 不是。它是给模型的提示,模型会参考但非强制执行。真正的触发控制靠 AGENTS.md 的规则和工具权限模式。
-
本地 Skill 能被团队共享吗? 能。把 skill 目录入 git,团队成员
git clone后openclaw skills install ./path/to/skill即可。也可以发布到 ClawHub 私有 registry(如果团队有自建)。 -
技能装多了会影响性能吗? 会。每个技能的 SKILL.md 都会注入上下文,技能太多会稀释 prompt、增加 token 消耗。建议按需安装,定期
skills list清理不用的。 -
如何调试一个技能不触发? 先确认
skills list里存在;再确认 Gateway 已重启;然后在对话中明确说「使用 <技能名>」测试;最后看日志openclaw logs --tail 50找工具调用记录。
错法对照
| 错法 | 问题 | 正解 |
|---|---|---|
| SKILL.md 只写名字不写触发条件 | 模型不知道何时该用 | 明确写「当用户说 X 时使用」 |
| tools.json 参数 schema 写错 | 模型生成错误参数,调用失败 | 严格按 JSON Schema 写,required 字段标清 |
| 装一堆技能不清理 | 上下文膨胀、token 浪费 | 按需安装,定期审查 skills list |
| 本地 skill 不入 git | 团队成员无法同步 | skill 目录入版本管理,变更走评审 |
| 从不可信来源装 skill 不验证 | 供应链攻击风险 | skills verify 或只装官方/审计过的 |
卡点急救
- 技能装了但模型不调用:检查 SKILL.md 描述是否清晰;在对话中显式提及技能名;确认技能没有
--agent限定到别的 agent。 - 工具调用报参数错误:看
openclaw logs里的工具调用详情;对照 tools.json 的 schema 检查模型生成的参数;必要时在 SKILL.md 里加示例。 - ClawHub 搜索不到想要的技能:说明社区没有;自己写或去 GitHub 搜
openclaw-skill关键词;用skills install git:owner/repo从 Git 直接装。
面试常问
-
OpenClaw Skill 的组成与工作原理? 一个 Skill 包含 SKILL.md(自然语言说明书,注入模型上下文,告诉模型何时用、怎么用)和 tools.json(JSON Schema 定义的可调用工具)。模型根据 SKILL.md 判断触发时机,按 tools.json 的 schema 生成参数,Gateway 执行对应动作并返回结果。
-
Skill 与 MCP 的边界? Skill 是 OpenClaw 原生轻量扩展,适合「教模型做一件具体事」;MCP 是行业标准协议,适合对接外部复杂服务(数据库、API、内部系统)。选型原则:内部简单能力用 Skill,外部重型集成用 MCP,两者可并存。
-
团队如何管理自定义 Skill 的生命周期? 开发:本地目录编写,入 git;测试:
skills install ./path本地验证;发布:推送到团队共享仓库或 ClawHub 私有 registry;更新:skills update或重新 install;审计:变更走 PR,SKILL.md 描述与实际行为一致性人工抽查。
自测三问
- SKILL.md 和 tools.json 各自的作用是什么?
- 为什么技能装多了会降低 bot 质量?
- Skill 和 Plugin 的核心区别?
小结一句话
Skills 是 bot 的能力插件:ClawHub 找现成的,团队自研写专属的,SKILL.md 写清楚触发条件,模型才会在正确时机调用。
延伸
- Skills 系统文档
- 创建技能指南
- 下一课:Memory 系统——让 bot 记住团队的约定、偏好和历史,越用越聪明。