🧩 第5章:Skills 技能体系
本章面向完全不了解 Skill 的入门者编写,目标不是"知道有这个东西",而是读完后能:看懂、安装、使用、编写、测试、发布,并能在企业里真正用起来。
5.1 为什么说 Skills 才是 OpenClaw 的真正战斗力
很多人第一次接触 OpenClaw,会把注意力全放在模型身上:用哪个模型、模型聪不聪明、模型贵不贵。但企业真正落地后你会发现,模型只是"大脑",Skills 才是"手和工具"。没有 Skills,OpenClaw 最多只能做问答和写文本;有了 Skills,OpenClaw 才能发飞书、查数据库、写文件、拉网页、发邮件、跑流程。
| 组件 | 你可以把它理解成 | 作用 |
|---|---|---|
| 模型 | 大脑 | 理解需求、生成内容、决定下一步 |
| Channel | 入口 | 飞书、企业微信、Telegram 等消息入口 |
| Skill | 手和工具 | 真正执行动作:查、写、发、连、调 |
5.2 Skill 到底是什么(给零基础读者讲人话)
Skill 不是单纯的"插件",也不是单纯的"一段代码"。更准确地说,Skill 是一组"让 AI 学会如何使用某种能力"的说明与资源集合。它通常至少包含一个 SKILL.md 文件,这个文件会告诉 OpenClaw:
- 这个 Skill 叫什么;
- 它适合干什么;
- 什么时候应该触发;
- 执行时依赖什么工具或环境变量;
- 必要时要调用哪些脚本或参考文档。
你可以把 Skill 理解成"岗位 SOP + 工具说明 + 执行入口"的组合。
5.2.1 一个最容易懂的类比
| 现实世界 | OpenClaw 里的对应物 |
|---|---|
| 岗位说明书 | SKILL.md |
| 员工会用的办公软件 | 工具 / API / 脚本 |
| 做事的步骤和规范 | Instructions / Trigger / References |
| 员工真正动手干活 | Skill 被模型调用执行 |
5.3 Skills 的三种类型(必须建立分类概念)
常见的Skill 主要可以分为三类。
| 类型 | 作用 | 典型示例 | 适合谁 |
|---|---|---|---|
| 工具型(Tool) | 封装单一能力或 API | 天气查询、股票查询、数据库查询 | 所有人 |
| 流程型(Workflow) | 完成多步骤任务 | 简历筛选、合同审查、日报生成 | 企业用户、运营、HR |
| 集成型(Integration) | 连接外部平台 | 飞书机器人、企业微信、Slack、CRM | IT、业务系统管理员 |
对于入门者来说,最容易上手的是工具型和流程型;对于企业部署来说,最有价值的是流程型和集成型。
5.4 Skills 的工作原理(真正理解,后面才能自己写)
很多人知道"Skill 很重要",但不知道它到底是怎么被 OpenClaw 用起来的。讲清楚这个过程,后面你才知道为什么有的 Skill 会触发,有的不会触发。
5.4.1 OpenClaw 加载 Skill 的基本过程
OpenClaw 启动 / 收到消息
↓
扫描技能目录
↓
读取每个 Skill 的 SKILL.md 元数据
↓
把可用 Skill 的简要信息注入系统上下文
↓
模型判断当前任务是否适合调用某个 Skill
↓
如果触发,则加载完整 Skill 内容并执行
5.4.2 三层优先级(很重要)
| 优先级 | 目录位置 | 作用 |
|---|---|---|
| 最高 | <workspace>/skills/ | 项目级 Skill,只对当前项目生效 |
| 中等 | ~/.openclaw/skills/ | 用户级 Skill,全局可用 |
| 最低 | bundled skills | 内置 Skill,开箱即用 |
这意味着:
- 如果同名 Skill 同时存在于多个层级,高优先级会覆盖低优先级;
- 企业可以在项目级别"重写"一个内置 Skill,而不影响全局;
- 这也是团队协作和客户定制很有价值的地方。
5.5 一个 Skill 最少要长什么样
对新手来说,这一节非常关键:你会发现 Skill 其实没有想象中那么复杂。一个 Skill 最少可以只包含一个目录和一个 SKILL.md 文件。
my-skill/
└── SKILL.md
更完整一点时,可以长这样:
my-skill/
├── SKILL.md
├── scripts/
│ └── helper.py
├── references/
│ └── guide.md
├── assets/
│ └── template.md
└── README.md
5.5.1 为什么 SKILL.md 是唯一必需文件
因为 OpenClaw 采用的是 AgentSkills 风格规范:先用说明驱动,再按需加载资源。SKILL.md 是模型理解这个 Skill 的入口。没有它,系统就不知道这个 Skill 是干什么的、什么时候该触发、需要什么前置条件。
5.6 SKILL.md 该怎么写
学完这一节,你就会自己写一个skill了。
5.6.1 一个基础模板
---
name: daily-report-skill
description: 生成结构化日报,并支持发送到飞书或保存到文件
compatibility: openclaw >= 2026.3
metadata: {"openclaw": {"requires": {"bins": ["python3"]}}}
allowed-tools: file_write feishu_send memory_search
---
# 日报生成技能
## 功能
- 整理员工输入的今日工作内容
- 输出固定格式的日报
- 可发送到飞书
- 可保存到本地目录
## 触发方式
当用户说"生成日报""写今天工作总结""发日报"时触发
## 执行步骤
1. 读取用户输入内容
2. 提取今日完成、问题与风险、明日计划
3. 生成结构化输出
4. 若配置了 FEISHU_WEBHOOK,则发送消息
5. 同时保存到 REPORT_DIR
## 环境变量
- FEISHU_WEBHOOK
- REPORT_DIR
5.6.2 字段逐项解释
| 字段 | 是否必需 | 作用 | 写错会怎样 |
|---|---|---|---|
| name | 是 | Skill 名称,必须与目录名一致 | Skill 无法被正确识别 |
| description | 是 | 告诉模型这个 Skill 适合什么场景 | 模型不容易触发它 |
| compatibility | 否 | 说明环境要求 | 不写也能用,但协作时容易踩坑 |
| metadata | 否 | 声明依赖环境、二进制、实验特性 | 复杂 Skill 可能运行失败 |
| allowed-tools | 否 | 声明可预授权的工具 | 安全边界不清晰 |
5.6.3 新手最容易写错的三个地方
- name 不规范:只能小写字母、数字、连字符,且要与目录名一致;
- description 太空:只写"很强大的技能"这种废话,模型无法准确触发;
- Instructions 不具体:没有清晰步骤,模型不知道到底怎么执行。
5.7 常用 Skill 是什么、怎么装、怎么用
5.7.1 Top 10 个 常用 Skills 一览
| 技能名 | 主要用途 | 适合谁 | 安装方式示例 |
|---|---|---|---|
| Gmail / Google | 邮件收发、日历、文档操作 | 老板、助理、销售 | openclaw skills install gmail |
| Agent Browser | 网页登录、表单填写、截图 | 运营、客服、测试 | openclaw skills search "browser" |
| Summarize | 网页、视频、邮件自动摘要 | 管理层、研究岗 | openclaw skills search "summarize" |
| GitHub | 仓库、Issue、PR 操作 | 研发团队 | openclaw skills install github |
| Claude Code | 桥接专业编程能力 | 技术团队 | openclaw skills search "claude code" |
| Web Search | 联网搜索实时信息 | 市场、研究、内容团队 | openclaw skills install web-search |
| File Manager | 本地文件读写、移动、重命名 | 全员 | openclaw skills install file-manager |
| Calendar | 查看和管理日程 | 老板、助理、行政 | openclaw skills search "calendar" |
| Translator | 多语言翻译和改写 | 跨境、电商、销售 | openclaw skills install translator |
| Image Gen | 生图、海报草图、配图 | 市场、设计、内容团队 | openclaw skills search "image gen" |
5.7.2 安装、搜索、查看、卸载的四条基本命令
# 安装 Skill
openclaw skills install <skill-name>
# 搜索 Skill
openclaw skills search "browser automation"
# 查看已安装 Skills
openclaw skills list
# 卸载 Skill
openclaw skills uninstall <skill-name>
5.7.3 新手怎么判断一个 Skill 值不值得装
- 先看描述是否具体;
- 再看是否需要额外 API Key;
- 再看是否涉及本地命令执行、浏览器附着、文件写入等高权限能力;
- 最后一定要先在测试环境试装。
5.8 真实案例 1:日报生成 Skill(从安装到使用)
这是最适合入门的第一个 Skill 场景,因为几乎所有企业都能理解、都能看到价值。
5.8.1 目标
员工只输入零散工作内容,OpenClaw 自动整理成日报,必要时发到飞书并归档。
5.8.2 用户输入
今天跟进了 3 个客户,改了首页,参加了项目评审,明天继续推进报价。
5.8.3 期望输出
【今日完成】
1. 跟进 3 个客户
2. 优化首页内容
3. 参加项目评审会
【问题与风险】
- 报价尚未确认
【明日计划】
- 推进报价确认
- 完成首页第二版优化
5.8.4 Skill 文件示例
---
name: daily-report-skill
description: 生成结构化日报,并可发送到飞书或保存到本地文件
allowed-tools: file_write memory_search
---
# 企业日报生成器
## 适用场景
- 员工日报
- 周报草稿
- 项目进展同步
## 触发方式
当用户提到"日报""工作总结""今日完成""发日报"等关键词时触发
## 执行步骤
1. 从用户输入中提取今天做了什么
2. 将内容分类为:今日完成、问题与风险、明日计划
3. 若信息不完整,则主动追问
4. 按固定模板输出
5. 若配置了 FEISHU_WEBHOOK,则发送到飞书
6. 同时保存到 REPORT_DIR
## 环境变量
- FEISHU_WEBHOOK
- REPORT_DIR
5.8.5 练习
- 大家练习一下做这个skill;
- 体验一下安装使用方法;
- 也可以从日报进一步扩展到周报、会议纪要、项目汇总。
5.9 真实案例 2:客服自动回复 Skill
5.9.1 场景
- 客户问物流、库存、退款、价格;
- 标准问题自动回复;
- 复杂问题转人工。
5.9.2 Skill 示例
---
name: customer-support-skill
description: 根据客户咨询类型自动生成客服回复,复杂问题转人工
allowed-tools: memory_search send_message
---
# 客服自动回复技能
## 触发条件
当用户输入包含"物流""发货""退款""有没有货""价格"等关键词时触发
## 执行逻辑
1. 判断问题类型
2. 读取 FAQ 或固定话术
3. 生成礼貌、简洁的回复
4. 若遇到投诉、大额退款或连续负面情绪,则提示转人工
## 输出要求
- 回复不超过 120 字
- 风格:礼貌、专业、明确
- 不要承诺无法保证的结果
5.10 真实案例 3:会议纪要 Skill
---
name: meeting-minutes-skill
description: 将原始会议记录整理成结构化会议纪要
allowed-tools: file_write
---
# 会议纪要生成器
## 目标
把原始会议记录整理成可执行的会议纪要
## 输出格式
- 会议主题
- 核心结论
- 待办事项
- 负责人
- 截止时间
## 触发方式
当用户说"整理会议纪要""生成会议总结""把这段话做成纪要"时触发
5.11 完整编写示例:从零写一个"天气查询 Skill"
你特别要求要有"完整编写示例以及完整代码",这一节我就做一个真正完整、适合入门者照着写的 Skill。之所以选天气查询,是因为它逻辑简单、容易验证、又能体现 Skill 的完整结构。
5.11.1 目录结构
weather-query/
├── SKILL.md
└── scripts/
└── weather_query.py
5.11.2 SKILL.md 完整代码
---
name: weather-query
description: 查询指定城市当前天气,返回温度、天气状况、湿度和风力信息
compatibility: python3 requests
metadata: {"openclaw": {"requires": {"bins": ["python3"]}}}
allowed-tools: bash
---
# 天气查询技能
## 适用场景
- 员工问"今天北京天气怎么样?"
- 老板想做早报,自动插入天气
- 运营同学出差前快速查天气
## 触发方式
当用户提到"天气""气温""下雨吗""某城市天气如何"时触发
## 执行方式
使用 scripts/weather_query.py 脚本查询天气接口。
## 参数说明
- city: 城市名称,例如 Beijing、Shanghai、Singapore
- unit: 可选,celsius 或 fahrenheit,默认 celsius
## 环境变量
- WEATHER_API_KEY
## 调用方法
运行:
python3 scripts/weather_query.py "Beijing" "celsius"
## 输出要求
输出 JSON,字段包括:
- city
- temperature
- condition
- humidity
- wind
5.11.3 Python 脚本完整代码(weather_query.py)
import json
import os
import sys
import requests
API_URL = "https://api.weatherapi.com/v1/current.json"
def get_current_weather(city: str, unit: str = "celsius"):
api_key = os.getenv("WEATHER_API_KEY")
if not api_key:
raise ValueError("缺少 WEATHER_API_KEY,请先在环境变量中配置")
params = {
"key": api_key,
"q": city,
"aqi": "no"
}
response = requests.get(API_URL, params=params, timeout=20)
if response.status_code == 401:
raise ValueError("天气 API 密钥无效,请检查 WEATHER_API_KEY")
if response.status_code == 400:
raise ValueError(f"城市名称无法识别: {city}")
response.raise_for_status()
data = response.json()
current = data["current"]
location = data["location"]
temp = current["temp_c"] if unit == "celsius" else current["temp_f"]
symbol = "°C" if unit == "celsius" else "°F"
return {
"city": f"{location['country']} {location['name']}",
"temperature": f"{temp}{symbol}",
"condition": current["condition"]["text"],
"humidity": f"{current['humidity']}%",
"wind": f"{current['wind_kph']} km/h {current['wind_dir']}"
}
if __name__ == "__main__":
city = sys.argv[1] if len(sys.argv) > 1 else "Beijing"
unit = sys.argv[2] if len(sys.argv) > 2 else "celsius"
result = get_current_weather(city, unit)
print(json.dumps(result, ensure_ascii=False, indent=2))
5.11.4 如何安装依赖
pip install requests
5.11.5 如何设置环境变量
export WEATHER_API_KEY=你的天气API密钥
5.11.6 如何测试脚本
python3 scripts/weather_query.py "Beijing" "celsius"
5.11.7 正常输出示例
{
"city": "China Beijing",
"temperature": "24°C",
"condition": "Partly cloudy",
"humidity": "42%",
"wind": "13 km/h NE"
}
5.12 再进一步:如何测试一个 Skill
企业里绝对不能"写完就上"。Skill 一定要测试,尤其是会写文件、发消息、查数据库的 Skill。
5.12.1 最低限度要测什么
- 正常输入是否能得到正确结果;
- 错误输入是否能正确报错;
- 缺少环境变量时是否有明确提示;
- 依赖服务不可用时是否能优雅失败。
5.12.2 一个最简单的测试思路
# 正常情况
python3 scripts/weather_query.py "Beijing"
# 错误情况:空城市
python3 scripts/weather_query.py ""
# 错误情况:错误的 API Key
export WEATHER_API_KEY=wrong_key
python3 scripts/weather_query.py "Beijing"
5.13 如何把自己写的 Skill 用起来
很多人以为"写完 Skill 就结束了",其实真正关键的是:你怎么把它放到正确目录,让 OpenClaw 发现它,并且在对话中触发它。
5.13.1 放到项目级目录(推荐)
your-project/
├── skills/
│ └── weather-query/
│ ├── SKILL.md
│ └── scripts/weather_query.py
这种方式最适合:
- 给某个客户做定制;
- 给某个项目单独加能力;
- 团队协作时一并放进 Git 仓库。
5.13.2 放到用户级目录
~/.openclaw/skills/weather-query/
这种方式更适合个人长期使用。
5.13.3 触发方式
当 Skill 被放到正确目录后,OpenClaw 启动或收到消息时会扫描它。你就可以在对话里问:
北京今天什么天气?
今天上海下雨吗?
帮我查一下新加坡现在温度
5.14 如何发布到 ClawHub
你设计好的Skill,也可以发布到OpenClaw的官方市场上,具体发布方法如下:
5.14.1 发布前准备
- 确保 SKILL.md 格式正确;
- 至少准备一个 README.md,说明功能、适用人群、安装方式、示例输出;
- 不要把 API Key 等敏感信息写进仓库;
- 先本地测试通过。
5.14.2 登录与注册开发者
openclaw login
openclaw developer register --name "你的名字" --email "you@example.com" --country "CN"
5.14.3 发布命令
openclaw clawhub login
openclaw clawhub publish ./weather-query
5.14.4 发布后别人怎么安装
openclaw skills install weather-query
5.14.5 README 里应该写什么
| 内容 | 为什么必须写 |
|---|---|
| 功能介绍 | 用户第一眼决定要不要装 |
| 适用人群 | 让用户知道这个 Skill 是给谁用的 |
| 安装方法 | 降低使用门槛 |
| 环境变量说明 | 避免用户装了却用不了 |
| 示例输出 | 帮助用户形成预期 |
| 常见问题 | 减少售后问题 |
5.15 Skill 如何真正应用到企业场景
很多 Skill 写出来以后,只停留在"演示"。企业真正关心的是:这个 Skill 能不能用在流程里,而不是只在对话里好看。
5.15.1 Skill 进入企业的三种方式
| 方式 | 适合场景 | 说明 |
|---|---|---|
| 个人助手型 | 老板、助理、销售个人使用 | 例如写日报、查日程、发消息 |
| 团队流程型 | 部门协作 | 例如会议纪要、日报归档、客服回复 |
| 系统集成型 | 企业级自动化 | 例如 CRM、ERP、知识库、审批流接入 |
5.15.2 一个完整企业例子:日报 Skill 的落地
员工在飞书里发消息
↓
OpenClaw 调用 daily-report-skill
↓
生成标准日报
↓
写入 ~/reports/2026-03-23-daily.md
↓
发送到飞书群
↓
晚上定时汇总为团队周报
这就是 Skill 从"一个能力"变成"一个流程节点"的过程。
5.16 Skills 安全
我们日常使用,一定要注意Skill的安全问题,据统计,ClawHub上面有20%的Skill有安全问题,其他第三方市场里可能更加严重,一度存在大量恶意 Skill。因此:Skill 不是越多越好,而是越可控越好。
5.16.1 为什么 Skill 有安全风险
- Skill 可能调用本地脚本;
- Skill 可能读写文件;
- Skill 可能引导安装"helper agent"或外部依赖;
- Skill 可能接触到 SOUL.md、MEMORY.md 等关键持久文件。
5.16.2 企业安装 Skill 的四条铁规
- 生产环境禁止随手装第三方 Skill;
- 所有新 Skill 先在测试环境试跑;
- 高权限 Skill 必须过管理员审核;
- 关键 Skill 源码必须可审计。
5.16.3 基本安全扫描建议
secureclaw scan ~/.openclaw/skills/
5.17 给企业的 Skill 管理建议
5.17.1 推荐目录设计
/company-skills/
├── common/
├── hr/
├── sales/
├── customer-support/
└── operations/
5.17.2 推荐治理方式
- 公司统一维护一个 Skills 仓库;
- 所有正式 Skill 走版本管理;
- 发布前必须测试;
- 按部门组织 Skill,而不是按个人乱建。
5.18 本章最重要的结论
👉 完全不了解 Skill 的人,也应该先学会:看懂、安装、触发、测试
👉 用好OpenClaw不只是"会用 Skill",而是"会设计可复用 Skill"
👉 企业级 Skill 必须同时满足:可触发、可复用、可测试、可审计、可发布