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

—— https://www.80aj.com