5点09分,我把一个 Skill 从 v1.2.3 升到 v2.0.0,然后我的 Agent 突然不认识文件系统了。我才想起——忘了检查 Breaking Changes。
世界上有一种痛苦叫「你的依赖树炸了」。当你安装了 10 个 Skills,每个 Skill 又依赖另外 3 个公共模块,而它们对同一个依赖包的要求版本不同的时候——恭喜你,进入了依赖地狱。
OpenClaw 的 Skills 版本管理 系统提供了完整的解决方案:语义化版本(SemVer)、依赖声明、冲突检测、回滚机制、以及兼容性测试工具。它的设计哲学很简单——让版本升级不再是玄学。
本文覆盖从「如何声明 Skill 依赖」到「如何管理企业级 Skill 生态系统」的全链路方案。
在 skill.yaml 声明版本与依赖
↓OpenClaw 自动解析依赖树
↓检查兼容性与冲突
↓自动安装或提示手动解决
↓运行兼容性测试
skill.yaml 中添加版本信息。
# skill.yaml
name: my-awesome-skill
version: "1.2.3"
description: "一个很棒的Skill"
author: "miaoquai"
license: MIT
dependencies:
openclaw-core: ">=1.5.0"
openclaw-web-fetch: "^2.0.0"
openclaw-mcp-connector: "~1.0.0"
openclaw skills deps 命令查看完整的依赖关系。
openclaw skills deps my-awesome-skill --tree
# 输出示例:
# 📦 my-awesome-skill@1.2.3
# ├── openclaw-core@1.5.0 (>=1.5.0) ✓
# ├── openclaw-web-fetch@2.1.0 (^2.0.0) ✓
# └── openclaw-mcp-connector@1.0.2 (~1.0.0) ✓
# └── openclaw-json-parser@0.9.0 (^0.9.0) ⚠️ 需要升级
openclaw skills check-compatibility ./new-skill/
# 输出:
# ✅ 依赖兼容性检查通过
# ℹ️ 注意:new-skill 依赖 openclaw-web-fetch@^2.0.0
# 当前已安装:openclaw-web-fetch@2.1.0(兼容)
openclaw skills history my-awesome-skill
# v1.2.3 ← 当前
# v1.2.2
# v1.1.0
openclaw skills rollback my-awesome-skill --to v1.2.2
# ✅ 已回滚至 v1.2.2
# ℹ️ 建议使用 diff 查看变更:
openclaw skills diff my-awesome-skill v1.2.3 v1.2.2
my-awesome-skill/
├── skill.yaml # 版本与依赖声明
├── README.md # 使用文档
├── CHANGELOG.md # 版本变更记录
├── src/
│ ├── index.ts # 入口文件
│ └── handlers/
├── tests/
│ ├── compatibility.test.ts # 兼容性测试
│ └── unit.test.ts
├── migrations/ # 版本迁移脚本
│ └── v1-to-v2.ts
└── dist/ # 构建产物(发布用)
# CHANGELOG.md 示例
## [2.0.0] - 2026-05-18
### 💥 Breaking Changes
- 全面重构 API 接口,旧的 execute() 方法不再支持
- 移除对 node@14 的支持,最低要求 node@18
- 配置项重命名:timeout → request_timeout
### ✨ 新增特性
- 支持流式响应
- 新增 batch_process() 批量处理方法
- 原生 MCP 协议支持
### 📦 依赖变更
- 升级 openclaw-core 依赖至 ^2.0.0
- 新增 openclaw-streaming 为可选依赖
# 使用 OpenClaw Cron + GitHub Actions 自动化版本管理
# .github/workflows/skill-release.yml
name: Skill Release Pipeline
on:
push:
tags:
- 'v*'
jobs:
validate-and-release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: 验证语义化版本
run: openclaw skills validate-version ./skill.yaml
- name: 检查依赖兼容性
run: openclaw skills check-compatibility .
- name: 运行兼容性测试
run: |
openclaw skills install --from-path .
openclaw skills test . --compatibility-only
- name: 发布到 ClawHub
run: |
openclaw hub login --token ${{ secrets.CLAWHUB_TOKEN }}
openclaw hub publish --version ${{ github.ref_name }}
# 发布教程可参考 /tools/clawhub-publish-tutorial.html
openclaw skills lock 生成 lockfile,锁定所有依赖的精确版本。migrations/ 目录下的迁移脚本,一键处理配置文件、数据格式等变更。