📚 前言
在前几篇文章中,我们介绍了 Ollama 本地部署、OpenClaw 安装配置以及微信公众号自动同步。本篇将深入探讨 OpenClaw 的核心机制——Skills(技能),并通过一个实际的博客发布案例,展示如何创建和定制自己的 Skill。由于转换代码功能不完善会造成部分ASCII图格式错乱,后期会修复这个bug。文末有关于skill的彩蛋.
---
下面的截图就是 一个完成的skill生成过程 是不是很简单.

一、什么是 OpenClaw Skill?
1.1 定义
Skill 是 OpenClaw 的能力扩展机制,类似于 VS Code 的插件或 Chrome 的扩展。每个 Skill 封装了一组相关的功能和知识,让 AI Agent 能够执行特定的任务。
1.2 核心组成
一个典型的 Skill 包含以下部分:
| 组成部分 | 文件 | 作用 |
|---------|------|------|
| **SKILL.md** | 必需 | 技能定义文件,包含触发条件、使用说明、命令示例 |
| **scripts/** | 可选 | Shell/Python 脚本,实现具体功能 |
| **references/** | 可选 | 参考资料、API 文档等 |
1.3 为什么需要 Skills?
**问题**:AI 模型本身只知道"知道什么",但不知道"怎么做"。
Skills 解决的就是这个问题:
用户说:"北京天气" ↓ AI 理解意图:查询天气 ↓ 查找匹配的 Skill:weather ↓ 读取 SKILL.md 获取指令 ↓ 执行:curl wttr.in/Beijing?format=3 ↓ 返回结果:Beijing: ⛅️ +6°C---
二、内置 Skills 示例
OpenClaw 自带了丰富的内置 Skills:
2.1 常用 Skills 列表
| Skill 名称 | 功能 | 触发词 |
|-----------|------|--------|
| `weather` | 查询天气 | "天气"、"温度"、"forecast" |
| `github` | GitHub 操作 | "PR 状态"、"创建 issue" |
| `gh-issues` | GitHub Issues 处理 | "处理 issues"、"自动修复" |
| `healthcheck` | 系统健康检查 | "安全审计"、"防火墙配置" |
| `canvas` | 画布操作 | "截图"、"渲染 UI" |
| `coding-agent` | 代码助手 | "写代码"、"重构" |
| `skill-creator` | 创建新 Skill | "创建技能"、"新建 skill" |
2.2 Skill 文件示例:weather
--- name: weather description: "Get current weather and forecasts via wttr.in" --- # Weather Skill ## When to Use - "What's the weather?" - "Temperature in [city]" - "Weather forecast for the week" ## Commands ### Local Script (Recommended)python3 /home/node/.openclaw/workspace/weather_check.py Shenzhen
### API Fallbackcurl "wttr.in/London?format=3"
---
三、实战案例:博客发布 Skill
3.1 需求背景
我们希望实现这样的工作流:
撰写 Markdown 博客 ↓ OpenClaw 自动转换为 HTML ↓ 推送到微信公众号草稿箱 ↓ 返回草稿链接供人工审核3.2 mp-draft-push Skill 结构
mp-draft-push/ ├── SKILL.md # 技能定义 ├── scripts/ │ └── push_to_wechat.sh # 推送脚本 └── references/ └── wechat_api.md # API 文档3.3 SKILL.md 核心内容
--- name: mp-draft-push description: "将博客文章发布到微信公众号草稿箱" --- ## 触发词 - "发布文章" - "推送到微信" - "发布到公众号" ## 工作流程 1. 读取最新博客文章 (~/.openclaw/workspace/blog/_posts/*.md) 2. 提取标题、摘要、内容 3. 转换为带内联样式的 HTML 4. 上传封面图到微信素材库 5. 创建草稿并返回 media_id ## 执行命令LATEST_POST=$(ls -t ~/.openclaw/workspace/blog/_posts/*.md | head -1)
python3 scripts/publish.py "$LATEST_POST"
## 重要配置- WECHAT_APPID: 公众号 AppID- WECHAT_SECRET: 公众号密钥 -IP 白名单:必须添加服务器 IP
3.4 实际使用
用户指令:
推送到微信OpenClaw 执行过程:
1. 识别意图:发布文章到微信公众号 2. 匹配 Skill:mp-draft-push 3. 读取 SKILL.md 获取工作流程 4. 执行: - 查找最新博客:2026-03-17-openclaw-skills.md - 提取标题:"AI 系列 (6):OpenClaw Skills 详解" - 转换 Markdown → HTML(内联样式) - 上传封面图 → 获取 thumb_media_id - 调用微信 API 创建草稿 5. 返回结果: ✅ 文章已推送到草稿箱 草稿 ID: xxxxx 访问链接:https://mp.weixin.qq.com---
四、如何创建自己的 Skill?
4.1 使用 skill-creator
OpenClaw 提供了 skill-creator Skill 来帮助创建新技能:
用户:创建一个 skill 用于查询股票价格 OpenClaw:好的,我来帮你创建 stock-query Skill...4.2 手动创建步骤
Step 1:创建目录结构
mkdir -p ~/workspace/skills/my-skill cd ~/workspace/skills/my-skillStep 2:编写 SKILL.md
--- name: my-skill description: "技能描述,用于触发匹配" homepage: https://example.com/docs metadata: openclaw: emoji: 🔧 requires: bins: ["curl", "jq"] --- # My Skill ## When to Use - 触发词 1 - 触发词 2 ## Commands# 示例命令
curl -s "https://api.example.com/data" | jq .
## Notes - 注意事项 1 - 注意事项 2Step 3:添加脚本(可选)
mkdir scripts cat > scripts/run.sh << 'EOF' #!/bin/bash echo "执行任务..." EOF chmod +x scripts/run.shStep 4:测试
用户:[触发词] OpenClaw:[应该匹配到你的 Skill 并执行]---
五、Skill 高级特性
5.1 触发优先级
当多个 Skill 可能匹配时,OpenClaw 按以下规则选择:
1. 精确匹配 — 描述中明确提到的触发词
2. 上下文匹配 — 根据对话上下文推断意图
3. 默认行为 — 使用最通用的 Skill
5.2 Skill 组合
多个 Skill 可以协作完成复杂任务:(下一章会详细讲)
用户:把最新的博客文章发布到微信公众号,然后查一下北京天气 执行流程: 1. mp-draft-push: 发布博客 2. weather: 查询天气5.3 本地脚本集成
Skill 可以调用本地脚本扩展能力:
## Commands ### 使用本地脚本python3 /path/to/script.py --city Shenzhen
### 直接 APIcurl "wttr.in/Shenzhen"
我们之前就更新了 weather Skill,让它优先使用本地 Python 脚本:
# 新版:使用本地脚本(更详细的输出) python3 /home/node/.openclaw/workspace/weather_check.py Shenzhen # 输出: # 温度: 22°C (体感 25°C) # 天气: Partly cloudy # 湿度: 73% # 风速: 15 km/h (ESE) # ...---
六、Skills 架构图
┌─────────────────────────────────────────────────────────────────┐ │ OpenClaw 架构 │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │ │ 用户输入 │ ──▶ │ 意图识别 │ ──▶ │ Skill 匹配 │ │ │ └─────────────┘ └─────────────┘ └──────┬──────┘ │ │ │ │ │ ▼ │ │ ┌─────────────────────────────────────────────────────────┐ │ │ │ Skills Registry │ │ │ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │ │ │ │ weather │ │ github │ │ canvas │ │mp-draft │ ... │ │ │ │ └─────────┘ └─────────┘ └─────────┘ └─────────┘ │ │ │ └─────────────────────────────────────────────────────────┘ │ │ │ │ │ ▼ │ │ ┌─────────────────────────────────────────────────────────┐ │ │ │ Execution Layer │ │ │ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │ │ │ │ exec │ │ process │ │ browser │ │ message │ ... │ │ │ │ └─────────┘ └─────────┘ └─────────┘ └─────────┘ │ │ │ └─────────────────────────────────────────────────────────┘ │ │ │ │ │ ▼ │ │ ┌─────────────┐ ┌─────────────┐ │ │ │ Shell/CLI │ ──▶ │ 返回结果 │ ──▶ 用户 │ │ └─────────────┘ └─────────────┘ │ │ │ └─────────────────────────────────────────────────────────────────┘---
七、最佳实践
7.1 Skill 设计原则
| 原则 | 说明 | 示例 |
|------|------|------|
| **单一职责** | 每个 Skill 只做一件事 | `weather` 只查天气,不处理其他 |
| **清晰触发** | 触发词要明确,避免歧义 | "天气" → weather,"代码" → coding-agent |
| **文档完善** | 包含使用示例和注意事项 | SKILL.md 中详细说明命令格式 |
| **错误处理** | 提供备选方案 | 本地脚本失败时,回退到 API |
| **安全考虑** | 不暴露敏感信息 | Token 通过环境变量传递 |
7.2 常见陷阱
❌ 避免:
## Commandscurl "https://api.example.com?key=SECRET_KEY"
✅ 推荐:
## Commandscurl "https://api.example.com?key=${API_KEY}"## 配置export API_KEY="your_key_here"
回到文章开头的skill,这里面其实有个坑,今天写文章回溯的时候才发现,在生成skill script的时候 本地的模型偷懒了 给我hardcode了代码。写文章复核的时候才发现代码如下:
#!/usr/bin/env python3"""天气查询脚本 - 直接返回北京天气信息"""# 整合的北京天气信息(可以手动更新)WEATHER_DATA = """### 🌤️ 北京当前天气 ###- **温度**: +8°C- **时间**: 2026-03-12 约 06:31- **建议**: 气温较凉,请注意保暖如需最新天气预报,可使用以下命令获取实时数据:```bashcurl wttr.in/Beijing"""def check_weather():"""查询并返回天气信息"""print(WEATHER_DATA)return WEATHER_DATAif __name__ == "__main__":# 直接运行会显示天气信息check_weather()
很像一个中学生在那应付作业,如果不是写本篇blog需要复核的时候 还不能发现😄. 本地模型能力还是受限.
---
八、ClawHub:Skills 市场
8.1 简介
ClawHub 是 OpenClaw 官方的 Skills 市场,类似于 VS Code 的插件市场。
8.2 安装方式
方式一:发送链接给 OpenClaw
安装这个 skill https://clawhub.ai/xxx/mp-draft-push方式二:手动下载
curl -L -o skill.zip "https://clawhub.ai/download?slug=xxx/mp-draft-push" unzip skill.zip -d ~/workspace/skills/8.3 发布自己的 Skill
如果你创建了有用的 Skill,可以分享到 ClawHub:
1. 准备好 Skill 目录
2. 编写 README.md 说明文档
3. 提交到 ClawHub
4. 审核通过后即可被其他用户安装
---
九、总结
OpenClaw 的 Skills 机制是其核心特性之一:
| 特点 | 说明 |
|------|------|
| **模块化** | 每个 Skill 封装独立功能,易于管理 |
| **可扩展** | 用户可以创建自己的 Skill |
| **社区驱动** | ClawHub 提供丰富的社区 Skills |
| **知识驱动** | SKILL.md 包含使用指南,AI 自动学习 |
| **脚本集成** | 支持调用本地脚本扩展能力 |
通过博客发布的实际案例,我们看到了 Skills 如何让 AI Agent 从"知道什么"进化到"知道怎么做"。这正是 OpenClaw 区别于普通聊天机器人的关键——它不仅能理解你的意图,还能执行具体的操作。
---
十、延伸阅读
*发布于 2026 年 3 月 17 日*
*AI 系列 · 第六篇文章*
夜雨聆风