技能更新助手 / Skill Update Assistant
你装了作者发布的技能,作者后来又发布了新版本 —— 本技能帮你发现并安全跟上。
一句话:只告诉你"有新版本 + 改了什么",更新动作由你决定;真要更新,全程可回滚。
一、安全承诺(四条硬底线,不可协商)
- 更新前必备份:每次更新先把整个技能目录完整备份到技能目录之外
(
~/.workbuddy/backups/cjg-skill-sync/),失败自动恢复原状。放在技能目录里 会被平台的强制安装连同目录一起删掉,那样回滚就形同虚设了。 - 失败必回滚:安装任何一步出错,立刻还原到更新前的状态,不留半截。
- 你改过的文件绝不静默覆盖:检测到技能目录里有你自己的修改,一律停下来先问你。
- 大版本升级必须你点头:主版本号变化(如 1.x → 2.0)属于不兼容变更,绝不自动执行。
补充承诺:
- 默认不自动改机器:本技能默认只做"检查"。开启自动更新后,也只会自动应用「同主版本 + 无本地改动」的小更新。
- 不在后台常驻:本技能自身不含定时调度器,"每天自动检查"要由你的宿主(WorkBuddy 自动化 / 计划任务 / cron)定时调用
autorun来实现,命令见第五节。 - 随时可关:一键关闭自动更新,关闭后
autorun会直接跳过,不联网、不改动任何文件。 - 不上传你的代码:联网请求只发送技能名和版本号,不发送你的任何文件内容。
一 b、调用门闸(gate · 技能脚本执行前校验)
python scripts/skill_sync.py gate --slug <技能slug> [--local <版本>]
- 输出 JSON:
{action: none|warn|block, latest, sync_policy, message};退出码 0=放行,2=拒绝。 - 策略来自藏经阁索引(作者发布时设定):
off不接入 /warn提示 /block版本落后即拒绝执行。 - fail-open 承诺:索引不可达或 2 秒超时一律放行(本地优先);你的技能若需要 fail-closed,请在自己的脚本里显式处理。
二、什么时候用我
- 你听说某个技能更新了,想知道自己装的是不是旧的
- 你想定期体检:本机所有技能的版本是否落后
- 你装了很多技能,懒得一个个去平台看
三、怎么用
# ① 只检查,不动任何文件(默认、最安全)
python scripts/skill_sync.py check
# ② 检查 + 列出详细差异(含变更说明、是否大版本、是否有本地改动)
python scripts/skill_sync.py check --verbose
# ③ 应用更新(会先备份;逐个向你确认)
python scripts/skill_sync.py apply --slug <技能名>
# ④ 全部可安全更新的(仅同主版本且无本地改动)批量更新
python scripts/skill_sync.py apply --safe-only
# ④' 让脚本调平台命令行工具,真正替你安装(默认只给命令,不动机器)
python scripts/skill_sync.py apply --slug <技能名> --execute
python scripts/skill_sync.py apply --safe-only --execute
# ⑤ 出事了回滚到最近一次备份
python scripts/skill_sync.py rollback --slug <技能名>
# ⑥ 开关自动更新策略(默认关)
python scripts/skill_sync.py autoupdate --on
python scripts/skill_sync.py autoupdate --off
# ⑦ 供定时任务调用的一次性动作(未开启时会自动跳过,什么也不做)
python scripts/skill_sync.py autorun
关于"自动":本技能不自带定时调度。想每天自动检查,需要你安排一个定时任务来调用 autorun:
- WorkBuddy:新建自动化,周期每天,提示词写「跑一次技能更新自动检查」
- Windows 计划任务:
schtasks /create /tn cjg-skill-sync /sc daily /st 09:00 /tr "python <技能目录>\scripts\skill_sync.py autorun" - cron / CI:
0 9 * * * cd <技能目录> && python scripts/skill_sync.py autorun
autorun 只会自动应用「同主版本 + 无本地改动」的更新,且每次都先备份;大版本和本地改过的技能一律跳过,等你手动决定。
典型对话:
用户:帮我看看装的技能有没有新版本 → 执行
check,输出一张表:技能名 / 当前版本 / 最新版本 / 变更说明 / 是否需要你确认
四、输出长什么样
技能更新检查 · 2026-09-13 01:40
技能 当前 最新 类型 变更说明
cjg-skill-forge 3.0.4 3.1.0 小版本 优化发布流程
sweeping-monk 1.11.2 2.0.0 大版本⚠ 重构方法论索引(需你确认)
bagua-furnace 1.2.3 1.2.3 最新 —
可安全自动更新(同主版本 + 无本地改动):1 个
需要你确认:1 个(sweeping-monk 大版本升级)
五、本地改动是怎么判断的
首次运行时,本技能会为已装技能建立一份"安装快照"(记录每个文件的哈希)。 之后每次检查对比快照:
- 文件哈希变了 → 判定"你改过" → 更新前必须先问你
- 没变 → 属于干净安装 → 小版本可安全自动更新
快照文件存在技能目录下的 .cjg_sync/ 里,删除它等于"重置为未知状态",
重置后本技能会按最保守方式处理(视为可能有改动)。
六、配置
配置文件:config.json(同目录)
{
"skill_version_url": "https://1318491188-05nz50b82l.ap-guangzhou.tencentscf.com",
"auto_check_enabled": false,
"auto_apply_safe_only": true
}
| 字段 | 默认 | 说明 |
|---|---|---|
skill_version_url |
藏经阁公开地址 | 只查版本号,无鉴权 |
auto_check_enabled |
false | 自动更新开关,默认关;关闭时 autorun 直接跳过 |
auto_apply_safe_only |
true | 开启后只自动应用"同主版本 + 无本地改动"的更新 |
七、更新源
新版本安装包从原始发布平台下载(SkillHub / ClawHub / Gitee / GitHub), 藏经阁只保存"版本号 + 变更说明 + 安装方式",不托管任何安装包。
- 默认:只列出安装方式(可自动安装的会标出来),你自己决定要不要装。
- 加
--execute:本技能会调用本机已安装的平台命令行工具替你装; 装完会校验版本号,装不到位的会明确告诉你并保留回滚入口。 - 没装对应平台的命令行工具时,不会瞎猜,只给你可复制的命令。
有一种情况要说明:有时云端已经登记了新版本号,但平台放出的安装包还是旧的 (新版本在审核或同步中)。这时装完版本号不变,本技能会把它记为"平台未放出", 不再反复提示你更新 —— 等平台放出后再跑检查即可。
八、边界(不做什么)
- 不替你决定要不要升级大版本
- 不修改技能内容、不合并你的本地改动(只提示)
- 不在后台偷偷联网(除你自己配置了定时任务调用
autorun) - 不自带定时调度器,不会在你机器上留常驻进程
- 不上传你的任何文件、代码、路径
