第 5/7 章

🧩 第5章:Skills 技能体系

本章面向完全不了解 Skill 的入门者编写,目标不是"知道有这个东西",而是读完后能:看懂、安装、使用、编写、测试、发布,并能在企业里真正用起来。

5.1 为什么说 Skills 才是 OpenClaw 的真正战斗力

很多人第一次接触 OpenClaw,会把注意力全放在模型身上:用哪个模型、模型聪不聪明、模型贵不贵。但企业真正落地后你会发现,模型只是"大脑",Skills 才是"手和工具"。没有 Skills,OpenClaw 最多只能做问答和写文本;有了 Skills,OpenClaw 才能发飞书、查数据库、写文件、拉网页、发邮件、跑流程。

组件你可以把它理解成作用
模型大脑理解需求、生成内容、决定下一步
Channel入口飞书、企业微信、Telegram 等消息入口
Skill手和工具真正执行动作:查、写、发、连、调
一句话:模型决定"想什么",Skill 决定"能不能做成"。

5.2 Skill 到底是什么(给零基础读者讲人话)

Skill 不是单纯的"插件",也不是单纯的"一段代码"。更准确地说,Skill 是一组"让 AI 学会如何使用某种能力"的说明与资源集合。它通常至少包含一个 SKILL.md 文件,这个文件会告诉 OpenClaw:

  • 这个 Skill 叫什么;
  • 它适合干什么;
  • 什么时候应该触发;
  • 执行时依赖什么工具或环境变量;
  • 必要时要调用哪些脚本或参考文档。

你可以把 Skill 理解成"岗位 SOP + 工具说明 + 执行入口"的组合。

5.2.1 一个最容易懂的类比

现实世界OpenClaw 里的对应物
岗位说明书SKILL.md
员工会用的办公软件工具 / API / 脚本
做事的步骤和规范Instructions / Trigger / References
员工真正动手干活Skill 被模型调用执行
所以 Skill 不是"装一个东西就完了",而是"让 AI 按你规定的方式去用这个东西"。

5.3 Skills 的三种类型(必须建立分类概念)

常见的Skill 主要可以分为三类。

类型作用典型示例适合谁
工具型(Tool)封装单一能力或 API天气查询、股票查询、数据库查询所有人
流程型(Workflow)完成多步骤任务简历筛选、合同审查、日报生成企业用户、运营、HR
集成型(Integration)连接外部平台飞书机器人、企业微信、Slack、CRMIT、业务系统管理员

对于入门者来说,最容易上手的是工具型和流程型;对于企业部署来说,最有价值的是流程型和集成型。

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,而不影响全局;
  • 这也是团队协作和客户定制很有价值的地方。
一句话: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 字段逐项解释

字段是否必需作用写错会怎样
nameSkill 名称,必须与目录名一致Skill 无法被正确识别
description告诉模型这个 Skill 适合什么场景模型不容易触发它
compatibility说明环境要求不写也能用,但协作时容易踩坑
metadata声明依赖环境、二进制、实验特性复杂 Skill 可能运行失败
allowed-tools声明可预授权的工具安全边界不清晰

5.6.3 新手最容易写错的三个地方

  1. name 不规范:只能小写字母、数字、连字符,且要与目录名一致;
  2. description 太空:只写"很强大的技能"这种废话,模型无法准确触发;
  3. Instructions 不具体:没有清晰步骤,模型不知道到底怎么执行。
Skill 写不好,最常见的结果不是"报错",而是"永远不触发"或"触发了但执行很乱"。

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"
}
总结:这一节的重点不是"天气"本身,而是要知道:一个 Skill 从目录、SKILL.md、脚本、环境变量到测试,完整是怎么走通的。

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 的四条铁规

  1. 生产环境禁止随手装第三方 Skill;
  2. 所有新 Skill 先在测试环境试跑;
  3. 高权限 Skill 必须过管理员审核;
  4. 关键 Skill 源码必须可审计。

5.16.3 基本安全扫描建议

secureclaw scan ~/.openclaw/skills/
如果你是企业管理员,绝不能让员工随意从市场里装十几个 Skill 然后直接跑在生产环境上。

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 的人,也应该先学会:看懂、安装、触发、测试
👉 用好OpenClaw不只是"会用 Skill",而是"会设计可复用 Skill"
👉 企业级 Skill 必须同时满足:可触发、可复用、可测试、可审计、可发布