OpenClaw 技能开发完全指南:从零打造你的第一个 AI 技能 打造专属 AI 能力,让智能体为你所用 前言:为什么需要自定义技能? OpenClaw 是一个强大的自托管 AI 智能体网关,支持 WhatsApp、Telegram、Discord、QQ 等多渠道接入。但真正让它变得无往不利的,是技能(Skills)系统。 想象一下: 没有技能的 AI:就像一个刚毕业的实习生,聪明但缺乏领域知识,每次都要从头摸索 有技能的 AI:就像一个经验丰富的专家团队,每个技能都是该领域的"老司机",拿来即用 技能是什么?简单来说,它是给 AI 的"操作手册"——封装了特定领域的知识、工作流程和工具使用方法,让 AI 能够快速胜任专业任务。 技能能做什么?
打造专属 AI 能力,让智能体为你所用
OpenClaw 是一个强大的自托管 AI 智能体网关,支持 WhatsApp、Telegram、Discord、QQ 等多渠道接入。但真正让它变得无往不利的,是**技能(Skills)**系统。
想象一下:
技能是什么?简单来说,它是给 AI 的"操作手册"——封装了特定领域的知识、工作流程和工具使用方法,让 AI 能够快速胜任专业任务。
这些都是已经存在的技能。而你,可以创建属于自己的技能——将你的专业知识、业务流程、常用操作封装成 AI 能力,让它为你重复劳动。
一个标准的技能目录结构如下:
my-skill/ ├── SKILL.md (必需) └── 可选资源/ ├── scripts/ # 可执行脚本(Python/Bash 等) ├── references/ # 参考文档(API 文档、业务逻辑等) └── assets/ # 输出资源(模板、图标、示例文件)
核心组件:
SKILL.md 采用 YAML 前置元数据 + Markdown 指令的结构:
--- name: my-skill description: 简洁描述技能功能和使用场景。包含"做什么"和"何时用"。 --- # 技能名称 ## 使用场景 当用户需要 XXX 时,使用此技能。 ## 核心功能 1. 功能一 2. 功能二 ## 使用方法 具体操作步骤...
元数据字段说明:
name:技能名称,使用小写字母、数字和连字符(kebab-case)description:触发关键词,清晰描述技能功能和使用场景
技能支持通过 metadata 字段实现条件加载,只在满足条件时才生效:
--- name: gemini-image-gen description: 使用 Gemini 3 Pro 生成或编辑图片 metadata: { "openclaw": { "requires": { "bins": ["uv"], "env": ["GEMINI_API_KEY"], "config": ["browser.enabled"] }, "primaryEnv": "GEMINI_API_KEY" } } ---
条件字段:
requires.bins:必须存在的可执行文件requires.env:必须存在的环境变量requires.config:必须为真的配置路径os:限定操作系统(darwin/linux/win32)上下文窗口是公共资源。技能与系统提示、对话历史、其他技能共享 token 预算。
设计原则:
OpenClaw 技能采用三层加载,实现按需消费上下文:
| 层级 | 内容 | 加载时机 | 大小限制 |
|---|---|---|---|
| 元数据 | name + description | 始终加载 | ~100 词 |
| SKILL.md | 核心指令 | 技能触发时 | <5k 词 |
| 资源 | scripts/references/assets | 按 AI 决定 | 无限制(脚本可不读取) |
模式 1:高层指引 + 参考文档
# PDF 处理 ## 快速开始 使用 pdfplumber 提取文本: [代码示例] ## 高级功能 - **表单填写**:参见 [FORMS.md](references/FORMS.md) - **API 参考**:参见 [REFERENCE.md](references/REFERENCE.md) - **示例集合**:参见 [EXAMPLES.md](references/EXAMPLES.md)
AI 只在需要时加载参考文档,节省上下文。
模式 2:领域分治
bigquery-skill/ ├── SKILL.md (概览和导航) └── references/ ├── finance.md (收入、账单指标) ├── sales.md (机会、管道) └── marketing.md (活动、归因)
用户问销售指标时,AI 只读取 sales.md。
模式 3:渐进式细节
# DOCX 处理 ## 创建文档 使用 docx-js 创建新文档。参见 [DOCX-JS.md](references/DOCX-JS.md)。 ## 编辑文档 简单编辑直接修改 XML。 **追踪修订**:参见 [REDLINING.md](references/REDLINING.md) **OOXML 详情**:参见 [OOXML.md](references/OOXML.md)
基础内容展示,高级内容链接。
不要急着写代码!先通过具体例子理解技能要解决什么问题。
关键问题:
示例:创建 image-editor 技能
分析每个示例,识别可复用的脚本、参考文档和资源文件。
示例分析:
| 需求 | 分析 | 可复用资源 |
|---|---|---|
| 旋转 PDF | 每次重写相同代码 | scripts/rotate_pdf.py |
| 查询 BigQuery | 每次重新发现表结构 | references/schema.md |
| 构建前端应用 | 每次写相同的 HTML/React 样板 | assets/hello-world/ |
使用 skill-creator 的初始化脚本快速创建模板:
# 创建基础模板 scripts/init_skill.py my-skill --path ~/.openclaw/workspace/skills # 包含 scripts 和 references 目录 scripts/init_skill.py my-skill --path ~/.openclaw/workspace/skills --resources scripts,references # 包含示例文件 scripts/init_skill.py my-skill --path ~/.openclaw/workspace/skills --examples
脚本会自动生成:
从规划的 scripts、references、assets 开始实现:
元数据(前置元数据):
--- name: docx-processor description: Word 文档创建、编辑和分析,支持追踪修订、批注、格式保留和文本提取。当 AI 需要:创建新文档、修改内容、处理追踪修订、添加批注时使用此技能。 ---
正文(指令):
使用命令式/不定式形式,描述使用方法和资源引用:
# Word 文档处理 ## 创建文档 使用 python-docx 创建新文档: \`\`\`python from docx import Document doc = Document() doc.add_heading("标题", level=1) doc.save("output.docx") \`\`\` ## 编辑文档 ### 简单编辑 直接修改文本内容。 ### 追踪修订 参见 [REDLINING.md](references/REDLINING.md) 了解如何处理修订模式。 ## 高级功能 - **OOXML 详情**:参见 [OOXML.md](references/OOXML.md) - **批注处理**:参见 [COMMENTS.md](references/COMMENTS.md)
使用 package_skill.py 验证并打包技能:
# 验证并打包 scripts/package_skill.py ~/.openclaw/workspace/skills/my-skill # 指定输出目录 scripts/package_skill.py ~/.openclaw/workspace/skills/my-skill ./dist
打包过程:
.skill 文件(zip 格式)安全限制: 不允许符号链接,打包失败。
在真实任务中使用技能,观察问题并优化:
OpenClaw 从三个位置加载技能(优先级从高到低):
<workspace>/skills~/.openclaw/skills同名冲突时,优先级高的覆盖优先级低的。
ClawHub 是 OpenClaw 的公共技能注册表:
clawhub install <skill-slug>clawhub update --allclawhub sync --all默认安装到工作区 ./skills 目录。
通过 ~/.openclaw/openclaw.json 配置技能:
{ skills: { entries: { "my-skill": { enabled: true, apiKey: { source: "env", provider: "default", id: "API_KEY" }, env: { API_KEY: "YOUR_KEY_HERE", }, config: { endpoint: "https://api.example.com", model: "pro", }, }, }, }, }
配置字段:
enabled:启用/禁用技能env:注入环境变量apiKey:便捷配置主环境变量config:自定义配置skills.entries.*.apiKey 而非硬编码技能对上下文的影响:
公式(字符数):
total = 195 + Σ (97 + len(name) + len(description) + len(location))
粗略估算:~4 字符/token,约 24 tokens/技能(不含字段长度)。
需求:旋转 PDF 文档
实现:
# scripts/rotate_pdf.py import sys from pypdf import PdfReader, PdfWriter def rotate_pdf(input_path, output_path, angle=90): reader = PdfReader(input_path) writer = PdfWriter() for page in reader.pages: page.rotate(angle) writer.add_page(page) with open(output_path, "wb") as f: writer.write(f) if __name__ == "__main__": rotate_pdf(sys.argv[1], sys.argv[2], int(sys.argv[3]))
SKILL.md:
--- name: pdf-rotator description: 旋转 PDF 文档。当用户需要旋转 PDF 页面时使用此技能。 --- # PDF 旋转器 ## 使用方法 运行脚本旋转 PDF: \`\`\`bash python scripts/rotate_pdf.py input.pdf output.pdf 90 \`\`\` 支持角度:90、180、270 度。
需求:查询灏天文库文集
实现:
# scripts/list_collections.py import requests def list_collections(name=None): url = "https://api.example.com/collections" params = {"name": name} if name else {} response = requests.get(url, params=params) return response.json() if __name__ == "__main__": import json result = list_collections() print(json.dumps(result, indent=2, ensure_ascii=False))
SKILL.md:
--- name: ht-collections description: 查询灏天文库文集和文档。当用户需要查询文集列表、文档列表或详情时使用此技能。 metadata: { "openclaw": { "requires": { "env": ["HT_API_KEY"] }, "primaryEnv": "HT_API_KEY" } } --- # 灏天文库查询 ## 查询文集 列出所有文集: \`\`\`bash python scripts/list_collections.py \`\`\` 按名称搜索: \`\`\`bash python scripts/list_collections.py --name "关键词" \`\`\` ## 查询文档 参见 [DOCUMENTS.md](references/DOCUMENTS.md) 了解文档查询方法。
需求:生成乔布斯风格演示文稿
实现:
assets/ └── jobs-style-template/ ├── index.html ├── styles.css └── script.js
SKILL.md:
--- name: jobs-style-slides description: 生成乔布斯风格极简科技感竖屏 HTML 演示稿。当用户需要生成 PPT、演示文稿、幻灯片或要求科技风/极简风时使用此技能。 --- # 乔布斯风格演示生成 ## 快速开始 1. 复制模板:`cp -r assets/jobs-style-template/ output/` 2. 编辑 `output/index.html` 填充内容 3. 在浏览器中打开 ## 自定义样式 参见 [STYLING.md](references/STYLING.md) 了解样式自定义方法。
组织技能支持多个框架:
cloud-deploy/ ├── SKILL.md(工作流 + 提供商选择) └── references/ ├── aws.md(AWS 部署模式) ├── gcp.md(GCP 部署模式) └── azure.md(Azure 部署模式)
用户选择 AWS 后,AI 只读取 aws.md。
插件可以自带技能,在 openclaw.plugin.json 中声明:
{ "skills": ["./skills/telegram", "./skills/whatsapp"] }
启用技能文件夹监控,自动热重载:
{ skills: { load: { watch: true, watchDebounceMs: 250, }, }, }
Linux 网关 + macOS 节点时,macOS 专用技能自动可用(节点连接且 system.run 允许时)。
OpenClaw 技能系统是一个强大的扩展机制,让你能够:
从简单的脚本技能开始,逐步构建你的技能库。每个技能都是 AI 的"超能力",让它在特定领域变得无所不能。
下一步行动:
init_skill.py 初始化技能目录package_skill.py 打包并测试祝你打造出独一无二的 AI 技能生态系统! 🦞