创建你的第一个OpenClaw Skill
分类: OpenClaw实战 标签: Skill, 开发, 扩展, 技能 日期: 2026-02-12 阅读时间: 5分钟
上周一个朋友问我:OpenClaw能写代码、查天气、控制音乐,还能不能自己加功能?
我说:能,写个Skill就行。
他说:Skill?那得懂编程吧?
我说:不用,Skill其实就是个配置文件,写几行JSON就能搞。
今天聊聊如何创建你的第一个OpenClaw Skill——把AI变成你专属的工具库。
Skill是OpenClaw的扩展机制。
简单说:你告诉OpenClaw"这个工具怎么用",它就能调用。
举个例子:
- 内置工具:
read(读文件)、write(写文件)、web_search(搜索网页) - 自定义Skill: 你创建的工具,比如调用公司内部API、访问特定服务、执行自定义脚本
Skill的价值:
- 不等官方支持,自己动手
- 封装复杂逻辑,AI调用更简单
- 私有工具,只给你自己用
最简单的方式:写个shell脚本,告诉OpenClaw路径。
场景: 公司内部有个天气API,不对外公开。
步骤1:写脚本
#!/bin/bash
# ~/.openclaw/skills/company-weather.sh
API_KEY="your-company-api-key"
CITY="$1"
curl -s "https://weather.company.com/api?city=$CITY&key=$API_KEY" | jq .
步骤2:创建Skill配置
{
"name": "company-weather",
"description": "查询公司内部天气API",
"execute": {
"kind": "shell",
"command": "~/.openclaw/skills/company-weather.sh {city}"
},
"parameters": {
"city": {
"type": "string",
"description": "城市名称",
"required": true
}
}
}
步骤3:把配置放到Skill目录
mkdir -p ~/.openclaw/skills
cp skill.json ~/.openclaw/skills/company-weather.json
chmod +x ~/.openclaw/skills/company-weather.sh
完成! 现在你可以对AI说"查询北京的天气",它会调用这个脚本。
更强大的方式:创建一个SubAgent,作为独立的Skill使用。
场景: 需要一个AI专门处理客服工单。
步骤1:创建SubAgent配置
{
"name": "ticket-processor",
"description": "处理客服工单的专用AI",
"agentId": "main", // 继承主会话的模型和配置
"prompt": "你是客服工单处理专家。根据用户输入,分析工单内容,分类并给出处理建议。",
"tools": ["read", "write"], // 限制可用的工具
"memoryEnabled": true,
"maxTurns": 20
}
步骤2:注册Skill
{
"name": "process-ticket",
"description": "处理客服工单",
"execute": {
"kind": "subagent",
"sessionLabel": "ticket-processor",
"timeoutSeconds": 120
},
"parameters": {
"ticketContent": {
"type": "string",
"description": "工单内容",
"required": true
}
}
}
步骤3:部署
cp skill.json ~/.openclaw/skills/process-ticket.json
openclaw gateway restart
完成! 现在对AI说"处理这个工单:客户反馈产品有bug",它会启动SubAgent专门处理。
说个真实的例子。
我刚开始用OpenClaw时,想要一个功能:每天自动生成每日待办清单,并发送到我的微信。
内置工具做不到,所以我写了个Skill。
SubAgent配置(todo-generator.json):
{
"name": "todo-generator",
"description": "生成每日待办清单",
"prompt": "根据用户的输入,生成今日待办清单。格式:1. 任务名称(预计时间)",
"memoryEnabled": true,
"maxTurns": 5
}
发送脚本(send-wechat.sh):
#!/bin/bash
MESSAGE="$1"
# 假设你有微信CLI工具
wechat-cli send --user "your_userid" --message "$MESSAGE"
Skill配置:
{
"name": "generate-daily-todo",
"description": "生成并发送每日待办清单到微信",
"execute": {
"kind": "subagent",
"sessionLabel": "todo-generator",
"postProcess": {
"kind": "shell",
"command": "~/.openclaw/skills/send-wechat.sh {output}"
}
},
"parameters": {
"priorities": {
"type": "array",
"description": "优先级事项(可选)",
"required": false
}
}
}
现在我对AI说:“生成今天的待办,优先级:写代码、写文章、健身”
它会:
- 调用SubAgent生成待办清单
- 调用脚本发送到微信
- 返回结果:“已发送到你的微信”
省事多了! 每天不用手动写清单。
有些配置不应该硬编码,用环境变量:
# ~/.openclaw/skills/.env
export WECHAT_USER_ID="your_userid"
export COMPANY_API_KEY="your_key"
{
"execute": {
"kind": "shell",
"command": "source ~/.openclaw/skills/.env && ~/.openclaw/skills/send-wechat.sh {message}"
}
}
脚本应该有错误处理:
#!/bin/bash
set -e # 遇到错误就退出
if [ -z "$1" ]; then
echo "错误:缺少参数"
exit 1
fi
# 执行逻辑
记录Skill的执行日志:
#!/bin/bash
LOG_FILE="~/.openclaw/skills/logs/skill.log"
echo "[$(date)] 执行skill: company-weather, 参数: $1" >> "$LOG_FILE"
如果Skill调用的是付费API,加个限制:
{
"execute": {
"kind": "shell",
"command": "~/.openclaw/skills/call-api.sh {query}",
"rateLimit": {
"maxCallsPerHour": 10
}
}
}
(注意:这是示例配置,实际实现需要看OpenClaw文档)
A:
- 内置工具: OpenClaw自带,无需配置
- 自定义Skill: 你自己创建,封装特定逻辑
A: 可以。Shell脚本可以是Python、Node、Ruby等,只要能执行就行。
#!/usr/bin/env python3
# ~/.openclaw/skills/skill.py
import sys
print(f"收到参数: {sys.argv[1]}")
A: SubAgent Skill可以,它继承了内置工具。Shell脚本Skill直接调用,需要你自己实现。
A: 不会。Skill只在你自己的OpenClaw实例上使用,不会上传到公开的Skill市场。
我写过几个Skill,有些经验分享:
别一上来就写复杂系统。先写个简单的,比如"查询特定API",跑通了再加功能。
如果是复杂的逻辑处理,用SubAgent比纯脚本好。AI能理解、推理、处理异常。
写完Skill,先手动测试:
~/.openclaw/skills/company-weather.sh 北京
确保脚本本身没问题,再让AI调用。
给Skill写个README,说明:
- 依赖什么
- 怎么安装
- 怎么使用
三个月后你自己都不记得这个Skill怎么写的,文档救你。
Skill这东西,看着是"编程",其实更像是"配置"。
- 不需要是程序员
- 不需要复杂架构
- 不需要发布到市场
核心思想: 把你经常用到的逻辑封装起来,让AI一调用就跑。
下一步:
- 想一个你觉得有用的Skill
- 写个简单的shell脚本测试
- 创建Skill配置文件
- 在OpenClaw中测试
相关阅读:
喜欢这篇文章?订阅"小龙虾日报",每周推送OpenClaw技巧! 链接在右上角,免费订阅~ 🦞