什么是Skills Registry?
如果把Agent比作手机,那Skills就是App,而Skills Registry就是应用商店。它是一个集中式的技能注册与发现平台,让开发者可以发布Skills,让用户可以轻松发现和使用这些Skills。
在OpenClaw生态中,Skills Registry承担着三个核心角色:
- 注册中心 - 标准化地收录和管理所有Skills元数据
- 发现引擎 - 让用户能够搜索、筛选、评估Skills
- 分发网络 - 确保Skills能被正确地加载和执行
💡 类比理解:Skills Registry之于Agent,就像npm之于JavaScript、PyPI之于Python——它是生态繁荣的基础设施。
Registry架构解析
核心组件
Skills Registry 架构
├── Registry Server (注册服务器)
│ ├── Metadata Store (元数据存储)
│ ├── Search Index (搜索索引)
│ └── Access Control (访问控制)
├── Client SDK (客户端SDK)
│ ├── Skill Discovery (技能发现)
│ ├── Skill Loading (技能加载)
│ └── Cache Management (缓存管理)
└── Publisher Tools (发布工具)
├── CLI Publisher (命令行发布)
├── API Publisher (API发布)
└── Validation (校验工具)
Skill元数据结构
{
"name": "weather-forecast",
"version": "1.2.0",
"description": "获取全球城市天气预报",
"author": "miaoquai-team",
"license": "MIT",
"category": "data-query",
"tags": ["weather", "forecast", "api"],
"entrypoint": "./index.js",
"dependencies": {
"axios": "^1.6.0"
},
"capabilities": {
"tools": ["get_weather", "get_forecast"],
"resources": ["weather_api"]
},
"compatibility": {
"openclaw": ">=1.0.0",
"node": ">=18.0.0"
},
"readme": "./README.md",
"icon": "./icon.png"
}
如何使用Registry
1. 搜索Skills
import { SkillsRegistry } from 'openclaw';
const registry = new SkillsRegistry();
// 按关键词搜索
const results = await registry.search("weather");
console.log(`找到 ${results.length} 个天气相关Skills`);
// 按分类筛选
const dataSkills = await registry.getByCategory("data-query");
// 按标签筛选
const taggedSkills = await registry.getByTags(["api", "external"]);
// 获取热门Skills
const popular = await registry.getPopular(10);
2. 安装并加载Skill
// 安装Skill到本地
await registry.install("weather-forecast");
// 在Agent中加载
import { Agent } from 'openclaw';
import { WeatherSkill } from 'openclaw-skills/weather-forecast';
const agent = new Agent();
agent.use(new WeatherSkill());
// 或者动态加载
const skill = await registry.load("weather-forecast@1.2.0");
agent.use(skill);
3. 发布你的Skill
# 使用CLI发布
openclaw skills publish --name my-skill --version 1.0.0
# 或使用API
curl -X POST https://registry.openclaw.dev/api/skills \
-H "Authorization: Bearer $TOKEN" \
-d @skill-package.json
最佳实践
命名规范
✅ 好的命名:
weather-forecast- 清晰、描述性强database-query-postgres- 明确范围@myorg/api-client- 使用scope区分组织
⚠️ 差的命名:
my-skill- 太泛化weather- 太简短,可能冲突WeatherForecast- 不要用大驼峰
版本管理
遵循语义化版本(SemVer):
- MAJOR - 不兼容的API变更
- MINOR - 向后兼容的功能新增
- PATCH - 向后兼容的问题修复
文档完整性
一个好的Skill包应该包含:
my-skill/
├── skill.json # 元数据(必需)
├── README.md # 使用文档(必需)
├── CHANGELOG.md # 变更日志(推荐)
├── LICENSE # 开源协议(必需)
├── examples/ # 使用示例(推荐)
│ └── basic.ts
└── tests/ # 测试用例(推荐)
└── skill.test.ts
Registry安全模型
访问控制
- 公开Skills - 所有人可访问
- 私有Skills - 仅授权用户/组织可访问
- 内部Skills - 仅组织内部使用
安全审计
Registry会对每个发布的Skill进行:
- 代码静态分析
- 依赖漏洞扫描
- 权限边界检查
- 敏感信息泄露检测
⚠️ 安全提示:使用第三方Skill前,务必检查其权限声明和代码来源,避免安全风险。
ClawHub与Registry的关系
ClawHub是OpenClaw官方的Skills Registry实现,提供:
- Web界面 - 可视化浏览和管理Skills
- CLI工具 - 命令行发布和安装
- API接口 - 程序化访问
- 分析面板 - Skill使用统计
💡 扩展阅读:访问 ClawHub官网 探索更多公开Skills,或发布你自己的作品。
常见问题
Q: Registry和ClawHub是什么关系?
ClawHub是Registry的一个实现,就像GitHub是Git仓库托管平台一样。Registry是规范,ClawHub是具体产品。
Q: 如何私有化部署Registry?
OpenClaw提供Registry Server的Docker镜像,可以在企业内部部署私有的Skills Registry。
Q: Skill更新后,已安装的Agent会自动升级吗?
不会。Agent使用的是安装时的版本,需要手动升级。建议使用skill@^1.2.0这样的版本范围,在下次部署时自动获取兼容更新。