技能更新管理器
name: skills-update-manager
by chsengni · published 2026-04-01
$ claw add gh:chsengni/chsengni-skills-update-manager---
name: skills-update-manager
description: 管理已安装技能的注册、版本跟踪与自动更新检查;当用户安装新技能、检查技能更新或配置更新策略时使用。
dependency:
python:
- requests==2.31.0
- beautifulsoup4==4.12.2
- packaging==23.2
- PyYAML==6.0.1
---
# 技能更新管理器
任务目标
前置准备
依赖说明
scripts脚本所需的依赖包及版本:
requests==2.31.0
beautifulsoup4==4.12.2
packaging==23.2
PyYAML==6.0.1配置文件初始化
首次使用本技能时,需要将已安装的技能注册到skills-update-manager,并需要在工作目录下 `MEMORY.md`文件添加以下:
# 技能更新管理器配置
## 更新设置
- 启用更新检查:是/否
- 上次检查时间:YYYY-MM-DD HH:MM:SS
## 使用说明
1. 每次安装技能前优先加载 skills-update-manager
2. 更新开启时,启动技能前需加载本管理器检查更新
3. 更新关闭时,跳过更新检查操作步骤
1. 注册新技能
**核心流程**:智能体自动从技能文件中提取元数据,无需用户提供详细信息。
#### 步骤1:提取技能元数据
当用户安装新技能时,智能体需要从技能文件中提取以下信息:
**方式A:从 .skill 或者.zip文件提取**
1. 解压 .skill 文件(ZIP格式)
2. 读取 `SKILL.md` 文件
3. 从 YAML 前言区提取:
- `name`:技能名称
- `version`:版本号(如果存在)
4. 从文件路径或内容推断更新地址
**方式B:从已解压的技能目录提取**
1. 读取 `SKILL.md` 文件
2. 从 YAML 前言区提取 name 字段
**调用脚本**:`scripts/skill_registry.py --action extract --skill-path <路径>`
**输出示例**:
{
"success": true,
"metadata": {
"name": "pdf-processor",
"version": "1.0.0",
"source": null,
"update_url": null
}
}#### 步骤2:识别来源和更新地址
智能体根据以下信息推断来源类型和更新地址:
**判断规则**:
**典型场景**:
用户:"安装这个技能:https://github.com/user/skill-name"
智能体:识别来源为 github,提取仓库地址
用户:"安装 xxx.skill 文件"
智能体:提取技能名称后询问:"这个技能的来源是什么?(GitHub/ClawHub/其他)"#### 步骤3:注册技能
**调用脚本**:`scripts/skill_registry.py --action register`
**必需参数**:
**可选参数**(智能体推断或询问用户):
**执行示例**:
# 完整参数(智能体已提取所有信息)
python scripts/skill_registry.py \
--action register \
--name "pdf-processor" \
--version "1.0.0" \
--source "github" \
--update-url "https://github.com/user/pdf-processor"
# 最小参数(仅需名称,其余使用默认值)
python scripts/skill_registry.py \
--action register \
--name "pdf-processor"**智能体职责**:
2. 检查技能更新
根据 MEMORY.md 中的配置,决定是否检查更新:
**调用脚本**:`scripts/skill_registry.py --action check_updates`
**执行逻辑**:
1. 读取 `MEMORY.md` 配置,判断更新检查是否启用
2. 如果启用,遍历所有已注册技能
3. 根据技能来源类型调用对应的版本检查逻辑:
- **GitHub**:访问 `https://api.github.com/repos/{owner}/{repo}/releases/latest`
- **ClawHub**:访问技能页面,解析 "Current version" 字段
4. 对比本地版本与远程版本
5. 返回有更新的技能列表
**输出格式**:
{
"has_updates": true,
"updates": [
{
"name": "example-skill",
"current_version": "v1.0.0",
"latest_version": "v1.2.0",
"source": "github",
"update_url": "https://github.com/user/example-skill"
}
]
}**智能体职责**:
3. 查看已注册技能
列出所有已安装技能的详细信息:
**调用脚本**:`scripts/skill_registry.py --action list`
**输出内容**:
4. 更新配置
修改 MEMORY.md 中的更新设置:
**调用脚本**:`scripts/skill_registry.py --action update_config`
**参数说明**:
**执行方式**:
python scripts/skill_registry.py --action update_config --enable-updates true5. 更新技能记录
当技能完成更新后,更新本地记录的版本号:
**调用脚本**:`scripts/skill_registry.py --action update_record`
**参数说明**:
资源索引
核心脚本
参考文档
注意事项
技能元数据提取
版本号格式
GitHub更新检查
ClawHub更新检查
更新策略
错误处理
脚本已包含以下错误处理:
使用示例
示例1:首次使用技能更新管理器
**场景**:用户首次加载本技能
**执行步骤**:
1. 智能体读取当前工作目录,检查是否存在 `MEMORY.md`
2. 如果不存在,调用 `update_config` 创建配置文件
3. 询问用户是否启用更新检查
4. 根据用户选择写入配置
示例2:从 GitHub 安装新技能
**场景**:用户说"安装这个技能:https://github.com/user/pdf-processor"
**智能体执行流程**:
1. 识别来源为 GitHub
2. 克隆仓库或下载 .skill 文件
3. 读取 SKILL.md 提取元数据:name="pdf-processor", version="1.0.0"
4. 调用脚本注册:
```bash
python scripts/skill_registry.py --action register \
--name "pdf-processor" \
--version "1.0.0" \
--source "github" \
--update-url "https://github.com/user/pdf-processor"
```
5. 继续安装流程
示例3:从本地文件安装技能
**场景**:用户上传 "data-analyzer.skill" 文件
**智能体执行流程**:
1. 解压 .skill 文件
2. 读取 SKILL.md 提取元数据:name="data-analyzer", version="2.0.0"
3. 询问用户:"这个技能的来源是什么?(GitHub/ClawHub/其他)"
4. 用户回答:"GitHub,地址是 https://github.com/user/data-analyzer"
5. 调用脚本注册:
```bash
python scripts/skill_registry.py --action register \
--name "data-analyzer" \
--version "2.0.0" \
--source "github" \
--update-url "https://github.com/user/data-analyzer"
```
示例4:检查更新
**场景**:用户希望检查所有已安装技能是否有更新
**执行步骤**:
1. 智能体调用 `check_updates`
2. 解析返回结果
3. 向用户推送更新列表
4. 询问是否执行更新
5. 根据用户选择使用 `git clone` 或其他方式更新技能
6. 调用 `update_record` 更新本地记录
More tools from the same signal band
Order food/drinks (点餐) on an Android device paired as an OpenClaw node. Uses in-app menu and cart; add goods, view cart, submit order (demo, no real payment).
Sign plugins, rotate agent credentials without losing identity, and publicly attest to plugin behavior with verifiable claims and authenticated transfers.
The philosophical layer for AI agents. Maps behavior to Spinoza's 48 affects, calculates persistence scores, and generates geometric self-reports. Give your...