OpenClaw 的 Skill 系统允许开发者创建可复用的专业技能,供 AI Agent 在对话中动态加载和调用。Skill 本质上是一份结构化的指令文档,它告诉 AI 如何执行特定任务。
OpenClaw Skill 是一组预定义的指令和配置,封装了特定领域的知识和操作流程。当用户触发某个 Skill 时,系统会将该 Skill 的指令注入到 AI 的上下文中,使 AI 能够按照预定义的流程执行任务。
整个流程从需求分析开始,经过编写 SKILL.md 文件、配置触发条件、本地测试和调试优化,最后发布到 ClawHub 技能市场供他人使用。
开始 Skill 开发前需要准备以下环境:
SKILL.md 是 OpenClaw Skill 的核心文件,它使用 YAML front matter 定义元数据,使用 Markdown 正文定义指令内容。
--- # YAML Front Matter:定义元数据和配置 name: skill-name version: 1.0.0 description: Skill 描述信息 author: 作者名称 trigger: patterns: - 触发关键词模式1 - 触发关键词模式2 dependencies: tools: - tool-name-1 - tool-name-2 permissions: - permission-name --- ## 正文部分:Skill 指令内容 // 使用 Markdown 格式编写详细的执行指令 // 这部分内容会在 Skill 被触发时注入到 AI 上下文中
| 字段 | 必填 | 说明 | 示例 |
|---|---|---|---|
name |
是 | Skill 唯一名称,使用小写字母和连字符 | my-awesome-skill |
version |
是 | 语义化版本号 | 1.0.0 |
description |
是 | 简短描述 Skill 功能,用于搜索和展示 | 自动生成学习笔记 HTML |
author |
否 | 作者名称或 ID | jiaoi-tech |
trigger |
否 | 触发条件配置,定义何时自动激活 | 见第四章 |
dependencies |
否 | 所需的工具和权限 | tools: [bash, read] |
tags |
否 | 标签数组,用于分类和搜索 | [学习, 自动化] |
正文部分使用标准 Markdown 语法,包含以下推荐结构:
## 概述 简要说明本 Skill 的用途和适用场景。 ## 执行步骤 详细列出 AI 需要执行的操作步骤。 ## 注意事项 列出执行过程中需要特别注意的事项。 ## 输出规范 定义 Skill 执行结果的输出格式和要求。
--- name: generate-learning-note version: 1.0.0 description: 从原始文本生成结构化学习笔记 HTML 文件 author: jiaoi-tech trigger: patterns: - 生成学习笔记 - 学习笔记 - 创建笔记 dependencies: tools: - Read - Write - Bash permissions: - files:read - files:write --- ## 概述 本 Skill 用于从原始文本文件生成结构化的学习笔记 HTML 文件。 适用于中医药、编程教程、读书笔记等多种学习场景。 ## 执行步骤 1. 读取原始文本文件 2. 分析内容结构,提取标题、日期和正文 3. 读取模板 HTML 文件 4. 替换模板中的占位符 5. 输出最终 HTML 文件 ## 注意事项 - 确保输出目录存在 - 使用正确的时间戳生成文件名 - 保留模板中的所有交互功能
本节手把手带你创建第一个 OpenClaw Skill,从项目初始化到完成一个可用的技能。
每个 Skill 应该放在独立的目录中,推荐的项目结构如下:
my-skill/ ├── SKILL.md # Skill 主文件(必需) ├── assets/ # 资源文件目录(可选) │ ├── icon.png # Skill 图标 │ └── samples/ # 示例文件 └── tests/ # 测试目录(可选) └── test-cases.md # 测试用例
我们以一个实用的 "TIL(Today I Learned)记录 Skill" 为例,完整演示创建过程。
mkdir -p ~/openclaw-skills/til-recorder/assets cd ~/openclaw-skills/til-recorder
--- name: til-recorder version: 1.0.0 description: 记录日常学习收获,生成结构化的 TIL 笔记 author: your-name tags: - 学习 - 笔记 - 知识管理 trigger: patterns: - 记录今天学到的 - TIL - 今天学到了 --- ## 概述 TIL Recorder 帮助你快速记录每天学到的知识点,形成结构化的个人知识库。 每天记录一个小知识点,一年后你将拥有 365 条知识沉淀。 ## 执行流程 当你收到用户的 TIL 请求时,按照以下流程执行: ### 1. 信息收集 - 询问用户今天学到了什么 - 确认知识点所属的分类(技术、生活、健康等) - 了解知识点的来源(书籍、课程、实践等) ### 2. 内容结构化 将用户提供的信息组织为: - 标题:简洁概括知识点 - 分类:所属领域标签 - 核心内容:1-3句话概括 - 详细说明:展开阐述 - 来源:学习来源 - 思考:个人理解和感悟 ### 3. 文件生成 - 使用当前日期作为文件名,格式为 til-yyyy-mm-dd.md - 将结构化内容写入 TIL 目录 - 更新索引文件 ## 输出格式 ```markdown # TIL: [标题] **日期**:yyyy-mm-dd **分类**:[分类标签] **来源**:[来源] ## 核心内容 [1-3句话概括] ## 详细说明 [展开阐述] ## 思考 [个人理解和感悟] ```
openclaw skill validate ~/openclaw-skills/til-recorder
openclaw skill validate 会检查 SKILL.md 的语法正确性、字段完整性和依赖配置的可用性。如果验证通过,会输出绿色提示;如果存在错误,会明确指示问题位置和修改建议。
触发条件是 Skill 的"开关",决定了在什么情况下 AI 会自动加载并激活该 Skill。合理的触发配置能大幅提升用户体验。
当用户发送消息时,OpenClaw 会将消息内容与所有已安装 Skill 的触发模式进行匹配。一旦匹配成功,对应的 Skill 指令就会被注入到 AI 的上下文窗口中。
| 类型 | 语法 | 说明 | 示例 |
|---|---|---|---|
| 关键词匹配 | 纯文本 |
消息中包含指定关键词即触发 | 生成学习笔记 |
| 通配符匹配 | glob 模式 |
使用 * 和 ? 通配符匹配模式 | 生成*笔记 |
| 正则匹配 | /regex/ |
使用正则表达式匹配消息 | /笔记|note|learn/i |
| 命令匹配 | /命令名 |
匹配以斜杠开头的命令 | /til |
trigger: patterns: - 生成学习笔记 - 学习笔记 - 创建笔记 matchType: any # 任意模式匹配即触发
trigger: patterns: - /til - /til-record matchType: exact # 需要完全匹配
trigger: patterns: - 部署*项目 # 通配符:部署任何项目 - /deploy # 命令:/deploy - /(上线|发布|推送)到.*服务器/ # 正则 matchType: any contextRequired: true # 需要确认上下文后才触发
测试是确保 Skill 质量的关键步骤。OpenClaw 提供了本地测试和调试工具,帮助开发者在发布前验证 Skill 的行为。
在开发阶段,可以通过以下方式在本地测试 Skill:
# 验证 SKILL.md 语法 openclaw skill validate ./my-skill # 在本地模拟环境中运行 Skill openclaw skill run ./my-skill --input "测试输入内容" # 查看 Skill 的完整渲染输出 openclaw skill render ./my-skill
编写全面的测试用例是保证 Skill 质量的重要手段。建议覆盖以下场景:
## test-cases.md ### 测试用例 1:正常触发 - 用户输入:"帮我生成学习笔记" - 预期结果:Skill 被触发,开始询问笔记内容 - 实际结果:[测试后填写] ### 测试用例 2:边缘情况 - 用户输入:"笔记"(极短输入) - 预期结果:Skill 不被触发(或触发后引导用户提供详细信息) - 实际结果:[测试后填写] ### 测试用例 3:特殊字符 - 用户输入:"生成/*笔记"(含特殊字符) - 预期结果:正常处理,不报错 - 实际结果:[测试后填写]
--verbose 或 --debug 标志查看完整执行日志| 问题 | 可能原因 | 解决方案 |
|---|---|---|
| Skill 未被触发 | 触发模式不匹配或权限不足 | 检查触发模式配置和 dependencies |
| 指令执行不完整 | 上下文窗口不足或指令过长 | 精简指令内容,分拆为多个 Skill |
| 工具调用失败 | 缺少权限或工具未配置 | 在 dependencies 中添加缺失的权限 |
| 输出格式异常 | 指令中输出规范不明确 | 在 SKILL.md 中明确定义输出格式 |
ClawHub 是 OpenClaw 官方的技能市场,开发者可以在上面发布、分享和发现 Skill。发布后的 Skill 可以被其他用户搜索、安装和使用。
在发布之前,请确保你的 Skill 满足以下要求:
openclaw skill validate 验证# 1. 登录 ClawHub openclaw hub login # 2. 打包 Skill openclaw hub pack ./my-skill -o ./dist # 3. 发布到 ClawHub openclaw hub publish ./dist/my-skill-1.0.0.osk # 4. 验证发布成功 openclaw hub search my-skill
发布后的 Skill 需要遵循版本管理规范:
| 版本号变更 | 适用场景 | 示例 |
|---|---|---|
| 主版本号 | 不兼容的 API 修改或重大重构 | 1.0.0 → 2.0.0 |
| 次版本号 | 新增功能,向后兼容 | 1.0.0 → 1.1.0 |
| 修订号 | 问题修复,行为不变 | 1.0.0 → 1.0.1 |
# 更新已发布的 Skill openclaw hub update ./my-skill --version 1.1.0 # 查看已发布的 Skill openclaw hub list # 下架 Skill(不再维护时) openclaw hub unpublish my-skill
好的文档能帮助用户理解和使用你的 Skill:
当用户安装多个 Skill 时,可能会出现多个 Skill 同时匹配同一输入的情况。优先级管理解决了这一冲突问题,确保最相关的 Skill 被优先加载。
每个 Skill 可以设置一个优先级数值,优先级高的 Skill 在匹配时会被优先考虑和执行。当多个 Skill 同时匹配时,系统会按优先级从高到低排序加载。
--- name: critical-operation-skill version: 1.0.0 priority: 90 # 高优先级,确保优先执行 description: 关键操作 Skill,需要优先响应 trigger: patterns: - 紧急 - 立刻 ---
--- name: background-helper version: 1.0.0 priority: 20 # 低优先级,仅当高优先级不匹配时使用 description: 后台辅助 Skill,默认情况下使用 trigger: patterns: - 帮助 - 辅助 ---
| 场景 | 推荐优先级 | 说明 |
|---|---|---|
| 安全相关 Skill | 90-100 | 涉及系统安全、数据保护的操作 |
| 核心功能 Skill | 70-89 | 用户日常使用的主要技能 |
| 普通工具 Skill | 30-69 | 常规辅助性技能 |
| 后台/备选 Skill | 1-29 | 兜底处理、备选方案 |
当多个高优先级 Skill(80 以上)设置相同的触发模式时,可能会导致优先级 "战争",即多个 Skill 反复争夺控制权。建议:
OpenClaw 支持在运行时动态调整 Skill 优先级,适用于需要根据上下文临时提升或降低优先级的场景:
# 临时提升 Skill 优先级 openclaw skill prioritize my-skill --set 85 # 查看当前所有 Skill 的优先级 openclaw skill list --sort priority # 将 Skill 优先级重置为默认值 openclaw skill prioritize my-skill --reset
基于社区经验和官方文档,本章总结了 Skill 开发中的常见问题、解决方案和最佳实践。
现象:用户输入明显相关的内容,但 Skill 没有被触发。
排查步骤:
openclaw skill debug --match "测试文本" 测试匹配现象:Skill 成功触发,但 AI 没有按照指令执行。
可能原因:
解决方案:精简指令、使用明确的步骤编号、确保所有依赖可用。
现象:从 ClawHub 安装 Skill 时出错。
排查步骤:
openclaw log --level debug| 优化方向 | 建议 | 预期效果 |
|---|---|---|
| 指令长度 | 控制在 500 字以内 | 减少上下文占用,提升响应速度 |
| 触发模式 | 使用精确的关键词而非宽泛的正则 | 降低误触发率,提升匹配准确性 |
| 依赖管理 | 只声明必需的依赖 | 减少权限请求,加快加载速度 |
| 版本迭代 | 小步快跑,频繁发布小版本更新 | 降低单次更新的风险 |
openclaw skill validate 和本地测试环境验证 Skill 行为,确保发布前质量达标。| 命令 | 用途 |
|---|---|
openclaw skill validate ./path |
验证 SKILL.md 语法 |
openclaw skill run ./path --input "..." |
本地运行测试 |
openclaw skill render ./path |
查看渲染后的完整指令 |
openclaw hub publish ./file.osk |
发布到 ClawHub |
openclaw hub search keyword |
搜索 ClawHub 上的 Skill |
openclaw skill prioritize name --set N |
设置 Skill 优先级 |
openclaw skill list --sort priority |
按优先级列出所有 Skill |