本技能用于社区及开源第三方技能的溯源与版本更新,识别指定更新类指令后自动触发执行,会自动区分自研、SkillHub、GitHub 三类技能,仅对外部来源技能执行升级操作并跳过自研内容保障安全;更新流程自带前置备份、更新后安全校验,出现高危变更可自动回滚,无额外外部命令依赖,依托 Python 标准库完成下载解压,同时支持持久化映射配置、自动采纳前缀、多代理并行安全运行,还可通过环境变量或参数自定义技能存储目录,灵活适配不同使用场景。
skill-updater v1.2.0
功能概述
skill-updater v1.2.0是一项面向实际任务的技能,主要用于0. 定位与边界;skill-updater 是 按需触发 的技能库更新器;
核心要点
- 它解决一个具体痛点:当前 ~/.workbuddy/skills/ 下的技能来源混杂(skillhub 市场安装、GitHub 克隆、自研),但 溯源信息不可靠 —— .skills_store_lock.json 把几乎所有技能都记为 community /ski。
- 它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
- 从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。
使用与执行
实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;
结果检查与注意事项
涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。
skill-updater v1.2.0
0. 定位与边界
skill-updater 是按需触发的技能库更新器。它解决一个具体痛点:当前 ~/.workbuddy/skills/ 下的技能来源混杂(skillhub 市场安装、GitHub 克隆、自研),但溯源信息不可靠——.skills_store_lock.json 把几乎所有技能都记为 community/skillhub,GitHub 克隆的技能甚至不在锁文件中。本技能通过多信号分类器重建每个技能的出处,仅对可证伪的外部来源(skillhub / github)执行溯源升级,对自研技能一律跳过,杜绝误覆盖用户自有成果。
安全原则(来自用户纪律):更新即写入,必须先备份、再安全审计、高危即回滚。绝不静默覆盖。
1. 触发方式
用户说出以下任一短语即触发:
技能库更新/更新技能库/更新skills/升级技能/升级技能库skill update/更新所有技能/升级所有skill
触发后按第 4 节流程执行三阶段流水线。
2. 设计目标
- 分类可证伪:每个技能必须有明确出处标签
skillhub/github/self/unknown,不可臆测。 - 自研零风险:无外部溯源证据的技能一律按
self/unknown跳过,默认保护用户自有技能。 - 可审计可追溯:每次操作写
manifest.json(分类缓存)与update_log.json(操作日志)。 - 失败可逆:更新前全量备份,P0 风险或命令失败即回滚。
- 幂等:重复运行不产生副作用,已最新者跳过。
3. 技能三分类与溯源判定(分类器决策树)
分类在 scripts/inventory.py 中实现,优先级如下(命中即停):
对每个技能目录 name/:
① references/self_authored.txt 列出该名
→ self(用户显式声明,最高优先,持久化)
② SKILL.md frontmatter 含 origin ∈ {self,skillhub,github}
→ 采用该值(权威覆盖)
③ frontmatter 含 agent_created: true
→ self(模型/助手创建的技能视为自研)
④ 目录内含 .git/ 且 remote.origin.url 存在
→ github,sourceUrl = git remote
⑤ .skills_store_lock.json 存在该技能条目(含真实 slug):
zip_url 含 "skillhub" → skillhub,slug 取自 zip_url
zip_url 含 "github/gitclone" → github
⑥ 以上皆不命中
→ skillhub 候选(待注册表验证;404 后尝试搜索同源,仍无则 unknown 跳过)
关键设计取舍:第 ⑤ 步把"无法证明来自外部"的技能全部判为 unknown 并跳过。这比"猜测后误覆盖"安全得多。报告会列出所有 unknown 供用户人工确认;确认后可写入 references/self_authored.txt 持久化(或在前端 matter 显式加 origin: self/origin: skillhub/origin: github 提升判定优先级)。
已知限制:经 skillhub 市场安装的 GitHub 源技能,其锁文件
zip_url指向api.skillhub.cn,会被标为skillhub并通过市场重装获取最新——功能上仍能更新,仅origin标签精度下降。v1.0.0 接受此误差。
4. 整体架构与数据流(三阶段流水线)
[1] inventory.py 扫描 + 分类 + 版本读取 ──► manifest.json(分类缓存,幂等)
│
[2] check_updates.py 按 origin 查最新版本/提交 ──► manifest["skills"][n]["_check"]
│ skillhub: GET api.skillhub.cn/v1/skills/ 取 version(best-effort)
│ github: git fetch + HEAD vs @{u} 比较
│ 404 技能: lightmake.site 模糊搜索 → --adopt / --auto-adopt-prefix 采纳
│ → 采纳映射持久化到 slug_map.json
│
[3] apply_update.py 对 hasUpdate 者执行:备份 → 拉取 → 安全审计 → (回滚|P0) → 写日志
│ 支持多 --only 与 --no-shared-state(多 agent 并行安全模式,不写共享状态)
│
└─► update_log.json(追加式操作记录)+ 控制台汇总报告
一键执行入口:scripts/run.py(顺序调用上述三步并打印汇总)。
5. 各来源更新机制
| 来源 | 拉取机制(v1.2 纯标准库,跨平台) | 版本判定 | 备注 |
|---|---|---|---|
| skillhub | urllib 下载 api.skillhub.cn/.../download?slug= → zipfile 解压 → 原子替换目录 |
持久化 checkedVersion(注册表 latestVersion.version)比对;首次探测保守重装并记版本 |
已验证返回合法 zip(PK 头);替换前校验 zip 魔术字节与含 SKILL.md,防损坏/投毒。不依赖 curl / unzip 命令,Windows 直接可用 |
| github | git -C (git 缺失时明确跳过并提示) |
git fetch 后比较本地 HEAD 与上游 |
仅快进合并;若出现分叉(本地有自改)则中止并提示手动处理,避免丢失用户改动 |
| self / unknown | — | — | 跳过,不触碰 |
6. 安全闸门(备份 + 审计 + 回滚)
每次单技能更新严格按序:
- 备份:整目录复制到
(标准库/.skillup_backup/ _<时间戳> shutil.copytree,跨平台)。 - 拉取:执行第 5 节对应命令。失败 → 回滚 + 记
failed。 - 安全审计:
audit()扫描更新后文件(跳过.git),匹配高危模式清单(见references/SECURITY_AUDIT.md),含curl|sh、wget|sh、危险rm -rf /、sudo、base64 解码管道、chmod 777等。- 命中 P0 → 立即回滚备份 + 记
rolled-back,不写入。 - 命中 P1 → 报告警告但仍应用(用户可事后审查)。
- 命中 P0 → 立即回滚备份 + 记
- 写回:更新
manifest.json中的currentVersion与lastResult,追加update_log.json。
7. 产物文件
scripts/inventory.py— 分类器 + manifest 构建(只读扫描,安全可重复)scripts/check_updates.py— 版本/提交比对scripts/apply_update.py— 备份/拉取/审计/回滚执行器scripts/run.py— 三阶段编排入口manifest.json— 分类缓存(技能自管,判定的单一事实源)update_log.json— 操作日志(追加式)references/SECURITY_AUDIT.md— 高危模式清单与分级references/self_authored.txt— 自研技能白名单(可选持久化)slug_map.json— 已采纳的「别名→slug」映射(自动持久化,免去重复--adopt)
8. 使用方式
# 完整更新(推荐,触发「技能库更新」后执行) python3 ~/.workbuddy/skills/skill-updater/scripts/run.py # 分步 python3 ~/.workbuddy/skills/skill-updater/scripts/inventory.py # 只看分类 python3 ~/.workbuddy/skills/skill-updater/scripts/check_updates.py # 只看有无更新 python3 ~/.workbuddy/skills/skill-updater/scripts/apply_update.py # 执行更新 python3 ~/.workbuddy/skills/skill-updater/scripts/apply_update.py --dry-run # 预演不写入 # 自动采纳 sp- 前缀技能的同源候选(默认关,需强匹配才采纳),并持久化到 slug_map.json python3 ~/.workbuddy/skills/skill-updater/scripts/check_updates.py --auto-adopt-prefix sp- # 多 agent 并行安全更新:--no-shared-state 避免并发写 manifest/update_log 冲突,结果仅打印 python3 ~/.workbuddy/skills/skill-updater/scripts/apply_update.py --only--no-shared-state
9. 与现有技能的关系
auto-update/auto-updater已于 2026-07-06 删除,skill-updater是技能库更新的唯一入口(按需、分源、带安全闸门)。- 本技能自身标记
origin: self,故"技能库更新"不会自更新;若将来发布到市场/GitHub,补origin+update_command即可启用自更新。
10. 已知限制
- skillhub 更新已落地真实
curl+unzip机制(api.skillhub.cn已验证返回合法 zip);版本比对基于持久化的checkedVersion,避免无本地版本号的技能被反复重装。 - 纯 zip 方式安装的 GitHub 源技能(无
.git、锁文件指向 skillhub)被归为 skillhub 处理。 - 404 技能经
lightmake.site模糊搜索产出"同源候选"(报告制,需--adopt name:slug人工采纳),不自动覆盖,避免误杀自定义技能。 - 仅扫描用户空间
~/.workbuddy/skills/;产品内置技能(App 包内)由产品自身更新,不在范围内。
11. 版本变更
v1.1.0(2026-07-06):
- 🔴 修复 P0:
apply_update.py的 skillhub 更新命令原为npx skills add(Vercel CLI,仅认 GitHubowner/repo,对 SkillHub 社区技能必然失败且 SKILL.md 声称的 zip 回退从未实现)。改为真实curl 下载 zip → unzip → 原子替换链路,并加 zip 魔术字节校验、单顶层目录上提、SKILL.md存在性校验。 - 🟡 修复 P1(churn):版本比对改用持久化
checkedVersion(注册表版本),避免无 frontmatter 版本号的技能每次被判"需重装"。 - 🟡 修复 P1(覆盖盲区):404 技能做
lightmake.site模糊搜索,产出同源候选供人工采纳;scholar-paper-downloader等真·下架技能正确跳过。 - 🟡 修复 P1(死代码):
self_authored.txt现被inventory.py真正读取(最高优先级判 self),并提供apply_update.py --mark-self持久化声明。 - 🟢 加固:
run.py改用sys.executable可移植解析;github 更新明确区分"已最新"与"需手动处理"。
- 🔴 修复 P0:
v1.2.0(2026-07-06):
- 🔴 修复关键 bug:v1.1 的
check_updates.pyfound 分支未同步置顶层info["origin"]="skillhub",导致--adopt后的别名技能(如sp-*包)在apply_update.py中仍因origin=unknown被跳过、无法真正更新。v1.2 修复:采纳别名技能后强制置origin=skillhub。 - 🟡 新增
slug_map.json持久化:--adopt/--auto-adopt-prefix命中后写回映射,后续运行自动复用,免去每次手动--adopt。 - 🟡 新增
--auto-adopt-prefix(默认关):对指定前缀技能 404 后做同源搜索,强匹配(slug==去前缀名 / 目录名以 slug 结尾 / slug==原名)才自动采纳,安全兜底覆盖前缀差异技能(如sp-*包),避免误杀自定义技能。 - 🟢
apply_update.py新增--no-shared-state:多 agent 并行执行时不写manifest.json/update_log.json,避免并发写冲突,结果仅打印;主控在全部 agent 结束后 re-sync 状态。
- 🔴 修复关键 bug:v1.1 的
热门AI工具
相关专题
本专题聚焦DBeaver数据库连接配置与管理,覆盖从新建连接、选择数据库类型到填写连接参数和验证连接的完整流程。针对MySQL、PostgreSQL、SQL Server等常见数据库,整理相应的连接设置方法,并提供驱动缺失、认证失败和连接异常等问题的排查方向。
0
2026.11.04
本专题围绕XORM框架的结构体映射展开,说明表名与字段的命名策略、xorm标签常用属性、主键自增与时间字段自动填充,并演示Sync2自动建表、增量字段升级、索引声明与反向生成结构体的完整流程。
0
2026.11.04
本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。
0
2026.11.04
本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。
0
2026.11.04
本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。
0
2026.11.04
本专题梳理XORM框架的入门路径,从框架定位、依赖安装、连接数据库到跑通第一个增删改查示例,讲清Engine初始化、日志开启与项目目录规划,并对比GORM等同类ORM的差异,帮助Go开发者建立整体认知。
0
2026.11.04
本专题聚焦Docker Desktop容器端口映射与访问配置,整理从创建容器、设置端口绑定到验证本地服务访问的操作流程。针对端口被占用、映射配置错误、容器服务无法访问等情况,也提供相应的检查方向,方便用户完成端口配置。
0
2026.11.03
想使用Docker Desktop将本地项目构建成Docker镜像?本专题围绕镜像构建的实际操作展开,介绍Dockerfile编写、构建命令使用、镜像标签设置和构建日志查看等内容,同时整理镜像无法生成、依赖安装失败及构建缓存异常等问题的排查思路。
0
2026.11.03
本专题聚焦Docker Desktop容器创建与运行配置,介绍通过本地镜像或远程镜像创建容器的方法,以及容器启动、终端访问、日志查看和基础管理等操作。针对端口冲突、参数配置不当、容器无法启动等情况,也整理了相应的排查方向。
0
2026.11.03
热门下载
相关下载
精品课程
共6课时 | 12.1万人学习
共79课时 | 161.7万人学习
共6课时 | 54.7万人学习