Skip to content

功能规格说明:更新命令 ​

创建日期:2026-03-31

用户场景与测试 (必填) ​

用户故事:检查更新(优先级:P1) ​

作为用户,我希望能够检查 WAVE Code 是否有新版本可用,以便我可以保持最新的功能和错误修复。

为什么是这个优先级:这是功能的核心。它允许用户知道何时可用更新。

独立测试:可以通过运行 wave update 并验证它正确识别当前版本和 npm 注册表上的最新版本来测试。

验收场景:

  1. 假设当前版本是 0.11.6,npm 上的最新版本是 0.11.6,当用户运行 wave update 时,则系统通知用户 WAVE Code 已是最新。
  2. 假设当前版本是 0.11.5,npm 上的最新版本是 0.11.6,当用户运行 wave update 时,则系统通知用户有新版本可用。

用户故事:执行更新(优先级:P1) ​

作为用户,我希望工具使用适当的包管理器自动更新到最新版本,这样我就不必手动运行安装命令。

为什么是这个优先级:这为用户提供无缝的更新体验。

独立测试:可以在有更新可用时运行 wave update 并验证它执行正确的更新命令(如 npm install -g wave-code@latest)来测试。

验收场景:

  1. 假设有新版本可用且工具通过 npm 安装,当用户运行 wave update 时,则系统执行 npm install -g wave-code@latest --registry=https://registry.npmmirror.com。
  2. 假设有新版本可用且工具通过 pnpm 安装,当用户运行 wave update 时,则系统执行 pnpm add -g wave-code@latest --registry=https://registry.npmmirror.com。
  3. 假设有新版本可用且工具通过 yarn 安装,当用户运行 wave update 时,则系统执行 yarn global add wave-code@latest --registry=https://registry.npmmirror.com。

用户故事:走 npm 国内镜像加速(优先级:P2) ​

作为国内用户,我希望 wave update 的版本查询与安装都走 npm 国内镜像,以便更新不会因为直连 registry.npmjs.org 而缓慢或超时。

为什么是这个优先级:内置运行时依赖(rg / sharp)的下载以及文档里的安装说明都已统一走 npmmirror,wave update 是唯一仍直连官方源的路径。官方源在国内更新一个包可能需要数分钟甚至失败,而这是用户主动触发的、必须成功的操作。

独立测试:运行 wave update,验证版本查询发往镜像、安装命令带 --registry=https://registry.npmmirror.com;再模拟镜像不可达,验证版本查询回退到官方源。

验收场景:

  1. 假设用户运行 wave update,当系统查询最新版本时,则请求发往 https://registry.npmmirror.com/wave-code/latest。
  2. 假设镜像不可达(网络不可达、超时或响应无法解析),当系统查询最新版本时,则静默回退到官方源 https://registry.npmjs.org/wave-code/latest,且随后的安装也使用回退命中的那个源(只连得上官方源的机器,改用镜像安装会以同样原因失败)。
  3. 假设两个源都不可达,当系统查询最新版本时,则报错退出,且不执行任何安装命令。
  4. 假设用户在 Windows 上运行 wave update 且走后台执行,当分离子进程执行安装时,则命令同样附带镜像 registry 参数(与前台更新一致)。

用户故事:Windows 后台执行更新(优先级:P1) ​

作为 Windows 用户,我希望 wave update 不会因为当前进程占用全局 bin 文件而失败,以便更新可以顺利完成。

为什么是这个优先级:Windows 上 cmd.exe 执行 wave.cmd 时会保持文件句柄(不允许 rename/delete),若正在运行的 wave 进程直接同步执行 npm install -g,npm 覆盖 bin 文件(如 %APPDATA%\npm\wave.cmd)时会报 EPERM/EBUSY,导致更新失败。

独立测试:在 Windows 上从运行中的 wave 进程发起有更新的 wave update,验证当前进程先退出,随后独立的分离进程完成安装,bin 文件被成功覆盖。

验收场景:

  1. 假设用户在 Windows 上运行 wave update 且有新版本可用,当命令执行更新时,则系统提示更新将在后台完成,立即退出当前进程,并由一个分离(detached)子进程在短暂延迟后执行安装命令。
  2. 假设更新正在后台执行,当用户看到提示后重新打开 wave 时,则新版本已生效。

边界情况 ​

  • 网络不可用怎么办? 系统应该优雅地处理错误并通知用户无法检查更新(镜像与官方源都不可达时才报错)。
  • 更新命令失败(如权限问题)怎么办? 系统应该通知用户失败原因并提供手动运行的命令(含镜像 registry 参数,与实际执行的命令一致;可能需要 sudo,Windows 上可能需要先关闭 wave 再运行)。
  • 工具未全局安装怎么办? 系统仍应尝试检测包管理器并执行更新,或在无法做到时提供说明。