作者:mpoll.top 发布时间:2026-04-08 9 次浏览
欢迎来到 OpenClaw 的世界!Skill 是 OpenClaw 的核心概念,它定义了 AI 助手如何完成特定任务。本文将带你从零开始,创建你的第一个 Skill,让你快速上手 OpenClaw 的开发流程。
无论你是开发者、产品经理,还是 AI 爱好者,都能通过本文学会如何配置一个实用的 Skill。
---
Skill 是 OpenClaw 中定义 AI 助手行为的配置文件。它告诉 AI:
一个完整的 Skill 通常包含:
skill-name/
├── SKILL.md # 核心配置文件(必需)
├── script.js # 自定义脚本(可选)
├── templates/ # 模板文件(可选)
├── assets/ # 资源文件(可选)
└── README.md # 使用说明(推荐)
# 在 workspace 中创建 Skill 目录
cd /Users/wanghaiyin/.openclaw/workspace
mkdir -p skills/hello-world
在 `skills/hello-world/` 目录下创建 `SKILL.md`:
# Hello World Skill
描述
这是一个简单的问候 Skill,用于学习 OpenClaw 的基本配置。
触发条件
当用户说以下任意内容时触发:
- "你好"
- "hello"
- "打个招呼"
执行步骤
- 获取当前时间
- 根据时间选择合适的问候语
- 返回问候消息
输出格式
返回一句友好的问候语,包含当前时间信息。
# 在 OpenClaw 中测试
openclaw skills test hello-world
或在对话中直接说"你好",观察 AI 的响应。
SKILL.md 使用 Markdown 格式,包含以下核心部分:
# Skill 名称
描述
简要说明 Skill 的用途和功能
触发条件
定义什么情况下触发这个 Skill
执行步骤
详细的任务执行流程
工具使用
需要调用的工具列表
输出格式
期望的输出格式和示例
#### 1. 描述(Description)
清晰说明 Skill 的用途,帮助 AI 理解何时使用:
## 描述
这个 Skill 用于查询天气预报。支持查询当前天气和未来 7 天预报,
可以指定城市和使用摄氏度/华氏度单位。
#### 2. 触发条件(Triggers)
定义触发 Skill 的条件,可以是:
## 触发条件
关键词触发
当消息包含以下关键词时触发:
- 天气
- 预报
- 气温
意图触发
当用户表达以下意图时触发:
- 询问天气情况
- 想知道要不要带伞
- 计划户外活动
命令触发
当用户使用以下命令时触发:
- /weather [城市]
- 天气 [城市]
#### 3. 执行步骤(Steps)
详细说明任务执行流程:
## 执行步骤
- 解析用户输入
- 提取城市名称(默认使用用户当前位置)
- 识别时间范围(今天/明天/本周)
- 确定温度单位(摄氏/华氏)
- 调用天气 API
- 使用 wttr.in 或 Open-Meteo API
- 传入城市和参数
- 处理 API 响应
- 格式化输出
- 提取关键信息(温度、天气状况、降水概率)
- 生成友好的文字描述
- 添加穿衣建议
- 返回结果
- 以简洁格式呈现
- 包含必要细节
- 提供后续建议
#### 4. 工具使用(Tools)
列出需要的工具:
## 工具使用
- `web_search`:搜索天气相关信息
- `web_fetch`:获取天气网站数据
- `exec`:运行本地天气脚本
- `message`:发送通知给用户
#### 5. 输出格式(Output)
定义输出格式和示例:
## 输出格式
成功响应
🌤️ 北京天气
当前:23°C,晴
最高:28°C,最低:18°C
降水概率:10%
空气质量:良
建议:适合户外活动,记得防晒!
### 错误响应
⚠️ 无法获取天气信息
原因:城市名称无效或网络错误
建议:请检查城市名称后重试
# 天气预报 Skill
描述
查询全球任意城市的当前天气和未来预报。支持多种单位和语言。
触发条件
- 用户询问天气("今天天气怎么样"、"北京下雨吗")
- 用户提到城市 + 天气关键词
- 用户使用/weather 命令
执行步骤
1. 参数提取
- 从用户输入中提取城市名
- 如果没有指定城市,使用默认城市(北京)
- 识别用户需要的信息类型(当前/预报)
2. 数据获取
- 调用 `web_fetch` 获取 wttr.in 数据
- URL 格式:https://wttr.in/{城市}?format=j1
- 处理 JSON 响应
3. 数据处理
- 提取当前温度、天气状况
- 提取最高/最低温度
- 提取降水概率、风速等
4. 结果呈现
- 使用 emoji 增强可读性
- 添加生活建议(穿衣、出行)
- 提供未来趋势
工具使用
- `web_fetch`:获取天气数据
- `nodes.location_get`:获取用户位置(可选)
输出格式
参考上方"输出格式"部分
测试 1:基本查询
输入:"北京天气"
预期:返回北京当前天气
测试 2:带城市查询
输入:"上海明天会下雨吗"
预期:返回上海明天的降水概率
测试 3:默认城市
输入:"今天天气怎么样"
预期:返回默认城市天气
测试 4:无效城市
输入:"火星天气"
预期:友好提示无法找到该城市
在 SKILL.md 中使用变量传递信息:
## 执行步骤
- 获取用户信息:`$user.name`
- 获取当前位置:`$location.city`
- 获取当前时间:`$datetime.now`
根据不同情况执行不同流程:
## 执行步骤
如果用户询问今天天气:
→ 执行当前天气查询
如果用户询问预报:
→ 执行 7 天预报查询
如果城市无效:
→ 返回错误提示并建议
优雅地处理各种错误情况:
## 错误处理
- API 超时:提示网络问题,建议重试
- 城市无效:列出相似城市供选择
- 数据异常:说明情况并提供替代方案
## 多语言
支持语言:中文、English
检测用户语言,使用对应语言回复:
- 中文输入 → 中文回复
- English input → English response
openclaw skills test hello-world --verbose
在 SKILL.md 中添加调试说明:
## 调试信息
执行时输出:
- 提取的参数值
- 调用的 API 和响应
- 处理过程中的关键节点
创建测试用例文件:
## 测试用例
输入 | 预期输出 | 状态
|------|---------|------|
"你好" | 问候语 | ✅
"hello" | 问候语 | ✅
| "123" | 忽略 | ✅ |
Skill 创建后自动在本地可用,无需额外配置。
# 打包 Skill
openclaw skills package hello-world
发布到 ClawHub
openclaw skills publish hello-world
# 搜索 Skill
openclaw skills search weather
安装 Skill
openclaw skills install weather
恭喜你完成了第一个 Skill!接下来可以:
A: 检查触发条件是否明确,尝试在对话中使用触发关键词。
A: 使用 `openclaw skills test --verbose` 查看详细日志。
A: 可以,使用 `web_fetch` 或 `exec` 工具调用外部服务。
A: 没有,你可以创建任意数量的 Skill。
相关文档:
社区资源:
上一篇: Claude 宪法 AI 原理:AI 安全的新范式
没有了,已经是最新文章