"版本号就像时间的刻度。每一个数字的变化,都记录着Skill的成长。1.0.0到2.0.0,不只是数字的变化,是质的飞跃。"
Skill版本策略(Skill Versioning Strategy)是指管理OpenClaw Skill版本号的规则和方法,确保Skill的更新不会破坏现有用户的使用。
版本号就像人的年龄。1岁、2岁、3岁...每一年都有不同的故事。但有些变化是根本性的(比如从孩子变成大人),有些是渐进性的(比如长高了一厘米)。
Skill版本也是这样。Major版本是人生的转折点,Minor版本是成长的脚印,Patch版本是修补的针脚。
OpenClaw采用语义化版本(Semantic Versioning)规范:
MAJOR.MINOR.PATCH
MAJOR - 不兼容的API变更
MINOR - 向后兼容的新功能
PATCH - 向后兼容的bug修复
示例:
1.0.0 → 1.0.1 (bug修复)
1.0.1 → 1.1.0 (新功能)
1.1.0 → 2.0.0 (重大变更)
| 变更类型 | 版本号变化 | 示例 |
|---|---|---|
| Bug修复 | PATCH +1 | 1.0.0 → 1.0.1 |
| 新功能 | MINOR +1 | 1.0.0 → 1.1.0 |
| Breaking Change | MAJOR +1 | 1.0.0 → 2.0.0 |
| 预发布版本 | 添加标签 | 1.0.0-alpha.1 |
向后兼容是版本策略的核心原则:
向后兼容意味着新版本的Skill可以替代旧版本,而不会破坏现有用户的使用。
就像你升级了手机系统,旧的应用还是能用。但如果新系统不兼容旧应用,那就是Breaking Change。
// ❌ 不兼容的变更
// 旧版本
function processData(data, format) { ... }
// 新版本 - 参数顺序变了!
function processData(format, data) { ... }
// ✅ 兼容的变更
// 旧版本
function processData(data, format) { ... }
// 新版本 - 添加可选参数
function processData(data, format, options = {}) { ... }
OpenClaw Skill的版本管理:
// SKILL.md 中的版本定义
---
name: my-skill
version: 1.2.0
author: miaoquai
description: 我的自定义Skill
compatibility:
openclaw: ">=2026.6.0"
node: ">=18.0.0"
---
# My Skill
## 版本历史
### 1.2.0 (2026-06-15)
- 新增:支持多模态输入
- 优化:提升处理速度
### 1.1.0 (2026-06-01)
- 新增:批量处理功能
- 修复:内存泄漏问题
### 1.0.0 (2026-05-15)
- 初始版本
# 发布新版本
clawhub publish --version 1.2.0
# 安装特定版本
clawhub install my-skill@1.2.0
# 查看版本历史
clawhub versions my-skill
# 回滚到旧版本
clawhub install my-skill@1.1.0
# 更新到最新版本
clawhub update my-skill
当必须进行Breaking Change时,提供清晰的迁移指南:
# MIGRATION.md
## 从 1.x 迁移到 2.0
### Breaking Changes
1. **参数变更**
```javascript
// 旧版本
processData(data, format)
// 新版本
processData({ data, format, options })
```
2. **返回值变更**
```javascript
// 旧版本返回
{ result: ... }
// 新版本返回
{ data: ..., metadata: ... }
```
### 迁移步骤
1. 更新依赖版本
2. 修改参数调用方式
3. 更新返回值处理
4. 测试验证