SuperAPI AI 工具集

gstack-upgrade

部署与运维

查看项目

更新于 10-15 14:34

技能介绍

用途

gstack-upgrade 用于将 gstack 升级到最新版本,并在升级完成后展示新版本带来的变化。当用户要求“upgrade gstack”“update gstack”或“get latest version”时,可调用此技能。它也支持语音转文字别名,例如“upgrade the tools”“update the tools”“gee stack upgrade”“g stack upgrade”。

调用方式为 /gstack-upgrade。

主要能力

该技能会先检测 gstack 的安装类型,包括全局 git 安装(global-git)、本地 git 安装(local-git)、vendored 安装(vendored)和全局 vendored 安装(vendored-global),并确定安装目录。随后保存旧版本号,根据安装类型执行升级:git 安装使用 fast-forward 拉取更新,vendored 安装则通过克隆最新仓库并替换目录来完成升级。升级后运行 ./setup --refresh-registered 刷新已注册的安装,并执行版本迁移脚本以处理配置、文件或目录结构变化。

技能还包含内联升级流程,供其他技能在检测到 UPGRADE_AVAILABLE 时引用。该流程会先检查是否启用自动升级;若未启用,则通过 AskUserQuestion 询问用户,选项包括“Yes, upgrade now”“Always keep me up to date”“Not now”“Never ask again”。选择“Not now”会写入带递增退避的稍后提醒状态(首次 24 小时,第二次 48 小时,第三次及以上 1 周)。选择“Never ask again”会禁用更新检查。

使用方式

用户可直接运行 /gstack-upgrade 命令。技能内部通过 shell 脚本检测安装类型和目录,使用 gstack-config 读取或设置配置项(如 auto_upgrade、update_check、team_mode),并通过 gstack-paths 获取状态根目录。升级过程中会检查 Bun 版本下限,若 Bun 过旧则停止并提示用户先运行 bun upgrade。

对于 git 安装,技能会先丢弃可再生的渲染产物(SKILL.md 和 sections 文件),然后执行 git fetch origin 和 git pull --ff-only --autostash origin main。若 fast-forward 被拒绝,则进入回退流程:先检查工作区是否干净且无未推送提交,若安全则执行 git reset --hard origin/main;否则通过 AskUserQuestion 列出将被丢弃的文件和提交,要求用户明确选择。

对于 vendored 安装,技能会克隆最新仓库到临时目录,将原安装目录重命名为 .bak,然后替换为新目录并运行 setup。若 setup 失败,则恢复备份。

适用场景

适用于需要将 gstack 保持最新版本的用户,尤其是在其他技能检测到新版本并提示升级时。也适用于团队模式(team_mode)下需要统一使用全局安装作为唯一来源的场景,此时技能会移除本地 vendored 副本。

限制

升级过程依赖 git、Bun 等工具,且需要网络访问以拉取或克隆仓库。若安装目录未设置、为空、缺失、不可读或不是 gstack 自身的检出目录,技能会在执行任何 git 命令前停止。若存在陈旧的 .bak 备份,技能会中止并提示用户检查,不会静默删除。迁移脚本可能产生非致命错误,技能会输出警告但继续执行。部分配置项和状态文件的具体行为依赖 gstack 内部实现,资料中未提供完整细节。