400-638-8808
|
微信公众号




在 OpenClaw 中创建自定义技能(插件)的核心是遵循「模块化规范」编写技能代码(支持 Python/JavaScript/Bash 等),并通过 ClawHub 完成注册、测试与安装,整个流程分为”环境准备”、”技能开发”、”本地测试”、”发布安装”四个阶段,以下是新手友好的分步指南,附完整示例代码和避坑要点。
一、前置准备(必做)
1. 确认开发环境
- 已安装 OpenClaw 主程序(“claw version“ 验证);
- 安装技能开发工具包:
bash
安装官方技能脚手架(生成模板、校验规范)
npm install -g claw-skill-cli 推荐(跨语言)
或 Python 版本(适合 Python 开发者)
pip install claw-skill-creator
- 了解基础规范:OpenClaw 技能本质是「带元数据的可执行脚本」,核心包含 “skill.json“(元数据)+ 执行代码(如 “main.py“)。
2. 初始化技能模板(快速起步)
用脚手架生成标准化模板,避免手动配置:
bash
创建技能项目(交互式,按提示输入)
claw-skill init my-custom-skill
或直接指定参数(非交互式)
claw-skill init my-custom-skill \
--name "My Custom Skill" \
--description "自定义文件转换技能,将CSV转Markdown" \
--author "你的名字" \
--language python 支持 python/js/bash
执行后会生成如下目录结构(以 Python 为例):
my-custom-skill/
├── skill.json 技能元数据(必填)
├── main.py 核心执行逻辑(必填)
├── requirements.txt Python 依赖(可选)
├── tests/ 测试用例(可选)
└── README.md 使用说明(可选)
二、核心开发:编写自定义技能
以「CSV 转 Markdown」为例,完成 “skill.json“ 和 “main.py“ 的编写(最核心的两步)。
1. 配置元数据:“skill.json“(必填)
定义技能的基本信息、触发关键词、权限等,OpenClaw 会通过该文件识别技能:
json
{
"slug": "csv-to-markdown", // 技能唯一标识(小写+短横线,全局唯一)
"name": "CSV to Markdown", // 技能名称(显示用)
"description": "将本地CSV文件转换为结构化Markdown表格",
"version": "0.1.0",
"author": "你的名字",
"language": "python", // 执行语言
"triggers": [ // 触发关键词(AI 识别指令时匹配)
"csv转markdown",
"CSV to MD",
"转换CSV表格"
],
"permissions": [ // 所需权限(本地文件读写)
"file:read",
"file:write"
],
"entrypoint": "main.py", // 入口文件
"dependencies": { // 依赖(对应 requirements.txt)
"python": ["pandas>=2.0.0"]
}
}
2. 编写执行逻辑:“main.py“(核心)
实现技能的具体功能,OpenClaw 会调用 “execute“ 函数并传入指令参数:
python
import pandas as pd
import os
def execute(params):
"""
核心执行函数(必须定义)
:param params: OpenClaw 传入的参数,包含指令内容、用户配置等
示例 params = {
"input": "将桌面的data.csv转成markdown", 用户指令
"user_config": {}, 用户配置
"work_dir": "~/.openclaw/skills/work" 工作目录
}
:return: 执行结果(dict,包含状态、输出内容、文件路径等)
"""
try:
1. 解析用户指令,提取CSV文件路径
input_text = params.get("input", "")
简单解析:从指令中提取.csv文件路径(可优化为正则匹配)
csv_path = None
for part in input_text.split():
if part.endswith(".csv"):
csv_path = os.path.expanduser(part) 解析~为用户目录
break
if not csv_path or not os.path.exists(csv_path):
return {
"status": "error",
"message": f"未找到CSV文件:{csv_path},请检查路径是否正确"
}
2. 读取CSV并转换为Markdown
df = pd.read_csv(csv_path, encoding="utf-8")
md_content = df.to_markdown(index=False) 生成Markdown表格
3. 保存Markdown文件(同目录,替换后缀)
md_path = os.path.splitext(csv_path)[0] + ".md"
with open(md_path, "w", encoding="utf-8") as f:
f.write(md_content)
4. 返回执行结果(OpenClaw会展示给用户)
return {
"status": "success",
"message": f"CSV转换完成!",
"output": md_content, 直接返回内容
"files": [md_path] 返回生成的文件路径
}
except Exception as e:
异常捕获,返回错误信息(便于日志排查)
return {
"status": "error",
"message": f"转换失败:{str(e)}",
"error": str(e)
}
本地测试入口(可选,便于开发调试)
if __name__ == "__main__":
test_params = {
"input": "将~/Desktop/data.csv转成markdown"
}
result = execute(test_params)
print(result)
3. 配置依赖(可选)
若技能依赖第三方库(如示例中的 pandas),创建 “requirements.txt“:
txt
pandas>=2.0.0
python-markdown>=3.5
三、本地测试(关键步骤)
开发完成后先本地测试,确保技能能正常执行,避免安装后报错。
1. 本地运行测试
bash
进入技能目录
cd my-custom-skill
直接运行入口文件(测试基础逻辑)
python main.py
用 OpenClaw 测试命令(模拟真实调用)
claw skill test ./ 传入技能目录路径
按提示输入测试指令:"将~/Desktop/data.csv转成markdown"
2. 检查测试结果
- 若输出 “status: success“ 且生成 “.md“ 文件,说明逻辑正常;
- 若报错,根据终端提示修复(如缺少 pandas:“pip install pandas“)。
四、安装与发布(两种场景)
场景1:本地自用(无需发布到 ClawHub)
直接通过本地路径安装技能,适合个人定制:
bash
停止 OpenClaw 服务
claw stop
安装本地技能(指定技能目录路径)
clawhub install ./my-custom-skill
启动服务并验证
claw start
clawhub list 查看已安装技能,确认 csv-to-markdown 存在
场景2:发布到 ClawHub(共享/企业内使用)
若需分享给团队或公开,可发布到 ClawHub 仓库:
bash
登录 ClawHub(首次需注册)
clawhub login
发布技能(自动校验规范并上传)
clawhub publish ./my-custom-skill
发布后,他人可通过 slug 安装
clawhub install csv-to-markdown
五、调用自定义技能(验证效果)
安装完成后,通过指令触发自定义技能,验证是否生效:
bash
终端调用
claw run "将~/Desktop/data.csv转成markdown"
或聊天工具(如 Telegram)发送指令:
"用 csv-to-markdown 技能转换桌面的 data.csv 文件"
执行成功后,会收到如下反馈:
CSV转换完成!
生成文件:/Users/你的名字/Desktop/data.md
表格内容:
| 姓名 | 年龄 | 城市 |
||||
| 张三 | 25 | 北京 |
| 李四 | 30 | 上海 |
六、进阶技巧与避坑要点
1. 提升技能兼容性
- ”参数解析优化”:用正则表达式提取文件路径/关键词,而非简单分割;
- ”异常处理”:捕获文件编码、格式错误等常见问题(如 “encoding="gbk"“ 兼容中文 CSV);
- ”权限声明”:技能所需权限必须在 “skill.json“ 中声明,否则会被 OpenClaw 拦截。
2. 常见问题解决
- ”安装失败”:检查 “skill.json“ 格式(用 “jsonlint ./skill.json“ 校验)、slug 是否重复;
- ”调用无响应”:查看日志 “claw logs -s csv-to-markdown“,定位执行错误;
- ”依赖安装失败”:在 “requirements.txt“ 中指定具体版本,避免版本冲突。
3. 复杂技能开发建议
- ”多步骤任务”:拆分逻辑为多个函数,避免 “execute“ 函数过于冗长;
- ”配置持久化”:通过 “params["user_config"]“ 读取用户配置(如默认输出路径);
- ”多语言支持”:若需兼容 JS/Shell,可参考官方模板(“claw-skill init my-skill --language js“)。
总结
1. 创建 OpenClaw 自定义技能的核心是编写 “skill.json“(元数据)和 “main.py“(执行逻辑),脚手架可快速生成标准化模板;
2. 开发流程为「初始化→写逻辑→本地测试→本地安装/发布」,优先本地测试避免线上问题;
3. 自定义技能需声明权限、做好异常处理,调用时通过关键词触发,日志是排查问题的核心工具。
如果需要针对特定场景(如「浏览器自动化」「API 调用」)编写自定义技能,我可以提供对应的完整代码模板和测试用例。
下一篇 :没有了
天下数据手机站 关于天下数据 联系我们 诚聘英才 付款方式 帮助中心 网站备案 解决方案 域名注册 网站地图
天下数据18年专注海外香港服务器、美国服务器、海外云主机、海外vps主机租用托管以及服务器解决方案-做天下最好的IDC服务商
《中华人民共和国增值电信业务经营许可证》 ISP证:粤ICP备07026347号
朗信天下发展有限公司(控股)深圳市朗玥科技有限公司(运营)联合版权
深圳总部:中国.深圳市南山区深圳国际创新谷6栋B座10层 香港总部:香港上環蘇杭街49-51號建安商業大廈7樓
7×24小时服务热线:4006388808香港服务电话:+852 67031102
本网站的域名注册业务代理北京新网数码信息技术有限公司的产品