乐于分享
好东西不私藏

OpenClaw 自定义 Skill 开发:把 AI 变成你的专属工具

OpenClaw 自定义 Skill 开发:把 AI 变成你的专属工具
NAS奇思妙想

OpenClaw 自定义 Skill 开发:把 AI 变成你的专属工具

作者:小高 | 公众号:nas奇思妙想
聚焦 OpenClaw / NAS / 自动化 玩法
导读: 你是否曾经遇到这种情况:每次让 AI 完成某个任务,都要重复说一堆背景信息?每次都要解释「我的文件放哪里」「我用什么账号」?OpenClaw 的 Skill 系统正是为解决这个问题而生的。

本文将从零开始,手把手教你开发一个自定义 Skill,让 AI 一听到某个关键词就自动加载你的专属工作流——就像给它装上了一个永久的记忆和能力包。

一、为什么你需要自定义 Skill?

先理解一个核心问题:OpenClaw 原生已经很强大了——它能操控浏览器、执行脚本、管理文件。那为什么还要自定义 Skill?

答案很简单:原生能力解决「通用问题」,Skill 解决「你的问题」

举几个真实场景:

  • 每次写公众号文章都要手动复制到微信后台?如果有一个 Skill 知道你的账号信息,一键自动排版发布……
  • 每天要检查服务器状态、备份 NAS 文件?写一个 Skill,让 AI 每天自动执行,你只需问「今天备份了吗?」
  • 你是程序员,每次要解释代码规范和项目结构?把规范写成 Skill,AI 永远记住。

核心价值: Skill 是 OpenClaw 的「能力扩展包」,本质上是一个配置文件 + 一段代码规范,告诉 AI 在什么场景下该用什么工具、遵循什么流程。写好后,AI 会在触发关键词时自动加载,整个过程无需你再重复说明。


二、Skill 的核心结构

一个 Skill 只需要两个核心文件,结构清晰到令人感动:

my-skill/
├── SKILL.md          # 灵魂文件:描述 Skill 的触发条件和使用方式
└── scripts/          # (可选)自定义脚本或工具
    └── my_tool.js

2.1 SKILL.md:Skill 的身份证

SKILL.md 是 OpenClaw 识别 Skill 的唯一入口,它的核心是一个 YAML 头信息:

yaml---
name: my-skill
description: "我的自定义Skill,一句话说明它是干什么的。
当用户提到这些关键词时,AI会自动加载本Skill:
-关键词1、关键词2、关键词3
"
---

# Skill 名称和说明

这里是 Skill 的详细使用说明,支持 Markdown 格式……

几个必须掌握的元字段:

字段作用示例
nameSkill 的唯一标识名my-skill
description触发关键词描述(AI 据此判断何时加载)详见上方
标题层级正文使用 # ## ### 分层组织内容结构

2.2 触发机制:关键词匹配

Skill 的触发完全基于 description 字段中的关键词匹配。当你说出相关内容时,AI 会:

  1. 1扫描所有已安装 Skill 的 description
  2. 2找出匹配度最高的 Skill
  3. 3加载其 SKILL.md 作为执行指引

这意味着你不需要「调用」Skill,只需要「描述你的需求」——AI 会自动推理出该用哪个 Skill。

设计原则: description 中的关键词要具体、准确,避免歧义。用具体场景而非抽象概念来描述触发条件效果最好。


三、实战:开发一个「NAS 状态监控」Skill

理论讲完了,现在来真格的。我们开发一个真实的 Skill:监控 NAS 运行状态、自动告警。

3.1 第一步:规划 Skill 能力

这个 Skill 需要做到:

  • 定时检查 NAS 的 CPU、内存、硬盘使用率
  • 当硬盘空间低于阈值时发出告警
  • 支持用自然语言查询:「NAS 当前状态怎么样?」
  • 告警信息推送到微信

3.2 第二步:创建 Skill 目录结构

在 OpenClaw 的 skills 目录下创建:

~/.qclaw/workspace/skills/nas-monitor/
├── SKILL.md
└── scripts/
    ├── nas_status.py       # 读取 NAS 状态(通过 SSH 或 API)
    └── alert_notify.py     # 发送告警通知

3.3 第三步:编写 SKILL.md

markdown---
name: nas-monitor
description: "NAS 状态监控与告警。当用户提到以下任一关键词时自动触发:
-NAS 状态、NAS 监控、NAS 检查
-群晖状态、威联通状态、NAS 健康
-硬盘状态、存储空间、NAS 告警
-备份状态、NAS 温度、NAS 日志
"
---

# NAS 状态监控 Skill

本 Skill 帮助你实时监控 NAS 运行状态,自动完成健康检查和异常告警。

## 工具集

本 Skill 提供以下能力,AI 可直接调用:

### 1. nas_status_check

读取 NAS 当前运行状态(CPU、内存、存储、硬盘 SMART)。
python

scripts/nas_status.py

import subprocess import json

NAS_HOST = "192.168.1.100"      # 替换为你的 NAS IP NAS_USER = "admin"               # NAS 用户名 NAS_PASS = "your_password"      # 推荐使用 SSH Key 替代密码

def get_nas_status(): """通过 SSH 获取 NAS 运行状态""" cmd = [ "ssh", f"{NAS_USER}@{NAS_HOST}", "cat /proc/cpuinfo | grep 'model name' | head -1; " "df -h; " "free -m; " "cat /sys/class/thermal/thermal_zone0/temp" ] result = subprocess.run(cmd, capture_output=True, text=True, env={"SSH_PASSWORD": NAS_PASS}) return result.stdout

def check_disk_health(): """检查硬盘 SMART 状态""" cmd = [ "ssh", f"{NAS_USER}@{NAS_HOST}", "smartctl -a /dev/sda 2>/dev/null | grep -E " "'SMART overall-health|Power_On_Hours|Reallocated_Sector'" ] result = subprocess.run(cmd, capture_output=True, text=True) return result.stdout

def main(): status = get_nas_status() health = check_disk_health() print(json.dumps({"status": status, "health": health}, ensure_ascii=False))

if __name__ == "__main__": main()


### 2. nas_alert_send

当检测到异常时,通过 Webhook 发送告警到微信或邮件。

python

scripts/alert_notify.py

import urllib.request import json import datetime

企业微信 Webhook 地址(替换为你自己的)

WEBHOOK_URL = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=YOUR_KEY" DINGTALK_WEBHOOK = "https://oapi.dingtalk.com/robot/send?access_token=YOUR_TOKEN"

def send_wechat_alert(title: str, message: str, level: str = "warning"): """发送企业微信告警""" color_map = {"info": "172703613", "warning": "16563350", "critical": "16733149"} color = color_map.get(level, "172703613")

payload = { "msgtype": "markdown", "markdown": { "content": ( f"### 🔔 NAS 告警 [{level.upper()}]\n" f"{title}\n\n{message}\n\n" f"> 📅 触发时间:{datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')}" ) } }

data = json.dumps(payload).encode("utf-8") req = urllib.request.Request( WEBHOOK_URL, data=data, headers={"Content-Type": "application/json"} ) with urllib.request.urlopen(req) as resp: return json.loads(resp.read())

def check_and_alert(status_data: dict, disk_threshold_gb: int = 100): """分析状态数据,必要时触发告警""" # 解析存储使用情况(df -h 输出示例解析) lines = status_data.get("status", "").split("\n") for line in lines: if "/volume1" in line or "volume1" in line.lower(): parts = line.split() if len(parts) >= 5: total, used, avail = parts[1], parts[2], parts[4] avail_gb = int(''.join(filter(str.isdigit, avail)))

if avail_gb < disk_threshold_gb: send_wechat_alert( title="⚠️ NAS 存储空间不足", message=f"可用空间仅剩 {avail_gb} GB,建议及时清理或扩容。\n" f"总容量:{total} | 已用:{used} | 可用:{avail}", level="warning" ) return {"checked": True, "alert_sent": False}


## 使用方式

### 自然语言查询

你:「NAS 当前状态怎么样?」 AI:调用 nas_status_check → 返回格式化结果: CPU:ARM Cortex-A57 四核 @ 1.7GHz 内存:2.1GB / 3.8GB(使用率 55%) 存储:12.5TB / 15TB(使用率 83%) 硬盘 SMART:健康 ✓


### 定时自动检查
配合 OpenClaw Cron 功能,设置每日早 9 点自动执行:

在 OpenClaw 中输入:

每天早上9点检查NAS状态,如果硬盘空间低于100GB就发微信告警


### 手动触发

你:「帮我查一下 NAS 温度和硬盘健康」 AI:执行 nas_status_check + check_disk_health,返回完整诊断报告


---

## 四、Skill 开发进阶技巧

### 4.1 让 Skill 记住你的个人配置

一个好的 Skill 应当支持灵活配置,而不是写死参数。在 SKILL.md 中预留配置插槽:

markdown

配置说明

本 Skill 支持以下环境变量,请在首次使用时设置:

变量名说明默认值
NAS_HOSTNAS IP 地址192.168.1.100
NAS_USERSSH 用户名admin
DISK_THRESHOLD_GB告警阈值(GB)100
WEBHOOK_URL告警 Webhook 地址无(必填)

### 4.2 错误处理:让 Skill 优雅地失败

python

def robust_execute(func, fallback_msg: str = "获取失败,请检查 NAS 连接"): """带错误处理的执行包装器""" try: return func() except subprocess.TimeoutExpired: return {"error": "NAS 连接超时,请检查网络"} except FileNotFoundError: return {"error": "未找到 ssh 命令,请安装 OpenSSH"} except Exception as e: return {"error": f"未知错误: {type(e).__name__}: {str(e)}"}


### 4.3 多 Skill 协作

OpenClaw 支持多个 Skill 同时生效。比如「NAS 监控」Skill 可以调用「腾讯云 API」Skill 的发送能力:

markdown

Skill 协作

本 Skill 产生的告警信息,会自动委托 cloud-notify Skill 发送到指定渠道。 确保 cloud-notify Skill 已安装并配置好腾讯云凭证。 ``


五、OpenClaw Skill 生态一览

目前社区已有大量成熟 Skill,覆盖各类场景:

类别代表 Skill功能
内容创作content-factory多 Agent 内容生产线,从选题到发布全自动化
文档处理pdfPDF 读取、合并、拆分、水印
数据分析neodata-financial-search自然语言金融数据查询
云端协作kdocs / tencent-docs金山文档 / 腾讯文档在线管理
天气出行weather-advisor智能天气顾问 + 出行建议
定时任务qclaw-cron-skill定时任务、提醒、日报自动推送
安全加固healthcheck`系统安全加固与风险评估

安装方式: 在 OpenClaw 中直接说「帮我安装 xxx Skill」,AI 会自动从 SkillHub 下载并配置。整个过程一行命令搞定,无需手动操作。


六、把你的 Skill 发布到社区

开发完自己的 Skill 后,如果你愿意,可以将它发布到 OpenClaw SkillHub 帮助其他人:

  1. 1将 Skill 整理成标准化格式(包含 SKILL.md + 示例脚本)
  2. 2编写 README.md,说明功能和使用方法
  3. 3打包成 GitHub 仓库
  4. 4提交到 SkillHub 社区

发布后,全球用户都能搜索到你的作品——这可能是你影响力最大的一次代码贡献。

一个好的 Skill 就是一份产品说明书。它不需要多复杂,只需要:触发条件清晰,执行结果可预期,配置项一目了然。 做到这三点,你的 Skill 就是好 Skill。


七、总结

今天我们从零认识了 OpenClaw Skill 系统:

  • ✅ Skill 是 OpenClaw 的能力扩展包,让 AI 记住专属工作流
  • ✅ 核心文件只有两个:SKILL.md(灵魂)+ scripts/(工具集)
  • ✅ 触发机制基于关键词自动匹配,无需手动调用
  • ✅ 从「NAS 监控」实战看到了完整开发流程
  • ✅ 社区已有丰富生态,安装只需一句话
  • Skill 让 AI 从「每次都要教」变成「一次学会,永远记住」
  • SKILL.md = 身份证 + 说明书,scripts/ = 工具集(可选)
  • 关键词要具体,用场景而非抽象概念描述触发条件
  • 好的 Skill = 触发清晰 + 结果可预期 + 配置简单
  • 社区生态丰富,安装简单(AI 一句话搞定)
  • 你也可以把自己的 Skill 发布到 SkillHub 帮助他人

💬 如果你在使用 OpenClaw 时遇到具体问题,欢迎在评论区留言,下期文章可能就是为你量身定制的解决方案!
关注公众号 「nas奇思妙想」,第一时间获取 OpenClaw 养虾技巧与自动化玩法。
 
 

■ END