SuperAPI AI 工具集

absolute-upgrade

部署与运维

查看项目

更新于 10-15 13:48

技能介绍

用途

Absolute Upgrade 用于把项目的依赖更新到较新版本,强调「安全、按风险排序、逐波推进、每波之后测试保持通过」。它不是盲目执行 npm update:过期和有漏洞的依赖会按影响范围(blast radius)分组——patch/minor 进入安全波次,major/破坏性变更单独门控、一次一个、先读 changelog——然后增量应用,并用项目自身的测试套件验证。

何时使用

  • 日常「把依赖更新到最新」/「升级我们的依赖」。
  • 指定某个升级:「把 React 升到 19」「从已弃用的 X 包迁移出去」。
  • 清理 npm outdated / Dependabot 积压,而不必开 40 个独立 PR。

不适用:新增依赖(那是工作/功能决策);专门审计漏洞 → 使用 /absolute audit(它做 CVE 分诊,upgrade 负责移动版本号)。

共享引擎

该技能运行 references/health-engine.md 中的共享引擎——其中定义了 DETECT → SCAN → TRIAGE → FIX → VERIFY → REPORT 循环与安全契约。本文件只覆盖依赖升级特有的部分。

扫描内容

按生态列出过期依赖及其 current → wanted → latest 与跳变类型:

生态 检测过期的命令 锁文件 / 清单文件
npm npm outdated --json package-lock.json
pnpm pnpm outdated --format json pnpm-lock.yaml
yarn yarn outdated --json yarn.lock
Python (pip) pip list --outdated --format=json requirements*.txt
Python (poetry/uv) poetry show --outdated / uv pip list --outdated pyproject.toml + lock
Go go list -u -m -json all go.mod / go.sum

同时标记:存在已知弃用的依赖、同一包的重复/多版本、直接依赖与传递依赖(只有直接依赖是升级目标,传递依赖随之变化)。

风险分级(TRIAGE)

按 semver 跳变把升级计划分成波次,最安全的优先:

波次 跳变 默认处理
1 patch (x.y.Z) 合并批量,立即修复
2 minor (x.Y.z) 按包族合并,立即修复
3 major (X.y.z) / pre-1.0 minor 一次一个,门控——先读 changelog/迁移指南,列出破坏性变更

对每个 major 升级:定位破坏性变更(CHANGELOG、release notes、包自带 codemod 时使用 codemod),清点触及变更 API 的调用点,并在应用前说明迁移方式。peer-dependency 冲突与其驱动包在同一波次内解决。

修复与验证

  • 应用一个波次,重新生成锁文件,运行项目完整的测试 + 构建(安装通过并不等于升级通过)。
  • major:版本跳变与所需的代码迁移必须在同一波次内完成,否则构建会失败。包提供 codemod 时使用 codemod。
  • 某个波次无法在合理范围内变绿 → 回滚它,报告为 blocked 并附上错误,保留已绿的波次。绝不用 --force / --legacy-peer-deps 掩盖真实冲突。

注意事项

  • 只改锁文件的「升级」:只改清单而不重新生成并提交锁文件,会发布未经测试的传递版本。始终重新生成。
  • 把 major 混进 patch 批次:一个破坏性跳变会让整波失败,并掩盖是哪个变更导致的。major 永远单独处理。
  • 安装变绿 ≠ 项目变绿:npm install 成功不能证明任何事——要跑测试。
  • 围绕失败做固定(pin):如果某个升级破坏功能,就修复或推迟;不要为了绕过而默默把依赖树固定住。

配套命令

  • /absolute audit —— 如果目标是修复漏洞,从那里开始;它会为版本移动回到这里。
  • /absolute deflake —— flaky 测试可能掩盖升级是否真正通过。
  • /absolute work —— 如果升级需要真正的功能级迁移工作,交给它。