第4章 Skill插件开发:从入门到岗位实战
本章前置检查:
□ OpenClaw已成功运行,能通过CLI或Web UI收发基础消息
□ 理解Agent的基本概念(第1章)
□ 掌握AGENTS.md的基本写法(第3.1节)
□ 有一份想测试的API密钥(如天气API、新闻API等,可选)
本章预估总时长:10小时
本章难点提示:
- 4.2节(SKILL.md结构)和4.3节(Skill目录结构)是基础,建议先通读再动手,不要一上来就复制粘贴。
- 4.4节(从社区获取Skill)中的ClawHub安装命令可能会因为网络访问慢而失败,遇到时优先使用国内镜像或GitHub手动安装。
- 4.5节(社区Skill安全审查清单)中的审查流程不是“做完一次就永远安全”,建议养成每次安装新Skill都走一遍的习惯。
- 4.6节(深度解析)的三个案例代表了Skill的三种典型形态,可以先看第一个案例建立框架,后面的属于进阶内容。
🎯 本章教学目标:理解Skill的本质与价值,掌握SKILL.md的标准结构和编写规范,能够从ClawHub/GitHub安全地获取和安装社区Skill并集成到自己的Agent中,独立开发一个可运行的自定义Skill(含SKILL.md+scripts),掌握社区Skill的安全审查方法,理解Skill与Hook/Plugin的职责边界。
![图片[1]-OpenClaw Skill ≠ Plugin:一套带新手从安装到开发的完整教程](http://www.ifisme.cn/wp-content/uploads/2026/04/教材0401-1.png)
4.1 Skill是什么
预计时长:1小时
从运行结果到能力说明
关于Skill有一个普遍的误解:很多人觉得Skill就是后台插件,需要编程、需要懂API,开发门槛很高。
事实恰恰相反。
OpenClaw的Skill,本质上是写给AI看的操作说明书。你告诉AI“遇到什么情况时,按什么步骤,调用什么工具,输出什么格式”——剩下的,AI自己会执行。会写Markdown就能开发Skill,不需要编程基础,不需要懂API,10分钟就能做出一个可运行、可复用、可分享的技能包-2。
或者换一个更好理解的比喻:Skill就是给AI的“操作手册” 。你不需要教AI怎么写代码,你只需要告诉它“这个任务该怎么做”,它自己会调用工具去完成。
Skill的本质定位:Skill不是代码实现,而是告诉Agent如何使用能力的规则集合,相当于AI的操作手册与工作流定义。它的核心作用是定义能力边界、使用条件、调用步骤和优先级规则。
龙马注:很多人刚开始会把Skill和Plugin搞混,这两个东西确实容易弄混。简单粗暴地区分就是:Skill是对AI说“你该这么做”,Plugin是对系统说“我多了这个能力”。Skill教行为,Plugin加功能。第19章技术选型里会详细对比。
从运行表现来看更直观:你刚部署好的OpenClaw像一个会聊天的AI,能回答问题,但不会真的帮你做事。给它装上Weather Skill,它就能查天气;装上PDF Skill,它就能分析文档;装上Web Search Skill,它就能联网搜索。
为什么要分三层:Skill、Hook、Plugin
在进入具体开发之前,有必要先理清OpenClaw的三层扩展体系,这能帮你做出正确的技术选型。从上层到下层依次为:Skill(策略层)→ Hook(拦截层)→ Plugin(系统层),每层各司其职、互不越界。
它们的核心区别在于:
| 扩展类型 | 核心作用 | 本质 | 适合场景 |
|---|---|---|---|
| Skill | 定义能力边界、使用条件、调用步骤和优先级规则 | 纯策略层,教Agent如何做事 | 组织现有工具、规范Agent行为、设定任务执行逻辑 |
| Hook | 拦截/修改prompt、监听事件、调整运行参数、补充上下文 | 流程控制层,基于事件触发,不注册新功能 | 在模型调用前注入规则、在工具执行前后做校验、修改系统提示词 |
| Plugin | 注册tool、HTTP路由、CLI命令、后台服务、RPC方法、模型Provider | 能力注册层,唯一能真正扩展系统表面的模块 | 新增原生不支持的能力、对接外部系统、修改内核行为、提供全局服务 |
在实际开发中,极少数场景需要写Plugin,少数场景需要写Hook,而绝大多数扩展需求,用Skill就够了——因为Skill不修改系统内核,不注册新服务,只教Agent如何更聪明地使用已有工具。
四个核心认知
理解了Skill在三层体系中的位置之后,再深入四个核心认知,你会发现Skill远比你想象的强大。
一、Skill不是插件,是“能力说明书”
Skill是OpenClaw的扩展机制,每个Skill都是一个独立的功能模块,本质是封装特定能力的规则集合。与传统的功能插件不同,Skill的核心价值在于:
- 功能拓展:突破基础对话局限,解锁文件处理、联网搜索、自动化操作等复杂能力
- 即装即用:内置技能开箱即用,社区技能一键安装,无需复杂开发
- 灵活定制:支持自定义开发,适配个性化场景
- 组合联动:多个技能可串联执行,实现复杂任务自动化(如“抓取网页→提取数据→生成报表”)
简单说,OpenClaw是“智能大脑”,Skills是“灵活手脚”——没有Skills,AI只能“纸上谈兵”;装上技能,才能真正落地执行任务。
二、Skill被设计为“与平台无关的标准化模块”
OpenClaw 使用与 AgentSkills 兼容的技能文件夹。OpenClaw 加载内置 Skills 以及可选的本地覆盖,并在加载时根据环境、配置和二进制文件的存在情况进行筛选-35。
这带来一个巨大的好处:遵循 AgentSkills 规范开发的 Skill,可以在 OpenClaw、Claude Code、Claude.ai 等不同平台上通用,一次开发,多处运行,无需重复投入-6。
三、Skill分为三大类型
在实际使用中,Skill的来源和稳定级别各不相同:
- 内置技能:OpenClaw 默认集成,无需安装,稳定可靠(如 weather、pdf、xlsx、weather、github 等)
- 社区技能:ClawHub 市场或 GitHub 上的开源技能,可一键安装
- 自定义技能:用户根据自身需求开发的专属技能,灵活适配个性化场景-40
内置技能的数量和质量取决于你安装的 OpenClaw 版本。日常使用中,社区技能是最主要的扩展来源。
四、Skill的加载遵循优先级规则
OpenClaw 从多个位置加载 Skills,优先级从高到低为(较高优先级会覆盖较低优先级中的同名 Skill):
| 优先级 | 位置 | 说明 |
|---|---|---|
| 最高 | <workspace>/skills/ | 每个 Agent 的工作区专属 Skills |
| 高 | <workspace>/.agents/skills/ | 项目级 Agent Skills |
| 中 | ~/.agents/skills/ | 个人 Agent Skills(跨工作区) |
| 中 | ~/.openclaw/skills/ | 托管/本地共享 Skills(所有 Agent 可见) |
| 低 | 内置 Skills | 随 OpenClaw 安装包提供 |
| 最低 | skills.load.extraDirs | 通过配置额外添加的共享文件夹 |
在多智能体设置中,每个 Agent 有自己的工作区,这意味着每个 Agent 独有的 Skills 仅存在于该 Agent 的 <workspace>/skills 中,供该 Agent 专用;共享 Skills 位于 ~/.openclaw/skills,同一台机器上的所有 Agent 都可见-35。
龙马注:这个优先级在多人协作或复杂配置时非常有用。比如你有一个通用的“天气查询”Skill 放在共享目录
~/.openclaw/skills,所有 Agent 都能用。但如果你在某个工作区的/<workspace>/skills里放了一个同名但定制过的版本,OpenClaw 会用工作区版本。这让你可以在保持全局 Skill 库的同时,针对特定场景做定制化修改。
Skills 类型一览
OpenClaw 的内置 Skills 覆盖了多个常用领域,了解这些有助于你快速上手,也为你开发自定义 Skill 提供了参考方向:
- 核心工具型:
exec、browser、cron、canvas - 内容处理型:
pdf、xlsx、md、html-parse - 信息检索型:
web-search、web-fetch、rss - 开发辅助型:
github、git、docker(调试模式) - 自动化型:
slack、discord、message、sessions
龙马注:每次我问一个 Skill 推荐指南,社区里都会有人甩出几百个列表。我个人的体验是:先从 5 个最常用的开始就够了——web-search、github、cron、canvas、pdf。等把这 5 个用熟了,你对 Skill 的感觉就对了。
✏️ 即时自测:Skill 和 Plugin 的核心区别是什么?Skill 有哪几种类型?
🛠️ 实践任务(本节):查看你本地安装的 OpenClaw 内置了哪些 Skills——运行 openclaw skills list --builtin,记录输出。然后思考:其中哪个 Skill 是你最想先用的?
💭 本节总结(不看书写 3 行):
1.
2.
3.
📊 用时记录:计划____min → 实际____min → 偏差原因:________
✏️ 自测答案:Skill 教 Agent 如何使用能力(纯策略层,类似操作手册),Plugin 向系统注册新能力(系统层,可包含 Skill/Hook/Tool/Service)。Skill 分为三种类型:内置技能(随 OpenClaw 安装,开箱即用)、社区技能(从 ClawHub/GitHub 获取,需手动安装)、自定义技能(用户自己开发)。
4.2 SKILL.md 的标准结构与渐进式披露
预计时长:1.5小时
SKILL.md 的核心组成部分
SKILL.md 是 Skill 的灵魂文件——OpenClaw 在加载 Skill 时,首先要读的就是它。一个完整的 SKILL.md 需要包含以下五个核心部分:
| 组成部分 | 作用 | 示例 |
|---|---|---|
| 描述信息 | 概述 Skill 的功能和用途,让 Agent 知道“我有什么” | description: 一个自定义的技能,可以帮助用户快速生成日常工作总结 |
| 触发器 | 定义用户输入中的哪些关键词会激活该 Skill | 当用户提到“工作总结”、“日报”时激活 |
| 使用说明 | 详细指导 Agent 按什么步骤执行任务 | 1. 收集工作事项 → 2. 分类整理 → 3. 生成日报 → 4. 保存文件 |
| 环境变量 | 列出 Skill 可能需要的配置参数 | REPORTS_DIR: 日报存储目录(默认 ~/reports) |
| 所需工具 | 明确列出运行该 Skill 需要调用哪些工具 | file_write、memory_search |
渐进式披露:三层加载让 Skill 更聪明
除了上述五个核心部分,Skill 的智能加载策略也是核心设计之一。Skill 的内容按渐进式披露原则分三层加载:
第一层(YAML frontmatter) :每次都加载,仅包含技能用途 + 触发条件。这一步信息量极少但至关重要,Agent 用它快速判断该 Skill 是否与当前任务匹配。
第二层(SKILL.md 正文) :当任务匹配时加载,包含完整的工作流程指令。这也是你花最多时间撰写的部分。
第三层(链接文件) :按需加载,存放参考文档、脚本、模板等补充资源。这一层的文件通常体积较大,不是每次都需要,所以设计成“用到时才加载”,大大节省上下文 Token。
龙马注:我记得自己第一次理解“渐进式披露”时,脑子里想的是“这不就是可折叠的 Markdown 吗?”——没错,差不多的设计思路。Agent 先在目录页看 Skill 简介,觉得有用再点进详情页看具体步骤,需要时才打开附件。这让 Skill 可以在内容丰富的同时,保持极低的上下文消耗。很多新手上来就在 SKILL.md 正文里塞上万字,结果每个会话都把那篇长文档读一遍,Token 成本直接翻倍。
一个简单但完整的示例
下面是一个简单的“问候语”Skill,展示 SKILL.md 的基本写法。当你向 Agent 问好时,用 echo 工具回复。
创建目录 ~/.openclaw/workspace/skills/hello_world/,下面的 SKILL.md 放在这个目录中:
markdown
--- name: hello_world description: A simple skill that says hello. When the user asks for a greeting, use the `echo` tool to say "Hello from your custom skill!" --- # Hello World Skill ## 触发器 - 用户问候语(你好、hi、hello、greeting) ## 任务 执行一个简单的问候操作。 ## 要求 - 使用 `echo` 工具 - 回复内容统一为:"Hello from my custom skill!" ## 工具说明 - `echo`: 在回复中返回指定的字符串内容
元数据参考
SKILL.md 的 YAML frontmatter 支持以下字段:
| 字段 | 必需 | 说明 |
|---|---|---|
name | 是 | 唯一标识符,使用 snake_case 格式 |
description | 是 | 向 Agent 展示的行描述 |
version | 否 | 版本号 |
author | 否 | 作者信息 |
tags | 否 | 标签列表,便于分类和搜索 |
metadata.openclaw.os | 否 | 操作系统过滤器,如 ["darwin"](macOS)、["linux"] |
metadata.openclaw.requires.bins | 否 | PATH 上必须存在的二进制文件 |
metadata.openclaw.requires.config | 否 | 必需的配置键-3 |
⚠️ 常见误区:
- 把 SKILL.md 写成了技术文档而非操作指令——Agent 要的不是“这是什么原理”,而是“遇到 X 时,先用工具 A,再用工具 B”。描述中建议使用“when X, do Y, using Z”的格式,Agent 容易解析。
- 忘写触发条件导致 Skill 永远不会被调用——触发条件可以写在 Markdown 正文的“触发器”小节中。
- 在 SKILL.md 正文中塞入大量代码——这些应该放在
scripts/或references/目录中,正文只需告诉 Agent“有需要时去执行那个脚本”。 - 忽略渐进式披露——把运行指令和背景资料全塞进 SKILL.md,Agent 每次加载都消耗大量 Token。
✏️ 即时自测:SKILL.md 中必须包含哪五个部分?渐进式披露的三层分别是什么?
🛠️ 实践任务(本节):按照示例创建你的第一个 Skill 目录和 SKILL.md。然后运行 openclaw skills list 确认它是否出现在列表中。
💭 本节总结(不看书写 3 行):
1.
2.
3.
📊 用时记录:计划____min → 实际____min → 偏差原因:________
✏️ 自测答案:五个部分:描述信息、触发器、使用说明、环境变量、所需工具。三层分别是:YAML frontmatter(每次都加载)、SKILL.md 正文(任务匹配时加载)、链接文件(按需加载)。
4.3 自定义 Skill 开发实战:从目录结构到脚本集成
预计时长:1小时
Skill 的目录结构
一个完整的自定义 Skill 可能包含多个文件,标准的目录结构如下:
plaintext复制下载
my-custom-skill/ ├── SKILL.md # 技能定义文件(核心,必须有) ├── references/ # 参考文档(可选,按需加载) │ ├── api_doc.md # API 使用说明 │ └── examples.md # 使用示例 ├── assets/ # 静态资源(可选) │ ├── template.html # 页面模板 │ └── config.json # 默认配置 ├── scripts/ # 可执行脚本(可选) │ ├── query_api.py # Python 脚本 │ └── process_data.sh # Shell 脚本 └── package.json # 依赖配置(仅当有第三方依赖时需要)
在 scripts/ 目录中,你可以放置 Python、Shell、Node.js 等脚本,Agent 在需要时会调用它们。对于需要对接外部 API 的 Skill(如天气查询、新闻抓取),这是最实用的搭配。
龙马注:很多新手上来就往 SKILL.md 里堆代码,AI 看得云里雾里。实际正确的做法是:SKILL.md 里写“这是一个查询天气的脚本,你带参数去执行它就好”,然后在 scripts/里放真正的脚本。这样 AI 理解的是任务逻辑,永远不用关心代码实现细节。
开发 Skill 的核心原则
在编写 SKILL.md 和执行脚本时,遵循以下原则可以让你的 Skill 更稳定、更易维护:
- 标准化输入输出:参数和返回值结构尽可能建议保持统一格式,方便 Agent 理解结果
- 最小权限原则:不做超出 Skill 职责范围的操作
- 异常处理完备:必须捕获执行中的错误,返回清晰的错误信息,避免 Agent 在遇到问题时“卡住”
- 无状态设计:Skill 本身不保存用户数据,所有上下文由 Agent 传递
开发流程完整示例:从零搭建“新闻摘要”Skill
下面通过一个完整的“新闻摘要”Skill 开发流程,带你从零开始走一遍。这个 Skill 的功能是:Agent 从新闻 API 获取今日热点新闻,提取摘要后返回结构化结果。
步骤1:创建 Skill 目录
bash
mkdir -p ~/.openclaw/workspace/skills/news_summarizer/{scripts,references}
cd ~/.openclaw/workspace/skills/news_summarizer
步骤2:编写获取新闻的 Python 脚本
在 scripts/fetch_news.py 中写入:
python
#!/usr/bin/env python3
import requests
import json
import sys
def fetch_news():
# 这里使用一个免费的公开新闻 API 示例
url = "https://api.example-news.com/top-headlines"
try:
response = requests.get(url, timeout=10)
data = response.json()
# 提取新闻标题和摘要
headlines = []
for article in data.get('articles', [])[:5]:
headlines.append({
'title': article.get('title'),
'summary': article.get('description', '无摘要')
})
print(json.dumps({'success': True, 'data': headlines}))
except Exception as e:
print(json.dumps({'success': False, 'error': str(e)}))
if __name__ == '__main__':
fetch_news()
步骤3:编写 SKILL.md
在同一目录下创建 SKILL.md:
markdown
---
name: news_summarizer
description: 获取今日热点新闻摘要,返回结构化的新闻列表
version: 0.1.0
author: your-name
tags: [news, summary, api]
---
# 新闻摘要 Skill
## 触发器
- 用户询问:今日新闻、热点新闻、新闻摘要、今日头条
## 环境变量
- `NEWS_API_KEY` :可选,用于调用新闻 API(如有需要)
## 所需工具
- `exec`:执行 Python 脚本
## 使用说明
当用户询问新闻时,执行以下工作流:
1. 检测 `scripts/fetch_news.py` 脚本是否存在
2. 使用 `exec` 工具运行该脚本:
exec(command="python3 scripts/fetch_news.py")
3. 解析脚本返回的 JSON:若 `success` 为 true 且 `data` 非空,继续;否则提示“新闻获取失败,请稍后重试”。
4. 按格式输出结果:
📰 今日热点新闻
[标题]
摘要:[摘要]
## 输出格式示例
📰 今日热点新闻
某某 AI 公司发布新一代 Agent 框架
摘要:新框架支持更高效的多 Agent 协作...
某某研究机构推出低成本量化交易工具
摘要:该工具降低了个人量化交易的门槛...
数据来源:新闻 API,更新时间:2026-04-24*
## 注意事项
- 每次查询后添加数据来源和时间戳
- 如果 API 不可用,尝试使用备用数据源(若已配置)
- 不要在回复中包含原始的 API 响应打印内容
步骤4:测试 Skill
重启 Gateway 或用 /new 重置会话,让 OpenClaw 重新扫描 Skill 目录。然后发送“今日新闻”,观察 Agent 是否调用了该 Skill。
步骤5:故障排查
如果 Skill 未生效,按以下顺序排查:
- 运行
openclaw skills list确认 Skill 是否在列表中 - 检查
SKILL.md的 YAML frontmatter 是否被---正确包裹 - 确认
name字段使用了 snake_case 格式 - 检查脚本是否有执行权限:
chmod +x scripts/fetch_news.py - 手动运行脚本验证其能够正常输出:
python3 scripts/fetch_news.py - 查看 OpenClaw 日志:
openclaw logs --tail 50
✏️ 即时自测:Skill 目录中 SKILL.md 脚本(scripts/)必须存在吗?SKILL.md 的 name 字段应该使用什么命名格式?
🛠️ 实践任务(本节):按照上述步骤,开发你自己的第一个功能性 Skill(不限主题,例如天气查询、文件整理、代码生成等)。完成后在 Agent 中测试,确认能正确触发和响应。
💭 本节总结(不看书写 3 行):
1.
2.
3.
📊 用时记录:计划____min → 实际____min → 偏差原因:________
✏️ 自测答案:SKILL.md 必须存在,scripts/ 及其中的脚本是可选的。SKILL.md 的 name 字段应使用 snake_case 格式。
4.4 从社区获取 Skill 并集成到自己的 Agent 中
预计时长:2.5小时
4.4.1 Skill 获取渠道概览
截至 2026 年 2 月,OpenClaw 社区已经积累了超过 4000 个社区技能-。主要的获取渠道有:
| 渠道 | 特点 | 技能数量 | 访问地址 |
|---|---|---|---|
| ClawHub | OpenClaw 官方技能社区 | 4,000+ | https://clawhub.ai -35 |
| awesome-openclaw-Skills | GitHub 社区维护的集合仓库 | 5,400+ | GitHub 搜索即可找到-17 |
| 中国镜像(腾讯云) | 为国内用户搭建的镜像平台 | 2.5 万+ (核心) | 国内用户可用-17 |
从实际体验来看,ClawHub 是中国用户的首选——官方镜像,速度快,技能质量有审核,社区活跃度高。在 ClawHub 中浏览技能就像在应用商店找 App,支持关键词搜索和向量语义搜索,按分类筛选,还支持一键安装。
龙马注:加一个防杠声明——我测试过的 Skill 不下 100 个,ClawHub 的技能质量参差不齐很正常。每个 Skill 都是由不同水平的开发者贡献的,安装前花 5 分钟看看代码,是个值得养成的习惯。
4.4.2 通过 ClawHub 安装 Skill(推荐)
ClawHub 提供了命令行工具和 Web 界面两种使用方式。
方式一:Web 界面安装
访问 ClawHub 网站,搜索你需要的 Skill,找到后点击“Install”。系统会自动生成安装命令,直接复制到终端执行即可。
方式二:CLI 安装
bash复制下载
# 安装 ClawHub CLI(如尚未安装) npm install -g clawhub # 搜索你需要的 Skill clawhub search "web" # 按关键词搜索 clawhub search --vector "帮我做数据分析的skill" # 向量搜索 # 查看 Skill 详情 clawhub info <skill-slug> # 安装 Skill 到当前工作区 clawhub install <skill-slug> # 自动安装到 ./skills 目录 # 更新所有已安装的 Skill clawhub update --all # 列出已安装的 Skill clawhub list # 同步并发布自己的更新(仅限技能作者) clawhub sync --all
安装完成后,OpenClaw 会在下一个会话中自动识别 <workspace>/skills 目录中的新 Skill。
快捷方式:自然语言安装
如果你不想敲命令行,还可以直接在 OpenClaw 对话框中输入自然语言指令:「请帮我安装这个 skill,GitHub 链接是 xxx」,系统将自动完成下载、安装与加载,无需手动执行命令-。
4.4.3 通过 GitHub 手动安装 Skill
对于没有发布到 ClawHub 的 Skill,或你想获取某个 Skills 仓库中的所有内容,可以手动从 GitHub 安装。
bash复制下载
# 进入 Skill 目录(当前工作区的 skills 文件夹) cd ~/.openclaw/workspace/skills # 克隆 GitHub 仓库中的 Skill(将 URL 替换为实际地址) git clone <GitHub 仓库地址> <skill-name> # 启用该 Skill(OpenClaw 会自动扫描) openclaw skills enable <skill-name> # 查看所有已安装的 Skill openclaw skills list # 验证 Skill 详情 openclaw skills info <skill-name>
龙马注:GitHub 上有一个技能集仓库 awesome-openclaw,包含几百个 Skill 的分类索引,是寻找灵感的宝库。但注意区分:有的仓库只是一个目录,没有真正的技能包;有的则提供完整的SKILL.md。此外,GitHub 安装方式下,每个 Skill 的 SKILL.md 前面三行 YAML 格式并不总是标准,先看一眼name和description字段是否清晰,如果连这两个都没有,建议不用。
4.4.4 将 Skill 集成到自己的 Agent 中
Skill 安装完成后,有三种方式将其“绑定”到你的 Agent 上。
方式一:全局启用(所有 Agent 共享)
在 config.yaml 中配置 agents.defaults.skills,指定所有 Agent 可用的 Skill 列表:
yaml
agents:
defaults:
skills:
- weather
- github
- news_summarizer
这样设置后,每个 Agent 都会自动获得这些 Skill。下文会讲到,如果某个 Agent 不需要某些 Skill,可以在单个 Agent 配置中覆盖。
方式二:指定 Agent 专用
在 Agent 的 AGENTS.md 的 skills 字段中列出该 Agent 特有的 Skill:
markdown
--- name: content_writer role: 内容创作助手 --- ## 技能 - news_summarizer - web_search - pdf_reader
或者通过 agents.list 配置为特定 Agent 单独指定 Skill:
yaml
agents:
list:
- id: "writer"
skills: ["news_summarizer", "web_search"]
- id: "reader"
skills: ["pdf_reader"]
当同时配置 agents.defaults.skills 和 agents.list[].skills 时,规则是:
- 如果
agents.list[].skills为空或省略,则继承agents.defaults.skills - 如果
agents.list[].skills设置为非空列表,则完全替换,不再继承 defaults-35
方式三:通过 SOUL.md 声明(推荐,双线并行)
最佳实践是将基础技能写在 AGENTS.md 的 ## 技能 列表中(Agent 必须有的核心能力),将偏好性更强的技能写在 SOUL.md 中(表达“我倾向于这么做”)。SOUL.md 中例化具体的 Skill 名称时,可以在技能名称前后加上 [ ] 或 「」 来表明它是 Agent 主动声明的能力。
两种方法可以并行使用,互不冲突。skills 列表决定 Agent 有哪些技能可用,SOUL.md 决定 Agent 在执行时优先选择哪些技能。
龙马注:我自己的习惯是:AGENTS.md 的 skills里只放核心必用的 Skill(比如内容创作 Agent 必用 news_summarizer、web_search),SOUL.md 里放可选的增强 Skill(比如“如果有 coding 相关 Skill,优先考虑”)。这样能让 Agent 的职责更清晰。
4.4.5 社区 Skill 的集成验证与安全审计
安装社区 Skill 之前,花 5 分钟做一次安全审查能避免后续很多麻烦。
必做的安全审查清单:
- 检查 Skill 来源:优先选择官方 ClawHub 发布的 Skill,或在 GitHub 上有足够多星星和活跃维护的仓库。一个只有 3 颗星、两年没更新的 Skill,建议多留个心眼。
- 审查 SKILL.md 内容(先用编辑器打开):
- 触发条件是否过度宽泛,会不会导致无关对话误触发?
- 是否包含可疑的敏感命令?
- 是否有清晰的工具调用链,而不是一句“do something”
- 审查脚本和资源文件:如果 Skill 包含
scripts/目录,检查里面的代码是否有文件系统写入/删除操作,是否有网络请求发送到可疑地址,是否存在硬编码的 API Key 或密钥。对威胁较大的网络请求和 Shell 执行,有权衡。 - 使用内置审计工具:运行
openclaw skills audit进行自动安全扫描。对于高风险 Skill,建议先在隔离环境中测试(如 Docker 容器或沙盒虚拟机)。 - 测试后再集成:在测试 Agent 或非生产环境中先运行一段时间,确认行为正常后再正式使用。
- 设置 Skill 安全边界:在
config.yaml的security.skill配置段中,限制 Skill 可以访问的网络地址、允许运行的脚本类型等。
如果发现某个 Skill 存在安全风险,但又确实需要它的功能,可以考虑两种替代方案:
- Fork 后自行修改:克隆原 Skill 仓库,移除可疑部分,保留核心功能,然后从本地目录安装
- 参考逻辑自行实现:阅读原 Skill 的 SKILL.md 理解其实现逻辑,按照相同的思路重新编写一个精简版
✏️ 即时自测:安装社区 Skill 前需要做哪些安全审查?
🛠️ 实践任务(本节):从 ClawHub 选择一个 Skill 进行安装、安全审查和集成。记录审查过程中发现的问题(如有),以及你是如何解决的。
💭 本节总结(不看书写 3 行):
1.
2.
3.
📊 用时记录:计划____min → 实际____min → 偏差原因:________
✏️ 自测答案:检查 Skill 来源的可信度,审查 SKILL.md 中的触发条件和工具调用链,检查 scripts/ 中是否有可疑命令,使用 openclaw skills audit 扫描,在隔离环境中测试后再正式使用。
4.5 🔐 社区 Skill 安全审查清单(详细版)
预计时长:本部分已整合至 4.4.5 节
本节内容已整合到 4.4.5 节中,可作为独立的安全检查表使用。建议在每次安装社区 Skill 前,逐项核对以下内容。
分步骤安全审查流程:
| 步骤 | 检查内容 | 处理方式 |
|---|---|---|
| 1 | Skill 来源 | 优先选择 ClawHub 官方认证或 GitHub 高星仓库,检查提交记录日期 |
| 2.1 | SKILL.md 触发器 | 是否过度宽泛(如只写了“help”或省略),可能在无关对话中误触发 |
| 2.2 | SKILL.md 工具链 | 工具调用链是否清晰可循,还是抽象表述(如要求“智能体去处理”) |
| 3.1 | scripts/ 脚本内容 | 检查是否有对陌生 IP 的网络请求、可疑的 shell 调用 |
| 3.2 | 硬编码密钥 | 在 SKILL.md 和脚本中搜索 API Key、token、secret 等关键词 |
| 4 | 隔离环境测试 | 高风险 Skill 先在 Docker 容器中运行,观察是否会修改系统配置 |
| 5.1 | 设置安全边界 | 在 security.skill 中限制 Skill 的网络访问和脚本类型 |
| 5.2 | 启用沙箱 | 对于未知程度的 Skill,优先开启 sandbox.enable: true 隔离运行 |
可选的代码自动化扫描:
如果社区 Skill 仓库规模较大,无法手动逐一审计,可以考虑使用自动化工具辅助。社区中有开源的 skill-scanner 工具,可批量扫描 Skill 仓库,检测以下安全风险:
- 使用
exec执行任意 shell 命令(高风险) - 使用
fs模块读写敏感路径 - 使用网络请求发送数据到非白名单域名
- 硬编码的密钥或敏感配置
⚠️ 量化场景特别提示:交易相关 Skill 的安全审查需要更严格的清单——检查是否有投机取巧的“自动下单”“自动止损调整”等绕过风控系统的能力,不允许有可修改风控参数的提示词,建议审计 Agent 间的内存共享与 Skill 权限交叉。
✏️ 即时自测:Skill 安全审查中最关键的三项检查是什么?
🛠️ 实践任务(本节):从 ClawHub 下载一个你感兴趣的 Skill,运行安全审查清单全部 5 项检查,写下你的审查结论。
💭 本节总结(不看书写 3 行):
1.
2.
3.
📊 用时记录:计划____min → 实际____min → 偏差原因:________
✏️ 自测答案:最关键的审查点依次是:脚本中的可疑命令/网络行为检查、SKILL.md 触发器和工具链的合理性审查、从可信来源获取并验证开发者身份。
4.6 社区岗位 Skill 深度解析:从拆解到实现
预计时长:3小时
本节选取三个有代表性的岗位 Skill,逐层拆解其设计和实现逻辑,帮助你理解如何将“岗位能力”封装为可复用的 Skill。
4.6.1 案例一:深度研究 Agent Skill(研究员岗位)
该 Skill 由百度千帆团队开发,具备类真人研究员的完整能力:针对复杂课题自动拆解任务流程、全网搜集相关信息、阅读分析资料,最终输出结构完整、逻辑清晰的深度报告。
核心机制拆解:
任务拆解 → 多渠道搜索 → 信息筛选 → 关联分析 → 结构化输出
1. 任务拆解
SKILL.md 中定义 research_task 作为 Agent 理解需求的入口:research_task: "写一份关于 <topic> 的研究报告", priority_level: "standard"。根据任务的复杂度、时效性和用户预期颗粒度,任务拆解器会将报告需求拆解为不同的阶段和优先级(如背景调研、数据收集、框架梳理、观点整合)。
2. 多渠道搜索
Skill 内置多个搜索源的配置。SKILL.md 文件中的配置节定义了搜索策略:主源和备用源。Agent 调用搜索源获取信息时,如果主源超时或数据质量不足,自动切换到备用源。这是 Skill 中值得放在 references/ 目录的经典案例,展示了搜索策略的“后备”设计。
3. 信息筛选与关联分析
搜索结果返回后,Skill 调用 filter_relevant_data 工具,按相关性、时效性和权威性过滤信息。接着由 Agent 自动执行关联分析,以识别信息间的逻辑脉络,为报告观点铺路。
4. 结构化输出
最终输出采用三级目录的方式结构化呈现,SKILL.md 中预先定义好报告模板,Agent 在生成时直接将内容填入对应 slot。
如何适配到金融量化研究场景:
将搜索词库从通用科技领域改为宏观经济指标、行业景气度和公司财报数据。添加数据源时,在 references/ 目录中存放 Wind、Bloomberg 的 API 调用指南,或者用 scripts/ 脚本来封装数据库访问。关联分析阶段重点输出市场情绪打分和影响因子权重,而非泛化的行业结论。
4.6.2 案例二:简历初筛 Skill(HR 岗位)
由出海硬件企业 HRD Viy 开发,核心机制是:岗位搜索 → 简历筛选 → 初步沟通 → 面试邀约,复刻了招聘全流程的工作逻辑-14。
拆解说明:如何将“经验”转化为 AI 可执行的步骤
这位 HRD 花了不到一小时就把十余年招聘经验写成了 Skill。他的做法是:
- 记录资深的经验:写出过去两年招聘量大的岗位 JD 中反复出现的技能关键词和硬性门槛
- 拆解为标准环节:把“筛简历”拆成“读 JD → 提取要求 → 匹配简历打分 → 输出 H/M/L 三档推荐名单”四个步骤
- 固化在 SKILL.md 中:告诉 Agent 每一步的输入输出和调用哪个工具
可以复用的模式:任何有成熟 SOP 的岗位,都可以按“流程切片 → 定义每个切片的输入输出 → 设定质量阈值 → 封装为 Skill”的方式实现自动化。
如何扩展该 Skill 用于量化人才招聘:
在量化领域招聘策略研究员时,简历筛选的重点不是关键词而是实践经历——过去几年实盘业绩、因子挖掘工具链经验、回测框架用的是什么、研究过哪类资产。Skill 中可以加入一个脚本调用 extract_quant_experience,用 ChatGPT/DeepSeek API 对简历正文做语义解析,自动打分输出求职者的量化技术栈成熟度和策略风格倾向。
4.6.3 案例三:图像分析 Skill(设计师岗位)
由拥有十年设计经验的“摸鱼”开发,搭建了 17 种专业路由,让不同类型的图像都能得到精准分析。相同图像传给不同的路由,返回的 tag 和评价标准完全不同。
核心机制:图像类型识别 → 路由分发 → 专业分析 → 结构化输出
行业知识与经验是 Skill 的核心壁垒:这个 Skill 的核心价值不在于调用图像识别 API 的代码,而在于那 17 种路由的设计逻辑——“什么样的图像该用什么美学标准去评价”。这部分知识完全来自开发者十年的设计经验,无法从 LLM 的通识语料库中直接获得。
对 Quant 的启发:量化中也可以构建“因子分析路由”——根据因子类别(动量、价值、质量、低波、成长)自动选择不同的统计检验方法和评价基准,生成差异化的因子分析报告。
Skill 制作方法论总结
Skill 开发的核心从来不是代码能力,而是对问题的解构与经验的提炼。写 SKILL.md 本质上是在“写给 AI 看的说明书”,而不是编写代码。
最佳实践路径:从具体岗位工作流程出发 → 拆解为标准化步骤 → 提炼可复用的触发词和条件 → 找到需要用到的工具集 → 封装为 SKILL.md → 增加脚本实现自动执行 → 持续迭代优化。
龙马注:我经常会翻开 awesome-openclaw-skills,不是为了找现成的东西,而是看他们的 SKILL.md 是怎么组织的。写得好的 SKILL.md,你一读就知道“这是真的在用的人写的”。不好的,读三遍仍然不知道它到底什么时候会被触发。
✏️ 即时自测:从案例一到案例三,哪个案例让你最有共鸣?在你的工作或学习领域里,可以拆解出类似的标准流程并封装为 Skill 吗?
🛠️ 实践任务(本节):选择一个你熟悉的工作流程(例如写日报、整理数据、发送周报),按照“流程拆解→定义输入输出→封装为 Skill”的路径,手写一个 SKILL.md。不必追求完美,先让它在你的 Agent 里跑起来。
💭 本节总结(不看书写 3 行):
1.
2.
3.
📊 用时记录:计划____min → 实际____min → 偏差原因:________
第4章 参考资料与扩展阅读
- OpenClaw Skills 官方文档 https://docs.openclaw.ai/zh-CN/tools/skills
- 创建 Skills —— OpenClaw 官方指南 https://docs.openclaw.ai/zh-CN/tools/creating-skills
- ClawHub —— OpenClaw 公共 Skills 注册表 https://clawhub.ai
- Awesome OpenClaw Skills GitHub 仓库 https://github.com/openclaw/awesome-openclaw-skills
- 开发SKILL并被OpenClaw使用 —— 阿里云 RPA 教程 https://help.aliyun.com/zh/rpa/getting-started/develop-skills-for-openclaw
- 10分钟造一个专属技能:OpenClaw自定义Skill开发+阿里云/本地部署及api配置实战手册 https://developer.aliyun.com/article/1717130
- openclaw-skill-boilerplate —— Skill 开发脚手架 https://www.npmjs.com/package/openclaw-skill-boilerplate
- OpenClaw Skills:托管与工作区、门控规则以及配置/环境变量连接 https://www.w3cschool.cn/openclawdocs/openclaw-tools-skills.html
- 从零造 “手脚”:OpenClaw 自定义 Skills 开发实战 https://grapecity.csdn.net/69a69a6654b52172bc5ebb82.html
- OpenClaw 插件开发教程:Skill、Hook、Plugin 三层分工 https://developer.aliyun.com/article/1717317
- 自研第一个SKILL-openclaw入门(CSDN Agent社区) https://agent.csdn.net/69b37c077bbde9200ba0a0a8.html
本章综合实践
任务:完成以下所有检查项,并记录输出。
- 创建你的第一个 SKILL.md(无论多简单),放置到
~/.openclaw/workspace/skills/目录。 - 从 ClawHub 安装一个社区 Skill,并完成安全审查,记录审查结论。
- 将安装的 Skill 集成到一个 Agent 中(全局或指定 Agent),测试它的运行效果。
- 阅读至少一个社区 Skill 的完整源代码,用你自己的话写一份“代码审查报告”。
- 选择一个你日常工作中最想自动化的流程,拆解为 3-5 个步骤,写成 SKILL.md。
- 如果 SKILL.md 中包含调用外部 API 的逻辑(如新闻摘要),尝试用 Python 或 Shell 脚本实现,并集成到 Skill 中。
完成后,打包你的 Skill 开发成果,命名为 chapter4_my_skills.zip。
龙马的评审:
“4.6节的社区 Skill 拆解是我最认真看的部分。很多教程都只说‘怎么写 SKILL.md’,但不告诉你‘好用的 SKILL.md 长什么样’。这三个案例我反复读了几遍,特别是案例二把 HR 经验固化成 Skill 的拆解思路,完全可以搬到量化场景——把沈飞的因子挖掘 SOP 写成 Skill,比直接让 AI 乱试靠谱一万倍。另外要提醒的是,ClawHub 中国镜像的安装体验确实比直接连海外源稳定得多,如果你的网络条件一般,建议先去国内镜像站点尝试安装。国内镜像的技能数量可能略少于官方源,但常用技能都在。”
沈飞的评审:
“关于4.5节安全审查清单,我在量化实盘里见过的 Skill 安全审查日志中,90% 的问题出现在脚本的网络请求上——有的 Skill 会向一个陌生的 IP 发送你的交易持仓数据,如果不是在生产环境发现了,后果不堪设想。所以希望读者真的花那 5 分钟逐条检查,不要走形式。关于4.6节,如果能在最后一个案例中增加‘量化因子分析 Skill’的拆解,对本书的第五篇会有更自然的前后呼应。读者在第五篇看到‘因子挖掘’Skill 时,会意识到原来这就是让研究员从重复劳动中解放出来的利器。”
下一章预告:第5章 Web UI:OpenClaw的图形化管理中心 —— 你将把第3章的 Agent 配置和第4章的 Skill 能力在 Web UI 中集中管理、调试和可视化。当你遇到 Skill 未被触发、Agent 行为异常时,打开 Web UI 看看调用栈,往往比看日志更直观高效。























暂无评论内容