AI创想
标题:
OpenClaw Skill 开发全攻略|2026 最新机制 + 文件处理实操,看完直接落地开发
[打印本页]
作者:
AI小编
时间:
4 天前
标题:
OpenClaw Skill 开发全攻略|2026 最新机制 + 文件处理实操,看完直接落地开发
作者:CSDN博客
OpenClaw Skill 开发全攻略|2026 最新机制 + 文件处理实操,看完直接落地开发
文章目录
OpenClaw Skill 开发全攻略|2026 最新机制 + 文件处理实操,看完直接落地开发
一、核心认知:什么是 OpenClaw Skill?二、Skill 开发核心原则(新手必看,避坑关键)三、推荐开发流程(新手优先用户技能目录,最省心)
步骤 1:创建技能目录步骤 2:编写核心文件(SKILL.md + 可选代码)步骤 3:测试验证(关键一步,避免发布后出问题)步骤 4:发布到社区(可选,分享你的技能)
四、基础示例:纯 SKILL.md 技能(新手入门首选,零代码)
1. 编写 SKILL.md 文件2. 测试纯文本技能
五、进阶示例:带 Python 代码的 Skill(实现复杂功能)
1. 创建技能目录结构2. 编写 SKILL.md(关联代码逻辑)3. 编写 Python 代码(agent.py)4. 测试代码型 Skill
六、实用场景:文件处理类 Skill 开发指南(高频刚需,重点掌握)
6.1 为什么文件处理 Skill 这么重要?6.2 推荐目录位置(三种可选,新手优先第一种,最省心)6.3 最简单版:纯 SKILL.md(零代码,AI 自动执行脚本)
6.3.1 编写 SKILL.md 文件6.3.2 测试纯文本文件处理 Skill
6.4 进阶版:带 Python 代码辅助(推荐批量/复杂文件操作)
6.4.1 创建目录结构6.4.2 编写 Python 代码(agent.py)
OpenClaw 之所以能成为极具扩展性的开源 AI Agent,核心在于其 Skill 扩展机制。不同于传统 Agent 需通过严格 API 对接扩展功能,OpenClaw 的 Skill 仅需“文件夹 + 自然语言描述文件”就能实现——AI 能通过阅读描述自动理解何时调用、如何使用该技能,极大降低了开发门槛,哪怕是普通用户,也能轻松打造专属 AI 能力。
结合我实际开发和踩坑的经验,本文将从核心认知、开发流程、基础/进阶示例、社区发布等维度,完整拆解 OpenClaw 自定义 Skill 的开发全流程,帮你快速上手,少走弯路,真正把 AI 能力落地到日常使用中。
一、核心认知:什么是 OpenClaw Skill?
很多新手刚接触时,会把 Skill 想得很复杂,其实大可不必。OpenClaw 中的每个 Skill,本质就是一套“能力描述 + 执行逻辑”的组合包,简单说就是“告诉 AI 你能做什么、怎么做,它就会调用你”,核心特征可以总结为这几点,好记又实用:
核心载体:以文件夹为单位,不管多简单的 Skill,文件夹里都必须有 SKILL.md 文件——这是 AI 识别技能的唯一依据,少了它,再完善的代码也没用;
扩展文件:根据需求可选,比如用 Python 写执行逻辑就加 agent.py,用 TypeScript 就加 index.ts,需要放示例、说明文档就建 references 文件夹,不复杂;
核心优势:AI 靠读 SKILL.md 的自然语言理解技能,不用严格遵循固定的代码接口,灵活度极高——哪怕你改了代码逻辑,只要更新 SKILL.md 的描述,AI 就能适配;
加载优先级:OpenClaw 加载技能有固定顺序,高优先级会覆盖低优先级,新手记好这3个即可,避免出现“写了技能却调用不到”的问题:
工作区技能:/skills/,适合团队协作,同一个项目的技能放在这里,不会影响全局;
用户技能:~/.openclaw/skills/,个人级技能,推荐新手优先用这个,不用改任何项目配置,创建好就能用;
内置技能:OpenClaw 安装时自带的基础能力,比如文件读写、浏览器操作,我们自定义的技能可以补充或覆盖这些功能。
二、Skill 开发核心原则(新手必看,避坑关键)
开发前先把这3个原则记牢,能帮你避开80%的坑,不用等到测试时才发现问题,返工耗时:
SKILL.md 是绝对核心:不管你要不要写代码,SKILL.md 都必须完整。AI 能不能正确识别场景、调用技能,全看这份描述——哪怕代码写得再完美,SKILL.md 描述模糊,AI 也不知道什么时候该用;
描述越详细,AI 执行越精准:重点写清“什么时候用、怎么用、遇到异常怎么处理”,多举几个实际用户会说的指令示例,AI 对具体示例的理解,远比对抽象描述的理解更到位;
权限一定要明确:如果技能需要文件读写、网络访问、执行 Shell 命令等权限,务必在 SKILL.md 里写清楚。一方面方便其他用户判断技能的安全性,另一方面也符合社区发布规范,不然技能没法发布到 ClawHub。
三、推荐开发流程(新手优先用户技能目录,最省心)
新手不用纠结复杂的配置,优先用“用户技能目录”(~/.openclaw/skills/)开发,步骤简单,全程用终端操作,3步就能搭建好技能的基础框架:
(, 下载次数: 0)
上传
点击文件名下载附件
步骤 1:创建技能目录
先通过终端创建独立的技能文件夹,文件夹名称建议简洁,用小写字母+横杠,比如 my-weather-skill(天气查询技能),避免用中文或特殊符号,防止出现路径识别问题。具体命令如下,新手可以直接复制粘贴执行:
# 1. 创建用户技能目录(若不存在则自动创建,不用担心重复执行报错)mkdir -p ~/.openclaw/skills/
# 2. 创建具体技能文件夹(以“天气查询”技能为例,可替换为自己的技能名称)mkdir -p ~/.openclaw/skills/my-weather-skill
# 3. 进入技能目录,准备编写SKILL.md和代码文件cd ~/.openclaw/skills/my-weather-skill
复制代码
步骤 2:编写核心文件(SKILL.md + 可选代码)
根据自己的需求选择开发方式:如果只是简单的查询、固定回复、基础文件操作,用纯 SKILL.md 就够了(新手入门首选);如果需要实现批量操作、调用外部 API、格式转换等复杂功能,再搭配 Python/TypeScript 代码,具体示例后面会详细说,跟着做就能上手。
步骤 3:测试验证(关键一步,避免发布后出问题)
技能写好后,一定要测试,不然不知道 AI 能不能正常调用。这里有个新手常踩的坑,记好:修改 SKILL.md 不用重启 Gateway,系统会自动监听文件变化,大概30秒内就能刷新;但修改代码文件(比如 agent.py)后,必须重启 Gateway,否则修改不会生效。具体测试步骤:
重启 OpenClaw Gateway(修改代码必做,纯 SKILL.md 可跳过):终端执行 openclaw gateway restart;
发送测试指令:通过网页 Dashboard(http://127.0.0.1:18789/)或常用的聊天工具(WhatsApp/Telegram),发送你在 SKILL.md 里写的示例指令,比如“查一下北京今天的天气”;
排查问题:如果 AI 没调用技能,或执行失败,终端执行 openclaw logs,或在 Dashboard 的“Logs”板块查看错误信息,大多是 SKILL.md 描述不清晰,或代码有语法错误。
步骤 4:发布到社区(可选,分享你的技能)
如果技能测试稳定,没有bug,也想分享给其他用户使用,可以发布到 ClawHub(OpenClaw 官方技能市场),其他用户一键就能安装,不用再手动创建目录、编写文件,后面会详细说发布步骤。
四、基础示例:纯 SKILL.md 技能(新手入门首选,零代码)
很多新手看到“开发”就怕写代码,其实纯 SKILL.md 就能实现很多简单又实用的技能,比如查询、指令分发、保存聊天总结等。不用写一行代码,只要把 SKILL.md 写清楚,AI 会自动生成脚本执行,下面以“全球天气查询”技能为例,全程演示,新手可以直接复制修改使用。
1. 编写 SKILL.md 文件
在 my-weather-skill 目录下,创建 SKILL.md 文件,内容分为“固定元数据头”和“详细描述”两部分——元数据头是 AI 优先读取的信息,必须完整,详细描述则要写清技能的所有逻辑,具体内容如下,关键部分我加了注释,方便理解和修改:
---
# 固定元数据头(必须完整,AI 优先读取,缺一不可)
name: weather-query # 技能唯一名称,小写字母+横杠,不要重复
description: 查询全球主要城市实时天气,支持中文查询(含温度、天气状况、湿度、风力) # 技能简短描述,让用户一眼知道能做什么
version: 1.0.0 # 版本号,后续更新可升级,比如1.0.1
author: 你的名字 # 填写自己的名字或昵称,发布到社区会显示
permissions: 网络访问权限(用于调用天气 API) # 技能所需权限,明确标注
---
# Weather Query Skill(技能名称,可自定义,建议和name对应,更清晰)
## 1. Description(技能详细说明,让AI知道这个技能的具体作用)
当用户询问天气相关问题时,使用此技能查询实时天气数据,以清晰、友好的中文格式返回结果,不用多余的英文,帮助用户快速了解目标城市的天气情况,比如温度、天气状况、湿度、风力,必要时补充温馨提示。
## 2. When to use(触发场景:明确AI什么时候该调用这个技能,多举实际示例)
- 用户说:“北京今天天气怎么样?”
- 用户说:“上海明天会下雨吗?”
- 用户说:“纽约当前温度是多少?”
- 用户说:“成都后天的天气预报”
- 用户说:“帮我查一下广州近 3 天的天气”
- 用户说:“深圳今天热不热,需要穿外套吗?” # 补充更贴近日常的指令
## 3. How to use(调用逻辑:教AI怎么使用这个技能,按步骤写,越清晰越好)
1. 从用户消息中提取2个核心信息,缺一不可:
- 目标城市(必须,比如“北京”“上海”“纽约”,如果是国外城市,优先用中文名称);
- 查询时间(可选,默认“今天”,支持“明天”“后天”“近3天”,超过3天提示“长期预报精度有限”);
2. 调用 OpenClaw 内置的天气查询工具,或公开的天气 API 获取实时数据(不用手动写API调用代码,AI会自动处理);
3. 整理数据并返回,格式固定,用户看着清晰:
- 开头明确“城市 + 时间”(比如“北京 2026年2月10日 天气”);
- 核心信息:温度(默认摄氏度,国外城市也用摄氏度,符合中文用户习惯)、天气状况(晴/雨/多云等)、湿度、风力;
- 结尾补充温馨提示(比如“今日有雨,建议带伞”“气温较低,注意保暖”);
4. 若未提取到城市,主动追问用户,语气友好,比如“请告诉我具体要查询的城市名称,我帮你查实时天气~”。
## 4. Edge cases(边缘场景:处理异常情况,避免技能执行失败,提升用户体验)
- 模糊地点(如“家附近”“公司旁边”):回复“请告诉我具体城市名称,以便准确查询天气,比如北京、上海”;
- 未支持城市(如小众县城、偏远地区):回复“暂不支持该城市的天气查询,建议尝试省会或主要城市,比如查询石家庄天气”;
- 未来多天查询(如“深圳近一周天气”):优先返回未来3天概览,说明“长期预报精度有限,仅作参考”;
- 无网络情况:回复“当前网络不可用,无法查询天气,请检查网络连接后重试哦”;
- 输入错误(如“北京”“上嗨”):自动纠正,比如“你是不是想查北京的天气?我帮你查询北京的实时天气~”。
复制代码
2. 测试纯文本技能
纯 SKILL.md 技能测试很简单,新手跟着做,不用怕出错:
确保 OpenClaw Gateway 已启动(若未启动,终端执行 openclaw gateway,启动成功后会提示“Gateway running”);
发送测试指令:在聊天工具或 Dashboard 里,发送“帮我查一下北京今天的天气”,不用加多余的内容,和 SKILL.md 里的示例指令一致即可;
验证结果:如果 AI 能正确返回北京的天气信息,还有温馨提示,说明技能生效;如果没调用技能,检查 SKILL.md 中“When to use”的场景描述,是不是示例不够具体,或表述模糊,修改后等待30秒刷新,再重新测试。
五、进阶示例:带 Python 代码的 Skill(实现复杂功能)
纯 SKILL.md 适合简单场景,但如果需要执行具体操作——比如生成文件、调用外部 API、批量处理文件、操作本地设备,就需要搭配代码实现了。Python 是最常用的,语法简单,适配性好,下面以“生成二维码”技能为例,演示“SKILL.md + Python 代码”的完整开发流程,新手也能跟着复刻。
(, 下载次数: 0)
上传
点击文件名下载附件
1. 创建技能目录结构
带代码的技能,目录结构要规范一点,方便后续维护和发布,避免文件杂乱。以“生成二维码”技能为例,目录结构如下,新手可以直接照搬:
~/.openclaw/skills/generate-qr-code/ # 技能根目录,名称用小写字母+横杠
├── SKILL.md # 核心描述文件(必须有,和纯文本技能一致)
├── agent.py # Python 执行逻辑(核心代码文件,实现生成二维码的功能)
└── references/ # 辅助资源文件夹(可选,放示例图片、说明文档)
└── example-qr.png # 示例二维码图片(用于说明技能效果,可选)
复制代码
2. 编写 SKILL.md(关联代码逻辑)
和纯文本技能的 SKILL.md 相比,带代码的技能需要多加一个“Implementation”部分,告诉 AI 什么时候调用代码、怎么调用、参数怎么对应,具体内容如下,可直接复制修改:
---
name: generate-qr-code # 技能唯一名称,和目录名称对应
description: 生成二维码/条形码,支持文本、URL、WiFi 配置等内容,可自定义尺寸、颜色并指定保存路径
version: 1.0.0
author: 你的名字
permissions: 文件写入权限(用于保存二维码图片) # 生成二维码需要保存到本地,必须声明此权限
---
# Generate QR Code Skill(生成二维码技能)
## 1. Description
当用户需要将文本、URL、WiFi 信息等转换为可视化二维码时,使用此技能生成二维码图片,并保存到指定路径(默认保存到桌面,适配 Windows/macOS/Linux 多系统),支持自定义尺寸和颜色,生成成功后告知用户保存路径,方便查找。
## 2. When to use(触发场景,多举日常使用示例,AI更容易识别)
- 用户说:“帮我把 https://openclaw.ai 生成二维码”
- 用户说:“生成一个包含 WiFi 信息的二维码,名称:MyWiFi,密码:12345678”
- 用户说:“生成黑色二维码,内容是‘Hello OpenClaw’,保存到 D 盘根目录”
- 用户说:“帮我做一个 400px 大小的二维码,内容是我的手机号 13800138000”
- 用户说:“生成红色二维码,内容是‘2026项目会议纪要’,保存到桌面,尺寸 500px”
## 3. How to use(调用逻辑,明确什么时候调用代码,参数怎么提取)
1. 从用户消息中提取核心参数,区分必选和可选,避免遗漏:
- 必选:生成内容(文本/URL/WiFi 信息,WiFi 格式需为“WIFI:S:名称;T:类型;P:密码;;”,比如“WIFI:S:MyWiFi;T:WPA;P:12345678;;”);
- 可选:尺寸(默认 300px,范围 100-1000px,超出范围提示“尺寸建议在100-1000px之间”)、颜色(默认黑色,支持英文颜色名或十六进制色值,如 #FF0000 红色)、保存路径(默认桌面);
2. 若用户未指定可选参数,直接使用默认值,不用追问用户;
3. 调用 agent.py 中的 generate_qr 异步函数,将提取到的参数传入,执行生成操作(必须调用代码,AI 不单独执行生成逻辑);
4. 返回结果:生成成功后,告知用户二维码保存路径,比如“二维码生成成功!已保存到:~/Desktop/qr_code.png”;若生成失败,说明具体原因,比如“指定路径无写入权限,请更换保存路径(如桌面)”。
## 4. Implementation(代码关联说明,新手重点看,明确参数对应关系)
- 依赖库:qrcode(生成二维码的核心库)、Pillow(图片处理,调整尺寸、颜色);
- 核心函数:async def generate_qr(text: str, size: int = 300, color: str = "black", save_path: str = None);
- 参数说明(和上面的提取参数对应,AI 会自动匹配):
- text:二维码内容(必选,不能为空,为空会返回失败提示);
- size:二维码尺寸(单位 px,默认 300,超出100-1000px范围会自动调整为300);
- color:填充颜色(默认 black,支持英文颜色名如 red、blue,或十六进制色值如 #FF0000);
- save_path:保存路径(默认桌面,文件名默认 qr_code.png,用户指定路径则按用户要求保存)。
## 5. Edge cases(边缘场景,覆盖常见错误,提升稳定性)
- 内容为空:回复“请提供需要生成二维码的内容(如文本、URL、WiFi 信息),我马上为你生成”;
- 保存路径无权限:回复“指定路径无写入权限,请更换保存路径(如桌面),或提升文件写入权限”;
- 未安装依赖库:自动尝试安装 qrcode 和 Pillow,若安装失败,提示用户手动执行“pip install qrcode pillow”;
- 特殊字符内容(如中文、特殊符号):自动过滤无效字符,确保二维码可正常识别,生成后提示用户“已过滤无效字符,二维码可正常扫描”;
- 尺寸超出范围:回复“尺寸建议在100-1000px之间,已自动调整为默认300px,生成二维码”。
复制代码
3. 编写 Python 代码(agent.py)
核心是实现 generate_qr 异步函数(必须是 async 异步函数,否则 OpenClaw 调度会阻塞,导致技能执行失败),加入参数校验、异常捕获、多系统适配,代码里加了详细注释,新手能看懂每一步的作用,可直接复制使用,无需修改:
import qrcode
from PIL import Image
import os
import subprocess
import sys
# 自动安装依赖库(用户可能没安装qrcode和Pillow,避免手动安装麻烦,新手友好)definstall_dependencies():
required_packages =["qrcode","pillow"]for package in required_packages:try:__import__(package)# 检查库是否已安装except ImportError:# 自动安装缺失的库,终端会显示安装过程,用户可看到进度
subprocess.check_call([sys.executable,"-m","pip","install", package])
复制代码
原文地址:https://blog.csdn.net/haolove527/article/details/157655550
欢迎光临 AI创想 (https://llms-ai.com/)
Powered by Discuz! X3.4