无极开物Docs
版本发布

更新

Kaiwu 应用、CLI、安装程序、Docker 镜像及发布资产的更新机制。

Kaiwu(无极开物)包含多个应用与工具,具体的更新机制取决于各组件的安装方式。

本文档是以下内容的权威参考:

  • 哪些构件支持自动更新,哪些需要手动更新
  • 各类安装方式对应的更新命令
  • 稳定版、预览版和开发版通道如何映射到滚动发布标签
  • 自托管部署中“内置 UI”的获取途径

更新通道

大多数构件都会发布到以下通道中:

  • stable(生产通道)
  • preview(预发布 / 抢先体验通道)
  • dev(滚动 nightly / 最新的公开 dev 分支构建版本)

对外提供的公开承诺仅包含这三个通道名称。 内部的发布通道标识符属于流水线与配置层的实现细节,不应出现在用户命令或公开文档中。

在底层,通道是通过滚动发布标签(例如 cli-stable、cli-preview、cli-dev、server-preview、ui-web-dev)来实现的。这些标签会持续更新,始终指向对应通道中的最新版本。

各通道的可用性仍取决于具体构件。例如,部分构件提供了全部三个公开通道(stable、preview、dev),而其他构件目前可能仅开放其中一部分。

更新矩阵(完整构件一览)

下表列出了所有面向用户的已发布构件及其更新机制。

发布的构件获取方式更新触发时机是否自动更新?如何更新 / 控制
桌面端应用(Tauri,“Tori” / Kaiwu 桌面版)已安装的应用包(.app / 安装程序)应用检查经签名的更新源,并在应用内提示更新自动检查,由用户手动确认安装确认应用内的更新提示即可;所跟踪的通道由最初安装的构建版本决定
移动端应用(iOS/Android)App Store / Play Store(1) 可能拉取 JS/静态资源 OTA 更新;(2) 原生更新来自应用商店OTA 更新支持自动下载 + 用户手动应用;原生更新由应用商店统一管理点击应用内“有可用更新”横幅即可应用 OTA 更新(并重载应用)。原生更新则需在应用商店中安装新版本
Web 端应用(托管版)直接打开托管的 Web UI新版本上线后,用户刷新页面即可获取是(刷新后生效)刷新页面即可(如果浏览器缓存严重,请执行强制刷新)
自托管 Web UI 静态包(kaiwu-ui-web)由自托管服务器、Docker 镜像或运行器内置/提供服务随服务端运行时更新而变化(或在运行器下载更新的 UI 静态包时变更)取决于宿主方式(见下文)通过宿主方式控制更新(执行 Docker pull、kaiwu relay host install、重启运行器,或锁定标签)
中继服务器 Docker 镜像(KAIWUdev/relay-server)docker run … KAIWUdev/relay-server:⟦K15⟧拉取更新的镜像标签并重启容器时更新否执行 docker pull …,随后重启或重建容器;如需严格受控,可固定为不可变标签或摘要
中继服务器 Docker 镜像内置 UI包含在 Docker 镜像构建产物中随 Docker 镜像一同更新否与 Docker 镜像更新方式相同(拉取新镜像并重启)
中继服务器 npm 包(@KAIWU-dev/relay-server)npx … @KAIWU-dev/relay-server KAIWU-server …运行器启动时,会拉取所选滚动标签对应的最新服务端运行时与 UI 静态包是(重启后生效)重启运行器即可拉取最新的滚动标签;可通过 --tag server-vX.Y.Z 与 --ui-tag ui-web-vX.Y.Z 锁定版本;通过 --without-ui 或 KAIWU_SERVER_UI_DIR= 禁用 UI
中继服务器 npm 运行器“内置” UI由运行器动态下载并缓存(未直接打包在 npm tarball 中)运行器在需要时自动下载 UI 静态包是(重启后生效)控制方式与运行器相同:使用 --ui-tag …、--without-ui,或将 KAIWU_SERVER_UI_DIR 指向固定目录
托管中继运行时(kaiwu relay host …)安装 Kaiwu CLI 后运行 kaiwu relay host install …重新运行 kaiwu relay host install 时更新否运行 kaiwu relay host install(在本地执行或配合 --ssh user@host 执行)
CLI 安装程序(https://kaiwu.wujilabs.cn/install)curl …install | bash / irm …install.ps1重新运行安装程序(或通过 CLI 的自我更新功能进行更新)否重新运行安装程序,或使用 self update 配合运行对应通道的专用命令(kaiwu、hprev 或 hdev)
CLI 安装程序产物安装于 ~/.kaiwu/cli{,-preview,-dev}/{versions,current,previous} 下(兼容读取 ~/.KAIWU),并在 ~/.kaiwu/bin 和 ~/.local/bin(或 Windows 对应路径)中提供通道专属 shim 脚本运行 kaiwu self update、hprev self update、hdev self update 或重新运行安装程序时更新否(但会显示更新提示)安装程序对应的通道包括 stable(kaiwu)、preview(hprev)和 dev(hdev)。你仍可显式指定 `--channel preview
CLI npm 包(@KAIWU-dev/cli)npm install -g @KAIWU-dev/cli升级该 npm 包时更新否(但会显示更新提示)运行 npm install -g @KAIWU-dev/cli@latest(预览版运行 @next)
栈 npm 包(@KAIWU-dev/stack)npm install -g @KAIWU-dev/stack升级该 npm 包(或使用 hstack self update 运行时安装)时更新否(但会显示更新提示)运行 hstack self update(在栈内部推荐使用)或 npm install -g @KAIWU-dev/stack@latest

完整性校验(二进制文件与静态包)

自托管以及中继运行时的下载包在安装前均会经过校验:

  • SHA256:校验下载的压缩包是否与发布的校验和文件匹配。
  • minisign:使用内置的 Kaiwu minisign 公钥校验该校验和文件本身。

桌面端应用(Tauri)

桌面端应用采用 Tauri 的 updater 插件机制:

  • 自动检查更新源
  • 检测到新版本时,在应用内弹出横幅或提示
  • 确认安装更新后,会自动下载经签名的安装包并重启应用

所属的稳定版或预览版通道,取决于最初安装的桌面构建版本。 开发版构建采用完全相同的更新机制,但会指向 dev 更新源。

应用端(移动端与 Web 端)

Web 端应用(托管版)

托管的 Web UI 更新通过常规部署下发:用户只要刷新页面即可获取最新版本。

移动端应用(iOS/Android)

包含两类不同的更新方式:

  1. 原生更新(新的二进制应用):通过 App Store / Play Store 分发。
  2. OTA 更新(JS / 静态资源):启用后,应用每次切换至前台活跃状态都会检查 OTA 更新,拉取新资源,并展示“有可用更新”横幅供用户点击应用(重载应用生效)。

OTA 更新受服务端特性门控 updates.ota 控制(若服务端禁用此项,则默认关闭)。

CLI 更新(二进制版本与 npm 版本)

更新提示(可选择关闭)

CLI 可在 TTY 交互式会话中定期打印“有可用更新”提示,并在后台执行版本检查。

提示信息中会包含执行更新的命令:

  • kaiwu self update

禁用更新检查与提示:

  • KAIWU_CLI_UPDATE_CHECK=0(兼容 KAIWU_CLI_UPDATE_CHECK=0)

调整检查频率:

  • KAIWU_CLI_UPDATE_CHECK_INTERVAL_MS
  • KAIWU_CLI_UPDATE_NOTIFY_INTERVAL_MS

hstack(栈工具)遵循相同的更新模式:

  • 提示信息包含:hstack self update
  • 禁用命令:KAIWU_STACK_UPDATE_CHECK=0

如果是通过官方安装程序安装 CLI(二进制版本)

检查 / 更新:

kaiwu self check
kaiwu self update

预览版通道:

kaiwu self update --channel=preview

开发版通道:

hdev self update

锁定到特定版本(或类似 latest/next 的滚动标签):

kaiwu self update --to 0.1.2

重新运行安装程序同样是有效的更新途径:

curl -fsSL https://kaiwu.wujilabs.cn/install | bash

如果是通过 npm 安装 CLI

使用 npm 进行更新(运行 kaiwu self update 时 CLI 会打印出确切的命令):

npm install -g @KAIWU-dev/cli@latest

预览版:

npm install -g @KAIWU-dev/cli@next

安装程序与二进制版本(自动与手动更新划分)

安装程序和二进制安装包不会在后台自动更新。

其中自动执行的部分:

  • 交互式 CLI 会话(TTY)中的更新提示:
    • kaiwu 会打印提示,引导你运行 kaiwu self update
    • hstack 会打印提示,引导你运行 hstack self update

需要手动执行的部分:

  • 实际执行版本更新(运行更新命令或重新执行安装程序)

CLI 安装程序(install)

该安装程序支持若干适用于自动化脚本的操作参数:

# Check the installed binary + PATH shim
curl -fsSL https://kaiwu.wujilabs.cn/install | bash -s -- --check

# Print the latest version available on the selected channel
curl -fsSL https://kaiwu.wujilabs.cn/install | bash -s -- --version

# Update/reinstall to latest on the selected channel
curl -fsSL https://kaiwu.wujilabs.cn/install | bash

Windows(PowerShell)下的更新方式与此相同(重新运行安装程序)。

托管中继运行时(kaiwu relay host …)

运行以下命令安装或更新托管中继运行时:

kaiwu relay host install --mode system

远程主机(通过 SSH):

kaiwu relay host install --ssh user@host --mode system

随后即可使用 kaiwu relay host status 与 kaiwu relay host start|stop|restart 进行管理。

服务端 / 自托管更新

目前支持多种自托管部署形态。另请参阅:自托管运行时(安装程序与运行器对比)。

托管中继运行时(kaiwu relay host …)

更新 / 重新安装(即 install-or-update):

kaiwu relay host install --mode system

随后根据需要重启:

kaiwu relay host restart --mode system

中继服务器运行器(@KAIWU-dev/relay-server)

默认情况下,该运行器会跟踪以下滚动标签:

  • 服务端运行时:server-stable / server-preview / server-dev
  • UI Web 静态包:ui-web-stable / ui-web-preview / ui-web-dev

更新在重启后生效(运行器每次启动时都会获取最新的标签元数据)。

注意:

  • 解压后的构件会缓存于当前平台的缓存目录下。
  • 如果启用了 UI 且未设置 KAIWU_SERVER_UI_DIR,运行器会自动下载 UI 静态包并设置 KAIWU_SERVER_UI_DIR。

版本锁定示例:

npx --yes --package @KAIWU-dev/relay-server KAIWU-server \
  --tag server-v0.1.0 \
  --ui-tag ui-web-v0.3.0

中继服务器 Docker 镜像

只有在拉取更新的标签并重启容器时,Docker 镜像才会更新:

docker pull KAIWUdev/relay-server:preview
docker compose up -d --force-recreate

内置的 UI 会随镜像一同更新。

发布构件

有关构件命名规范、受支持的平台目标以及清单文件详情,请参阅发布构件。

© 乾元执中(南京)科技有限公司 · WUJI-Labs

On this page