乐于分享
好东西不私藏

OpenClaw 技能开发完全指南:从0到1打造你的专属AI能力

OpenClaw 技能开发完全指南:从0到1打造你的专属AI能力

OpenClaw 技能开发完全指南:从0到1打造你的专属AI能力

OpenClaw 最强大的地方在于它的可扩展性。通过 Skill 系统,你可以给 OpenClaw 增加任何你需要的能力。今天我们就来手把手教你如何开发一个属于自己的 OpenClaw Skill。

一、什么是 OpenClaw Skill?

Skill 是 OpenClaw 的能力扩展单元,每个 Skill 专注于解决一类特定问题。你可以把它理解为 OpenClaw 的"插件"或者"应用"。

举个例子:

  • 📅 飞书日历 Skill:让 OpenClaw 可以管理你的日程安排
  • 📱 微信公众号 Skill:让 OpenClaw 可以一键发布文章到公众号
  • 🌤️ 天气 Skill:让 OpenClaw 可以查询天气信息
  • 🎵 音乐 Skill:让 OpenClaw 可以控制你的智能家居播放音乐

理论上,只要你能想到的功能,都可以通过 Skill 的方式集成到 OpenClaw 中。

二、Skill 的核心设计理念

1. 单一职责原则

每个 Skill 只做一件事,并且把这件事做好。不要试图开发一个"万能 Skill",功能越单一,越容易维护和复用。

2. 声明式配置

Skill 的所有功能都通过配置文件声明,不需要修改核心代码。OpenClaw 会自动加载和识别 Skill。

3. 可组合性

Skill 之间可以互相调用,组合出更复杂的功能。比如一个"会议安排 Skill"可以调用"日历 Skill"和"消息 Skill"来完成完整的会议邀约流程。

4. 安全第一

所有 Skill 的运行都在严格的权限控制下,用户可以精确控制每个 Skill 可以访问的资源和可以调用的工具。

三、Skill 的基本结构

一个标准的 OpenClaw Skill 目录结构如下:

my-awesome-skill/├── SKILL.md              # 技能描述、使用指南和元数据(必需)├── _meta.json            # 技能元数据(自动生成或手动配置)├── scripts/              # 可执行脚本目录│   ├── install.sh        # 安装脚本(可选)│   ├── run.sh            # 主执行脚本(必需)│   └── utils.sh          # 工具函数(可选)├── references/           # 参考文档、配置模板等│   ├── config.example.md│   └── api-docs.md├── tests/                # 测试用例│   └── test-basic.sh└── assets/               # 静态资源(图片、样式等,可选)    └── icon.png

核心文件说明

1. SKILL.md(必需)

这是 Skill 的核心文件,包含了 Skill 的所有元信息和使用说明。格式如下:

---name: my-awesome-skilldescription: "这是我的第一个 OpenClaw Skill,功能是XXX"metadata:  {    "openclaw":      {        "emoji": "🎉",        "version": "1.0.0",        "author": "你的名字",        "category": "工具",      },  }---# 我的第一个 Skill## 功能介绍详细描述这个 Skill 能做什么。## 快速开始### 1. 安装依赖需要安装什么软件、配置什么环境。### 2. 使用方法如何调用这个 Skill,参数说明。## 配置说明需要配置哪些环境变量或参数。## 故障排查常见问题和解决方案。

2. _meta.json(必需)

技能的元数据配置,告诉 OpenClaw 如何加载和使用这个 Skill:

{"name":"my-awesome-skill","description":"我的第一个 OpenClaw Skill","version":"1.0.0","author":"你的名字","triggers":["帮我XXX","执行YYY","调用ZZZ功能"],"tools":["exec","read","write"],"permissions":{"files":["~/.openclaw/workspace/my-skill-data/*"],"network":["https://api.example.com/*"]},"entrypoint":"./scripts/run.sh"}

3. scripts/run.sh(必需)

Skill 的主执行脚本,当 Skill 被触发时,OpenClaw 会调用这个脚本。可以是任何可执行文件,Shell、Python、Node.js 都可以。

四、开发第一个 Skill:天气查询 Skill

让我们通过一个实际的例子来学习如何开发 Skill。我们要做一个可以查询天气的 Skill,用户说"帮我查一下北京的天气",OpenClaw 就会调用我们的 Skill 返回天气信息。

第一步:创建 Skill 目录结构

# 创建 Skill 目录mkdir -p ~/.openclaw/workspace/skills/weather-skill/{scripts,references,tests,assets}# 进入目录cd ~/.openclaw/workspace/skills/weather-skill

第二步:编写 SKILL.md

---name: weather-skilldescription: "查询天气信息,支持全球主要城市"metadata:  {    "openclaw":      {        "emoji": "🌤️",        "version": "1.0.0",        "author": "你的名字",        "category": "生活服务",      },  }---# 天气查询 Skill## 功能介绍查询全球主要城市的实时天气、温度、湿度、风力等信息。## 快速开始直接说:"帮我查一下 [城市名] 的天气" 即可。示例:- "帮我查一下北京的天气"- "上海今天天气怎么样?"- "明天纽约会下雨吗?"## 配置说明不需要额外配置,使用 wttr.in 公开 API。## 数据来源天气数据来自 https://wttr.in

第三步:编写 _meta.json

{"name":"weather-skill","description":"查询天气信息,支持全球主要城市","version":"1.0.0","author":"你的名字","triggers":["帮我查一下.*天气",".*天气怎么样",".*会下雨吗",".*气温多少度"],"tools":["exec","web_fetch"],"permissions":{"network":["https://wttr.in/*"]},"entrypoint":"./scripts/run.sh"}

第四步:编写执行脚本 scripts/run.sh

#!/usr/bin/env bash# 天气查询 Skill 主脚本set -e# 从用户输入中提取城市名extract_city() {local input="$1"# 简单的城市提取逻辑,可以根据需要扩展if [[ "$input" =~ 查一下(.*)的天气 ]]; thenecho"${BASH_REMATCH[1]}" | sed 's/^ *//;s/ *$//'elif [[ "$input" =~ (.*)天气怎么样 ]]; thenecho"${BASH_REMATCH[1]}" | sed 's/^ *//;s/ *$//'elif [[ "$input" =~ (.*)的气温 ]]; thenecho"${BASH_REMATCH[1]}" | sed 's/^ *//;s/ *$//'else# 默认城市echo"Beijing"fi}# 查询天气get_weather() {local city="$1"# 调用 wttr.in API,返回简洁格式的天气信息    curl -s "https://wttr.in/${city}?format=3"}# 主逻辑main() {local user_input="$1"local city=$(extract_city "$user_input")echo"🌤️ 正在查询 ${city} 的天气..."local weather=$(get_weather "$city")echo""echo"✅ ${city} 天气:${weather}"echo""echo"💡 提示:如果城市名不对,可以明确说"帮我查一下XX市的天气""}# 运行main "$@"

第五步:给脚本添加执行权限

chmod +x scripts/run.sh

第六步:测试 Skill

# 测试脚本./scripts/run.sh "帮我查一下北京的天气"

如果一切正常,你会看到类似这样的输出:

🌤️ 正在查询 北京 的天气...✅ 北京 天气:北京: ⛅️  +15°C💡 提示:如果城市名不对,可以明确说"帮我查一下XX市的天气"

第七步:让 OpenClaw 识别新 Skill

OpenClaw 会自动扫描 ~/.openclaw/workspace/skills/ 目录下的 Skill,你只需要重启 OpenClaw 或者执行:

openclaw skills reload

现在你就可以和 OpenClaw 说"帮我查一下上海的天气",它会自动调用我们刚开发的 Skill 了!

五、Skill 开发进阶技巧

1. 触发词优化

在 _meta.json 的 triggers 字段中,你可以使用正则表达式来匹配用户的输入。比如:

"triggers":["^帮我查一下.*天气$",".*(天气|气温|下雨|刮风).*","^今天.*几度$"]

匹配越精确,Skill 被错误触发的概率就越低。

2. 权限控制

在 permissions 字段中,你可以精确控制 Skill 可以访问的资源:

"permissions":{"files":["~/.openclaw/workspace/weather-skill/*","/tmp/*.txt"],"network":["https://api.weather.com/*","https://wttr.in/*"],"tools":["exec","read","write","web_fetch"]}

如果 Skill 尝试访问不在权限列表中的资源,OpenClaw 会拦截并提示用户授权。

3. 配置管理

对于需要配置的 Skill,推荐使用环境变量或者配置文件的方式:

# 从环境变量读取 API KeyAPI_KEY="${WEATHER_API_KEY}"# 从配置文件读取CONFIG_FILE="$HOME/.openclaw/config/weather-skill.json"if [ -f "$CONFIG_FILE" ]; then    API_KEY=$(jq -r '.api_key'"$CONFIG_FILE")fi

4. 错误处理

良好的错误处理可以让你的 Skill 更加健壮:

# 检查 curl 是否安装if ! command -v curl &> /dev/null; thenecho"❌ 错误:需要先安装 curl"echo"💡 安装命令:brew install curl 或者 apt install curl"exit 1fi# 检查网络请求是否成功response=$(curl -s -w "%{http_code}""https://api.example.com/weather")http_code=$(tail -n1 <<< "$response")content=$(sed '$ d' <<< "$response")if [ "$http_code" != "200" ]; thenecho"❌ 查询失败,API 返回错误:${http_code}"exit 1fi

5. 国际化支持

如果你的 Skill 需要支持多语言,可以根据系统语言返回不同的内容:

# 获取系统语言LANG="${LANG:-en_US.UTF-8}"if [[ "$LANG" == zh_CN* ]]; thenecho"你好"elseecho"Hello"fi

六、Skill 发布和分享

1. 本地安装

用户只需要把 Skill 目录放到 ~/.openclaw/workspace/skills/ 目录下,重启 OpenClaw 即可使用。

2. 发布到 ClawHub

ClawHub 是 OpenClaw 的官方 Skill 市场,你可以把你的 Skill 发布上去,让更多人使用:

  1. 创建一个 GitHub 仓库,上传你的 Skill 代码
  2. 在 ClawHub 网站提交你的仓库地址
  3. 审核通过后,其他用户就可以通过 openclaw skills install your-skill-name 来安装了

3. 版本管理

推荐使用语义化版本号:主版本号.次版本号.修订号

  • 主版本号:不兼容的 API 变更
  • 次版本号:新增功能,向下兼容
  • 修订号:Bug 修复,向下兼容

七、Skill 开发最佳实践

✅ 推荐做法

  1. 文档优先:先写好 SKILL.md,再写代码
  2. 小步迭代:先实现核心功能,再逐步优化
  3. 充分测试:编写测试用例,确保在不同环境下都能正常运行
  4. 友好提示:出错时给出明确的错误信息和解决方案
  5. 尊重隐私:不要收集用户数据,所有数据处理都在本地完成
  6. 轻量化:尽量少依赖外部服务,降低使用门槛

❌ 不推荐做法

  1. 不要在 Skill 中硬编码敏感信息(API Key、密码等)
  2. 不要开发功能过于复杂的大 Skill,尽量拆分成多个小 Skill
  3. 不要调用外部服务时不做错误处理
  4. 不要在没有提示的情况下修改用户的文件或系统配置
  5. 不要收集或上传用户的任何数据

八、开发工具推荐

1. 调试工具

# 查看 Skill 加载情况openclaw skills list# 手动触发 Skillopenclaw skills run weather-skill "帮我查一下北京的天气"# 查看 Skill 日志openclaw skills logs weather-skill

2. 模板生成

你可以使用官方的 Skill 模板快速创建新项目:

openclaw skills create my-new-skill --template basic

九、Skill 生态

目前 OpenClaw 已经有丰富的 Skill 生态:

办公类

  • 飞书全系列 Skill(日历、文档、多维表格、消息)
  • 企业微信 Skill
  • Slack/Discord/Telegram 消息 Skill
  • Google Workspace Skill

内容创作类

  • 微信公众号发布 Skill
  • 小红书运营 Skill
  • 抖音/视频号 Skill
  • Markdown 转各种格式 Skill

开发工具类

  • GitHub/GitLab 管理 Skill
  • 代码生成 Skill
  • 部署自动化 Skill
  • 服务器监控 Skill

生活服务类

  • 天气查询 Skill
  • 日历提醒 Skill
  • 智能家居控制 Skill
  • 交通出行查询 Skill

写在最后

Skill 系统是 OpenClaw 的灵魂,它让 OpenClaw 从一个简单的聊天机器人变成了一个真正可以帮你解决实际问题的个人助理。

每个人的需求都是独特的,你不需要等待别人开发你需要的功能,通过 Skill 系统,你可以完全按照自己的需求来打造专属的 AI 助理。

如果你开发了好用的 Skill,欢迎分享到 ClawHub,让更多人受益。

现在就动手开发你的第一个 Skill 吧! 🚀


想了解更多 OpenClaw 开发相关的内容,可以访问官方文档:https://docs.openclaw.ai[1]

引用链接

[1]https://docs.openclaw.ai