OpenClaw 的超能力:技能系统
OpenClaw 内置 50+ 技能,但最强大的功能是:你可以自己创建技能。
一个技能是什么?
- 一个脚本(Bash/Python/JavaScript)
- 一个配置文件(JSON)
- 一个说明文档(README)
就这么简单。
本文教你创建一个完整的技能:GitHub 统计助手。
功能:
- 获取仓库 Star 数
- 分析最近 7 天的 Issue
- 生成周报
第一步:创建技能目录
cd my-agent/skills
mkdir github-stats
cd github-stats
目录结构:
github-stats/
├── SKILL.md # 技能说明
├── config.json # 技能配置
├── main.sh # 主脚本
└── README.md # 使用文档
第二步:编写配置文件
config.json:
{
"name": "github-stats",
"version": "1.0.0",
"description": "GitHub 仓库统计分析",
"author": "Your Name",
"permissions": [
"network",
"file_read"
],
"environment": {
"GITHUB_TOKEN": "required"
},
"commands": {
"stats": "获取仓库统计",
"issues": "分析最近 Issue",
"report": "生成周报"
}
}
第三步:编写主脚本
main.sh:
#!/bin/bash
REPO=$1
ACTION=$2
GITHUB_TOKEN=$3
case $ACTION in
stats)
echo "📊 仓库统计:$REPO"
curl -s -H "Authorization: token $GITHUB_TOKEN" \
"https://api.github.com/repos/$REPO" | \
jq '{stars: .stargazers_count, forks: .forks_count, issues: .open_issues_count}'
;;
issues)
echo "🔍 最近 7 天的 Issue:"
curl -s -H "Authorization: token $GITHUB_TOKEN" \
"https://api.github.com/repos/$REPO/issues?since=$(date -d '7 days ago' -u +%Y-%m-%dT%H:%M:%SZ)" | \
jq '.[] | {title, state, created_at}'
;;
report)
echo "📝 生成周报..."
# 生成 Markdown 周报
;;
esac
第四步:测试技能
chmod +x main.sh
./main.sh openclaw/openclaw stats $GITHUB_TOKEN
输出:
{
"stars": 1234,
"forks": 567,
"issues": 89
}
✅ 技能工作正常!
第五步:集成到 Agent
修改 Agent 的 config.json:
{
"tools": [
{
"name": "github-stats",
"path": "skills/github-stats",
"commands": ["stats", "issues", "report"]
}
]
}
第六步:使用技能
启动 Agent 后,你可以说:
“帮我看看 openclaw/openclaw 仓库的统计”
Agent 会自动调用你的技能:
{
"tool": "github-stats",
"command": "stats",
"args": ["openclaw/openclaw"]
}
技能开发最佳实践
1. 错误处理
#!/bin/bash
set -euo pipefail # 遇到错误立即退出
handle_error() {
echo "❌ 错误: $1"
exit 1
}
# 检查依赖
command -v jq >/dev/null 2>&1 || handle_error "需要安装 jq"
command -v curl >/dev/null 2>&1 || handle_error "需要安装 curl"
# 检查参数
[ -z "$1" ] && handle_error "请提供仓库地址"
2. 日志记录
LOG_FILE="/tmp/github-stats.log"
log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" >> "$LOG_FILE"
}
log "开始分析仓库: $REPO"
3. 缓存机制
CACHE_DIR="/tmp/github-stats-cache"
CACHE_TTL=3600 # 1 小时
get_cached() {
local key=$1
local cache_file="$CACHE_DIR/$key.json"
if [ -f "$cache_file" ]; then
local cache_age=$(($(date +%s) - $(date +%s -r "$cache_file")))
if [ $cache_age -lt $CACHE_TTL ]; then
cat "$cache_file"
return 0
fi
fi
return 1
}
set_cached() {
local key=$1
local data=$2
mkdir -p "$CACHE_DIR"
echo "$data" > "$CACHE_DIR/$key.json"
}
发布你的技能
1. 推送到 GitHub
git init
git add .
git commit -m "Add github-stats skill"
git remote add origin https://github.com/your-username/openclaw-skill-github-stats.git
git push -u origin main
2. 发布到 ClawHub
openclaw skill publish
你的技能会出现在 clawhub.com,其他人可以安装:
openclaw skill install github-stats
真实案例
我开发了 3 个技能:
1. blog-watcher
- 功能: 监控 50 个技术博客,每天汇总新文章
- 开发时间: 2 小时
- 使用次数: 每天 10+ 次
- GitHub Stars: 127
2. invoice-generator
- 功能: 自动生成发票,支持 PayPal、Stripe
- 开发时间: 3 小时
- 节省时间: 每月 5 小时
- GitHub Stars: 89
3. git-activity-report
- 功能: 生成团队 Git 活动周报
- 开发时间: 1.5 小时
- 使用人数: 公司 20+ 工程师
- GitHub Stars: 203
总计开发时间: 6.5 小时
总计节省时间: 每月 30+ 小时
ROI: 1 小时开发 = 每月节省 5 小时
进阶:技能组合
单个技能有限,组合技能威力无穷。
场景: 每天早上自动生成 GitHub 活动报告
{
"workflow": "daily-github-report",
"schedule": "0 9 * * *", # 每天早上 9 点
"steps": [
{
"skill": "github-stats",
"command": "activity",
"args": ["openclaw/openclaw"]
},
{
"skill": "data-analyzer",
"command": "trend",
"args": ["7 days"]
},
{
"skill": "email-notifier",
"command": "send",
"args": ["[email protected]"]
}
]
}
一个工作流,完成全自动化。
常见问题
Q: 可以用 Python 写技能吗?
A: 可以。OpenClaw 支持任何语言,只要脚本是可执行的。只需要在脚本开头加 #!/usr/bin/env python3。
Q: 技能可以调用 API 吗?
A: 可以。技能有网络权限,可以调用任何 HTTP API。
Q: 如何调试技能?
A: 使用 openclaw skill test your-skill --debug,会打印详细日志。
总结
OpenClaw 技能开发:
- ✅ 简单 - 会写脚本就能开发
- ✅ 强大 - 可以做任何事
- ✅ 可分享 - 发布到 ClawHub
- ✅ 高 ROI - 1 小时开发,每月节省 5 小时
你的想象力是唯一限制。
相关文章:
技能模板库: github.com/openclaw/skills