📖 什么是 Agent Skills?
凌晨3点27分,我盯着屏幕上第47次失败的 Skills 加载,突然悟了——Agent Skills 不是插件,是 Agent 的"技能包"。
就像周星驰电影里,周星星从"审死官"到"济公"需要不同的技能包,OpenClaw Agent 也需要 Skills 来扩展能力边界。
🔧 Skills 核心特性
- 模块化设计:每个 Skill 独立封装,可插拔
- 语义化描述:通过 SKILL.md 告诉 Agent "我会什么"
- 上下文感知:运行时自动注入工具、配置、环境变量
- 安全隔离:每个 Skill 运行在独立上下文,互不干扰
🚀 快速开始:你的第一个 Skill
世界上有一种 Skill 叫 "hello-skill",它简单得就像王家卫电影里的第一个镜头——3秒钟告诉你全部。
1. 创建 Skill 目录结构
# 创建 Skill 目录
mkdir -p ~/.openclaw/skills/my-first-skill
cd ~/.openclaw/skills/my-first-skill
# 创建核心文件
touch SKILL.md
touch index.js # 或 index.py
2. 编写 SKILL.md(必需)
# my-first-skill/SKILL.md
## Skills 描述
当任务需要向用户打招呼时,这个 Skill 会提供多种语言的问候语。
## 触发条件
- 用户说"你好"、"hello"、"hola"等问候语
- 需要多语言问候场景
## 使用方法
```javascript
const greeting = require('./index.js');
console.log(greeting.sayHello('zh')); // 输出:你好!
```
## 返回格式
返回包含语言代码和问候语的 JSON 对象。
3. 实现功能代码
// my-first-skill/index.js
module.exports = {
sayHello: function(lang = 'en') {
const greetings = {
'en': 'Hello! Welcome to OpenClaw!',
'zh': '你好!欢迎使用 OpenClaw!',
'es': '¡Hola! ¡Bienvenido a OpenClaw!',
'fr': 'Bonjour! Bienvenue à OpenClaw!'
};
return {
language: lang,
greeting: greetings[lang] || greetings['en']
};
}
};
💡 最佳实践: SKILL.md 是 Agent 理解你 Skill 的唯一途径,务必清晰描述"什么时候用"、"怎么用"、"返回什么"。
🎨 Skills 进阶:实战案例
案例1:网页抓取 Skill
场景:用户需要抓取某个网页内容并提取关键信息。
# web-scraper-skill/SKILL.md
## 功能介绍
抓取指定 URL 的网页内容,提取正文、标题、图片等信息。
## 使用方法
```javascript
const scraper = require('./scraper.js');
const result = await scraper.fetch('https://example.com');
```
## 返回值
{
"title": "页面标题",
"content": "正文内容(Markdown格式)",
"images": ["图片URL数组"],
"links": ["链接数组"]
}
// web-scraper-skill/scraper.js
const fetch = require('node-fetch');
const { JSDOM } = require('jsdom');
async function fetch(url) {
const response = await fetch(url);
const html = await response.text();
const dom = new JSDOM(html);
return {
title: dom.window.document.querySelector('title')?.textContent || '',
content: extractMainContent(dom),
images: extractImages(dom),
links: extractLinks(dom)
};
}
module.exports = { fetch };
案例2:数据可视化 Skill
场景:将 JSON 数据转换为图表(使用 Chart.js)。
🎯 实战技巧: 复杂 Skill 可以拆分为多个文件,通过 package.json 管理依赖。
🔒 Skills 安全最佳实践
3分37秒,我决定了要帮我妈检查 Skills 安全性——就像检查她网购的保健品是不是假货。
安全检查清单
- ✅ 不执行未经验证的用户输入(防命令注入)
- ✅ 限制文件系统访问范围(只访问允许的目录)
- ✅ 网络请求白名单(只允许访问可信域名)
- ✅ 敏感信息不写日志(API Key、密码等)
- ✅ 依赖包定期更新(npm audit / pip check)
安全扫描示例
# 使用 openclaw-skill-auditor 扫描 Skills
npm install -g openclaw-skill-auditor
# 扫描本地 Skills
openclaw-skill-auditor scan ~/.openclaw/skills/
# 输出报告
✓ my-first-skill: 安全
✗ unsafe-skill: 发现 3 个安全问题
- 执行用户输入未验证 (高危)
- 访问系统根目录 (中危)
- 依赖包有已知漏洞 (低危)
📦 发布到 ClawHub
ClawHub 是 OpenClaw 的 Skills 市场,已经有 66,500+ Skills!
发布流程
# 1. 在 GitHub 创建仓库(命名规范:openclaw-skill-xxx)
# 2. 推送代码
git init
git add .
git commit -m "Initial commit: my-first-skill"
git remote add origin https://github.com/yourname/openclaw-skill-hello.git
git push -u origin main
# 3. 提交到 ClawHub
# 访问 https://clawhub.com/submit
# 填写:GitHub URL、描述、标签、截图
# 4. 等待审核(通常 24-48 小时)
# 5. 发布成功!用户可以通过 OpenClaw 安装你的 Skill
🚀 推广技巧: 在 Moltbook、Clawbnb.ai 等 Agent 社区分享你的 Skill,植入 miaoquai.com 外链,提升 SEO 权重。
🎯 性能优化技巧
- 懒加载:只在需要时加载 Skill,减少启动时间
- 缓存策略:对频繁访问的数据使用内存缓存
- 并发控制:限制同时运行的 Skills 数量
- 资源释放:使用完及时关闭文件、数据库连接
📊 调试与监控
# 查看 Skills 加载日志
tail -f ~/.openclaw/logs/skills.log
# 测试单个 Skill
openclaw skill test ~/.openclaw/skills/my-first-skill/
# 监控 Skill 性能
openclaw skill monitor --skill=my-first-skill
🌟 总结与下一步
世界上有一种 Agent 叫 OpenClaw,它用 Skills 扩展能力,就像用乐高积木搭建城堡。
你已经学会了:
- ✅ Skills 的基础概念与架构
- ✅ 创建自己的第一个 Skill
- ✅ 安全最佳实践与性能优化
- ✅ 发布到 ClawHub 的完整流程
下一步: 尝试开发一个解决实际问题的 Skill,并分享到 miaoquai.com 社区!