1. SKILL.md 文件编写规范解析
1.1 技能文件夹结构详解
一个标准的Skill文件夹通常包含以下四个组成部分,其中只有SKILL.md是必须存在的核心文件:
-
SKILL.md:技能的核心指令文件,采用Markdown格式编写。这是整个技能包中唯一必须存在的文件,其他目录和文件都是可选的辅助内容。文件命名必须严格遵循大写字母规范,写成
SKILL.md(全大写),写成skill.md或Skill.md都会导致系统无法识别。 -
scripts/:存放与技能相关的脚本代码。例如数据校验脚本、格式转换工具等。这个目录下的文件通常用于处理复杂的逻辑运算或数据转换任务。建议使用Python或Shell脚本编写,确保跨平台兼容性。
-
references/:存放技能相关的参考资料。比如行业规范文档、品牌手册、API接口文档等。这个目录的作用是将冗长的技术文档与核心指令分离,保持SKILL.md的简洁性。
-
assets/:存放技能使用的模板和素材文件。例如报告模板、Logo图片、预设配置文件等。这些素材文件会被技能在执行过程中调用或引用。
重要提示:文件夹命名必须使用小写字母加短横线的形式(如
data-processor),避免使用空格、大写字母或特殊字符。这是为了确保在不同操作系统下的兼容性。
1.2 SKILL.md文件结构剖析
SKILL.md文件由两个关键部分组成:
头部信息(YAML Front Matter)
位于文件最开头,用三个短横线---包裹的YAML格式元数据。必须包含以下两个字段:
markdown复制---
name: weekly-report # 技能名称,使用小写字母和短横线
description: 生成周报文档。当用户提到"周报"、"本周总结"、"工作汇报"时触发。
---
名称规范:
- 全部小写字母
- 单词间用短横线连接
- 避免使用特殊字符和空格
- 长度控制在3-5个单词为宜
描述字段的黄金法则:
描述字段是技能能否被准确调用的关键,必须包含三个要素:
- 核心功能:用一句话说明技能的主要用途
- 触发条件:列举具体的触发关键词或场景
- 能力范围:简要说明技能能完成的具体任务类型
好的描述案例:
"将Markdown转换为美观的PDF文档。当用户要求'转换成PDF'、'导出为PDF'、'打印格式'时使用。支持调整页边距、添加页眉页脚、设置代码高亮样式。"
差的描述案例:
"处理文档转换。"
正文指令
采用标准Markdown语法编写,包含AI执行任务所需的具体步骤和规则。好的指令应该:
- 分步骤明确:将复杂任务拆解为清晰的步骤序列
- 包含容错处理:说明遇到各种异常情况时的处理方式
- 定义成功标准:明确每个步骤完成的标准是什么
- 引用外部资源:大段参考资料应该放在references目录,在指令中注明引用位置
markdown复制## 数据处理流程
1. **数据验证**
- 必须检查输入数据是否包含以下字段:id, name, timestamp
- 如果缺少必填字段,返回错误:"缺少必要字段,请检查输入数据"
- 验证timestamp格式是否为ISO 8601标准(YYYY-MM-DDTHH:MM:SS)
2. **数据转换**
- 将name字段统一转为首字母大写格式
- 将timestamp转换为本地时区(参考references/timezone.md)
- 如果转换失败,保留原始值并添加警告标记
3. **结果输出**
- 生成JSON格式报告
- 包含处理成功的记录数和失败的记录数
- 输出文件保存到assets/reports/目录下
1.3 优秀SKILL.md案例分析
以PDF处理技能为例,我们来分析一个优秀的技能定义:
markdown复制---
name: pdf-processor
description: 处理PDF文件的各种操作。当用户提到"合并PDF"、"拆分PDF"、"PDF转文本"、"PDF加水印"时使用。支持页面旋转、加密解密、表格提取、OCR识别等操作。
---
## PDF处理能力
### 1. 基础操作
- 合并多个PDF文件为一个
- 按页码或书签拆分PDF
- 旋转页面(90/180/270度)
- 添加文字/图片水印
### 2. 内容提取
- 提取文本内容(保留原始排版)
- 提取表格数据(输出为CSV/Excel)
- 提取嵌入图片(保存为PNG/JPG)
### 3. 高级功能
- 加密/解密PDF(使用AES-256算法)
- 填写PDF表单(需要模板文件)
- OCR识别(处理扫描版PDF)
## 实现方案
### Python库方案
```python
# 合并PDF示例
from pypdf import PdfMerger
merger = PdfMerger()
for pdf in ["file1.pdf", "file2.pdf"]:
merger.append(pdf)
merger.write("merged.pdf")
merger.close()
命令行方案
bash复制# 使用qpdf合并文件
qpdf --empty --pages file1.pdf file2.pdf -- merged.pdf
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
注意事项
- 加密操作需要用户提供密码
- OCR识别需要额外安装Tesseract
- 表格提取可能不适用于复杂排版
code复制
这个案例的优秀之处在于:
1. 描述字段明确列出了多个触发关键词
2. 功能分类清晰(基础/提取/高级)
3. 提供了不同技术实现的代码示例
4. 注明了可能遇到的问题和前置条件
## 2. OpenClaw新特性深度解析
### 2.1 权限管理问题解决方案
最新版OpenClaw调整了默认权限配置,可能导致部分管理功能不可用。这是出于安全考虑所做的变更。如需恢复完整权限,请执行以下操作:
1. 首先备份原始配置文件:
```bash
cp ~/.openclaw/openclaw.json ~/.openclaw/openclaw.json.bak
- 使用sed命令修改配置:
bash复制sed -i 's/"profile": "messaging"/"profile":"full"/' ~/.openclaw/openclaw.json
- 验证修改是否成功:
bash复制cat ~/.openclaw/openclaw.json | grep -A 2 "tools"
- 重启OpenClaw服务使更改生效:
bash复制pkill -f openclaw && openclaw start
安全提示:开启full profile会降低系统安全性,建议仅在开发调试时使用。生产环境应保持messaging profile。
2.2 五大核心技能详解
OpenClaw最新版本引入了五个革命性的核心技能,极大扩展了系统的能力边界:
1. tavily-search(实时联网搜索)
- 功能:突破传统AI的知识截止限制,实时获取最新网络信息
- 触发词:"查一下"、"最近"、"最新消息"
- 示例:
"查一下2023年诺贝尔奖得主"
"深圳最近有什么AI相关的会议"
2. vision(图像文字识别)
- 能力:
- 读取图片中的文字(OCR)
- 解析截图、照片中的信息
- 处理验证码(简单类型)
- 使用场景:
"这张发票的金额是多少"
"把截图里的电话号码提取出来"
3. summarize(内容提炼)
- 特点:
- 支持网页、PDF、长文本
- 可指定摘要长度(短/中/长)
- 提取关键信息点
- 示例:
"用三点总结这篇论文的核心观点"
"把这篇3000字的文章压缩到200字"
4. find-skills(技能智能匹配)
- 创新点:
- 自动分析用户需求
- 推荐最适合的现有技能
- 建议技能组合方案
- 应用:
"我想分析销售数据并生成可视化图表"
"需要处理一批图片然后上传到网站"
5. self-improving(自我进化)
- 突破性功能:
- 自动记录错误并修正
- 优化现有技能的执行逻辑
- 基于用户反馈调整行为
- 示例:
当技能执行出错时,系统会自动:- 记录错误上下文
- 分析可能原因
- 提出修正方案
- 请求用户确认后应用修复
2.3 技能安装与使用指南
安装新技能非常简单,只需直接与OpenClaw对话:
bash复制# 安装单个技能
安装tavily-search技能
# 批量安装多个技能
安装vision和summarize技能
安装完成后,系统会自动:
- 下载技能包
- 验证数字签名
- 注册到技能库
- 更新索引
使用技巧:
- 可以通过"列出所有技能"查看已安装的技能
- 使用"技能名 help"获取特定技能的使用帮助
- "更新技能"命令可以获取最新版本
3. 实战经验与避坑指南
3.1 SKILL.md编写常见错误
-
描述字段太笼统
× 错误示例:"处理文件"
√ 正确写法:"转换Markdown文件为PDF格式。当用户提到'md转pdf'、'导出pdf'、'打印格式'时使用。支持自定义页眉页脚和代码高亮样式。" -
指令步骤不完整
× 错误示例:"处理数据前先验证"
√ 正确写法:"验证输入数据必须包含id、name、timestamp字段。id必须是UUID格式,name不能为空,timestamp需符合ISO 8601标准。如验证失败,返回具体错误字段和建议修正方法。" -
文件命名不规范
- 必须:SKILL.md(全大写)
- 避免:skill.md、Skill.md、SKILL.MD
-
忽略错误处理
好的指令应该包含:- 输入验证规则
- 异常处理流程
- 错误提示模板
3.2 OpenClaw使用技巧
-
权限管理最佳实践
- 开发环境使用full profile
- 测试环境使用standard profile
- 生产环境使用messaging profile
- 通过环境变量控制权限级别:
bash复制export OPENCLAW_PROFILE=standard openclaw start
-
技能组合技巧
多个技能可以串联使用,例如:code复制使用tavily-search查找最新的AI论文,然后用summarize提炼核心观点,最后用pdf-processor生成报告 -
性能优化建议
- 频繁使用的技能可以pin到内存
- 大型技能可以设置延迟加载
- 计算密集型技能建议限制并发数
3.3 调试与排错方法
-
技能调试流程
- 使用
openclaw skill test <技能名>运行测试模式 - 添加
--debug参数获取详细日志 - 通过
openclaw skill validate检查语法错误
- 使用
-
常见错误代码
代码 含义 解决方案 SK404 技能未找到 检查技能名拼写,确认已安装 MD500 SKILL.md格式错误 验证YAML语法,检查必填字段 PERM403 权限不足 调整profile或联系管理员 -
日志分析技巧
- 关键日志路径:
~/.openclaw/logs/ - 过滤错误日志:
grep "ERROR" openclaw.log - 监控技能执行:
tail -f skill_execution.log
- 关键日志路径:
在AI技术快速发展的今天,掌握这些工具和技能的高效使用方法至关重要。经过八年在FPGA和AI领域的深耕,我发现系统化的技能管理和清晰的指令设计是提升AI应用效率的关键。特别是在处理复杂工作流时,良好的技能架构可以节省大量调试时间。
