OpenClaw 的强大之处,不仅在于内置的丰富功能,更在于它支持自定义技能扩展。无论你是开发者还是普通用户,都可以通过编写技能文件,为 AI 助手添加任何你需要的能力。本文将手把手教你从零开始开发自定义技能。
什么是 OpenClaw 技能?
OpenClaw 技能(Skill)是一组结构化的指令和工具定义,通过 Markdown 文件(SKILL.md)组织。它告诉 AI 在什么场景下应该如何行动、可以使用哪些工具、如何与用户交互。技能可以非常简单地只定义几个提示词,也可以复杂到包含完整的脚本工具链。
技能文件结构
每个技能由一个 SKILL.md 文件定义,基本结构如下:
---
name: my-skill
description: 技能的简短描述,说明何时使用此技能
---
# 技能名称
这里是技能的详细说明和使用指引。
## 使用场景
- 场景一
- 场景二
## 工具说明
定义技能可用的工具和参数。
## 示例
提供使用示例,帮助用户理解技能用法。
开始创建你的第一个技能
步骤一:创建技能目录
在 OpenClaw 的工作目录下创建技能文件夹:
mkdir -p skills/my-first-skill
cd skills/my-first-skill
步骤二:编写技能文件
创建 SKILL.md 文件:
---
name: daily-summary
description: 生成每日工作摘要,帮助用户回顾一天的工作进展
---
# 每日摘要生成器
这是一个帮助用户整理每日工作的技能。
## 功能特点
- 自动收集今日完成的任务
- 生成结构化的工作摘要
- 支持导出为多种格式
## 使用方法
当用户说"生成今日摘要"、"整理一下今天的工作"或类似表达时触发此技能。
## 输出格式
1. **今日完成**:列出所有已完成的任务
2. **进行中**:正在处理的事项
3. **明日计划**:建议的后续工作
4. **时间统计**:各任务耗时占比
## 示例输出
> ## 📋 今日工作摘要
> **完成**:3/5 项任务
> - ✅ 撰写周报
> - ✅ 回复客户邮件
> - ✅ 代码评审
>
> **进行中**:2 项
> - 🔄 性能优化
> - 🔄 文档编写
进阶:添加工具函数
技能可以调用外部工具,实现更强大的功能。创建一个 tools.js 文件:
/**
* OpenClaw 自定义技能工具示例
* 文件路径: skills/my-first-skill/tools.js
*/
module.exports = {
// 获取今日日期
getDate: () => {
return new Date().toLocaleDateString('zh-CN', {
year: 'numeric',
month: 'long',
day: 'numeric'
});
},
// 格式化任务列表
formatTasks: (tasks) => {
return tasks.map((task, index) => {
const status = task.completed ? '✅' : '⬜';
return `${status} ${index + 1}. ${task.name}`;
}).join('\n');
},
// 计算完成率
calcCompletionRate: (tasks) => {
const completed = tasks.filter(t => t.completed).length;
return Math.round((completed / tasks.length) * 100) + '%';
}
};
然后在 SKILL.md 中引用这些工具:
---
name: task-tracker
description: 任务追踪与进度管理
---
# 任务追踪技能
实时追踪任务完成情况,自动计算进度和统计。
## 可用工具
| 工具名 | 功能 |
|--------|------|
| getDate | 获取当前日期 |
| formatTasks | 格式化任务列表 |
| calcCompletionRate | 计算完成率 |
## 触发关键词
- "追踪任务"、"查看进度"
- "完成了哪些工作"
- "任务统计"
技能分类最佳实践
为了保持技能库的组织清晰,建议按功能分类管理:
skills/
├── productivity/ # 生产力工具
│ ├── daily-summary/
│ ├── task-tracker/
│ └── calendar-assist/
├── development/ # 开发工具
│ ├── git-helper/
│ ├── code-review/
│ └── api-tester/
├── content/ # 内容创作
│ ├── blog-writer/
│ └── social-poster/
└── utility/ # 通用工具
├── file-organizer/
└── note-taker/
技能编写技巧
- 描述要精准:让 AI 能准确判断何时该触发这个技能
- 示例要丰富:提供多种场景的使用示例
- 边界要清晰:明确技能的适用范围和限制
- 版本要管理:记录技能更新历史,便于回溯
调试与测试
技能编写完成后,通过以下方式测试:
- 在 OpenClaw 中启用该技能
- 使用触发关键词测试
- 检查输出是否符合预期
- 根据测试结果迭代优化
分享与社区
开发完成的自定义技能后,可以:
- 通过 OpenClaw 内置的技能市场分享给其他用户
- 提交到 GitHub 社区仓库
- 整理成教程博客帮助更多人
总结
自定义技能让 OpenClaw 的能力变得无限可能。无论你是想自动化日常办公、开发技术工具,还是创建娱乐应用,都可以通过技能系统实现。现在开始动手,打造专属于你的 AI 助手吧!
如果你开发出了有趣的技能,欢迎在评论区分享。关注我们,获取更多 OpenClaw 使用技巧和技能开发教程!
