2026.05.26 | youres | 14次围观
为什么需要自定义OpenClaw技能?
OpenClaw之所以强大,核心在于它的技能(Skill)系统。官方内置的技能覆盖了很多场景,但实际工作中,你总会遇到"我想让AI帮我做XXX,但它做不到"的情况。
这时候,自定义技能就是答案。不需要深厚的编程基础,只要懂一点JavaScript/Node.js,你就能为OpenClaw扩展任意能力——从自动化办公、数据抓取,到接入私有API、控制智能家居。
技能的本质:一个SKILL.md文件
OpenClaw的技能系统设计非常巧妙:它不需要你写复杂的插件代码,只需要一个SKILL.md文件,配合可选的脚本文件夹。
当OpenClaw接收到用户消息时,它会:
- 扫描所有已安装技能的
SKILL.md - 根据技能描述(description字段)判断哪个技能适用
- 读取该技能的
SKILL.md完整内容作为系统提示词的一部分 - 按照SKILL.md中的指令执行任务
创建你的第一个技能:文件批量重命名工具
假设你想让AI帮你批量重命名文件(比如给一堆图片按顺序命名为image_001.jpg、image_002.jpg...)。我们来一步步创建这个技能。
第一步:创建技能目录
~/.qclaw/skills/my-rename-tool/
├── SKILL.md # 技能说明(核心文件)
└── scripts/ # 可选:辅助脚本
└── rename.js第二步:编写SKILL.md
这是最关键的部分。SKILL.md的前置元数据(YAML front matter)告诉OpenClaw"这个技能是干什么的",正文部分则作为系统提示词,指导AI如何执行任务。
第三步:编写辅助脚本(可选)
对于复杂操作,可以在scripts/目录下编写Node.js脚本。
// scripts/rename.js
const fs = require("fs");
const path = require("path");
const targetDir = process.argv[2] || ".";
const prefix = process.argv[3] || "file";
const files = fs.readdirSync(targetDir).filter(f => !fs.statSync(path.join(targetDir, f)).isDirectory());
files.forEach((file, index) => {
const ext = path.extname(file);
const newName = prefix + "_" + String(index + 1).padStart(3, "0") + ext;
fs.renameSync(path.join(targetDir, file), path.join(targetDir, newName));
console.log(file + " → " + newName);
});让技能更智能:最佳实践
| 实践要点 | 说明 | 示例 |
|---|---|---|
| 精准的description | 描述要具体,避免过于宽泛导致误触发 | ✅ "批量重命名文件工具,支持顺序编号" ❌ "文件处理工具" |
| 清晰的执行步骤 | 在SKILL.md中用标题、列表、代码块明确每一步 | 用### 步骤1:确认需求格式 |
调试技巧:如何验证技能是否生效?
- 检查技能列表:在OpenClaw中询问"你有哪些技能?",看看你的技能是否出现在列表中
- 查看触发条件:用触发词测试,观察OpenClaw是否调用了你的技能
- 迭代优化:如果技能没有被触发,检查description是否足够具体
总结
OpenClaw的技能系统将"AI能力扩展"的门槛降到了极低:你不需要懂机器学习,不需要训练模型,只需要写一个SKILL.md文件,就能让AI学会任何你想要的技能。
这种设计的精妙之处在于:技能的本质是"给AI的使用说明书",而不是传统的插件代码。这让技能的创建、分享、修改变得异常简单——任何人都能成为AI能力的"编程者"。
版权声明
本文仅代表个人观点。
本文系AI辅助作者原创,未经许可,转载请保留原文链接。

发表评论