第4章 Skill插件开发:从入门到岗位实战

第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:一套带新手从安装到开发的完整教程

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 提供了参考方向:

  • 核心工具型execbrowsercroncanvas
  • 内容处理型pdfxlsxmdhtml-parse
  • 信息检索型web-searchweb-fetchrss
  • 开发辅助型githubgitdocker(调试模式)
  • 自动化型slackdiscordmessagesessions

龙马注:每次我问一个 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.binsPATH 上必须存在的二进制文件
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 未生效,按以下顺序排查:

  1. 运行 openclaw skills list 确认 Skill 是否在列表中
  2. 检查 SKILL.md 的 YAML frontmatter 是否被 --- 正确包裹
  3. 确认 name 字段使用了 snake_case 格式
  4. 检查脚本是否有执行权限:chmod +x scripts/fetch_news.py
  5. 手动运行脚本验证其能够正常输出:python3 scripts/fetch_news.py
  6. 查看 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 个社区技能-。主要的获取渠道有:

渠道特点技能数量访问地址
ClawHubOpenClaw 官方技能社区4,000+https://clawhub.ai -35
awesome-openclaw-SkillsGitHub 社区维护的集合仓库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 分钟做一次安全审查能避免后续很多麻烦。

必做的安全审查清单

  1. 检查 Skill 来源:优先选择官方 ClawHub 发布的 Skill,或在 GitHub 上有足够多星星和活跃维护的仓库。一个只有 3 颗星、两年没更新的 Skill,建议多留个心眼。
  2. 审查 SKILL.md 内容(先用编辑器打开):
    • 触发条件是否过度宽泛,会不会导致无关对话误触发?
    • 是否包含可疑的敏感命令?
    • 是否有清晰的工具调用链,而不是一句“do something”
  3. 审查脚本和资源文件:如果 Skill 包含 scripts/ 目录,检查里面的代码是否有文件系统写入/删除操作,是否有网络请求发送到可疑地址,是否存在硬编码的 API Key 或密钥。对威胁较大的网络请求和 Shell 执行,有权衡。
  4. 使用内置审计工具:运行 openclaw skills audit 进行自动安全扫描。对于高风险 Skill,建议先在隔离环境中测试(如 Docker 容器或沙盒虚拟机)。
  5. 测试后再集成:在测试 Agent 或非生产环境中先运行一段时间,确认行为正常后再正式使用。
  6. 设置 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 前,逐项核对以下内容。

分步骤安全审查流程

步骤检查内容处理方式
1Skill 来源优先选择 ClawHub 官方认证或 GitHub 高星仓库,检查提交记录日期
2.1SKILL.md 触发器是否过度宽泛(如只写了“help”或省略),可能在无关对话中误触发
2.2SKILL.md 工具链工具调用链是否清晰可循,还是抽象表述(如要求“智能体去处理”)
3.1scripts/ 脚本内容检查是否有对陌生 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。他的做法是:

  1. 记录资深的经验:写出过去两年招聘量大的岗位 JD 中反复出现的技能关键词和硬性门槛
  2. 拆解为标准环节:把“筛简历”拆成“读 JD → 提取要求 → 匹配简历打分 → 输出 H/M/L 三档推荐名单”四个步骤
  3. 固化在 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章 参考资料与扩展阅读

  1. OpenClaw Skills 官方文档 https://docs.openclaw.ai/zh-CN/tools/skills
  2. 创建 Skills —— OpenClaw 官方指南 https://docs.openclaw.ai/zh-CN/tools/creating-skills
  3. ClawHub —— OpenClaw 公共 Skills 注册表 https://clawhub.ai
  4. Awesome OpenClaw Skills GitHub 仓库 https://github.com/openclaw/awesome-openclaw-skills
  5. 开发SKILL并被OpenClaw使用 —— 阿里云 RPA 教程 https://help.aliyun.com/zh/rpa/getting-started/develop-skills-for-openclaw
  6. 10分钟造一个专属技能:OpenClaw自定义Skill开发+阿里云/本地部署及api配置实战手册 https://developer.aliyun.com/article/1717130
  7. openclaw-skill-boilerplate —— Skill 开发脚手架 https://www.npmjs.com/package/openclaw-skill-boilerplate
  8. OpenClaw Skills:托管与工作区、门控规则以及配置/环境变量连接 https://www.w3cschool.cn/openclawdocs/openclaw-tools-skills.html
  9. 从零造 “手脚”:OpenClaw 自定义 Skills 开发实战 https://grapecity.csdn.net/69a69a6654b52172bc5ebb82.html
  10. OpenClaw 插件开发教程:Skill、Hook、Plugin 三层分工 https://developer.aliyun.com/article/1717317
  11. 自研第一个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 看看调用栈,往往比看日志更直观高效。

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容