OpenBot Desktop 推出了新的预发布版,减少对用户现有运行环境的改动,并降低更新期间误删数据的风险。在个人电脑上使用该应用的用户,将通过应用专用运行空间和预先下载的更新来管理安装与升级。

CopilotKit 于 11月11日发布的版本为 1.0.2-rc.3。重点是隔离应用运行空间、自动更新旧版运行工具,以及在安装新版本时保留机器人和对话。

1. 在 OpenBot 专用虚拟机中运行

Podman 虚拟机是运行容器的独立运行空间。使用以下命令创建后,会采用在虚拟机内无需管理员权限的 rootless 模式。此前 OpenBot 尝试在其中运行需要管理员权限的本地后端,即负责处理应用功能的组件,导致程序卡在配置变更界面。

podman machine init

新版本使用在虚拟机内以管理员权限运行的 rootful 专用虚拟机。在 Windows 上,它与用户虚拟机并行运行;在 Mac 上,当用户虚拟机为 rootless 时使用专用虚拟机。Mac 上现有的 rootful 虚拟机或 Docker 则继续按原方式使用。

专用虚拟机名为 openbot。在 Windows 上,它不会占用 Docker 工具连接引擎的默认通道 docker_engine。它也不更改用户的默认 Podman 连接,因此安装应用后,现有工具仍保持原来的连接目标。

2. 运行前更新旧版引擎

安装和启动应用时会检查引擎版本,若低于运行要求则进行更新。根据发行说明,Docker Compose 低于 2.27.2 的版本属于更新对象,对应的 Docker Desktop 标准为低于 4.32。

Podman 低于 6.1 时会更新。Docker Desktop 4.27 曾出现配置已完成,却在启动阶段因 Compose 错误而停止的情况。新版本在负责读取容器运行配置的 Compose 开始工作前检查引擎,以处理这一问题。

Docker Desktop 会从 Docker 的更新渠道下载,核验用于判断文件是否变动的校验和,以及证明发布者和文件来源的签名后,覆盖现有安装进行更新。镜像、容器以及用于在容器外保存数据的卷都会保留。Podman 则使用 OpenBot 固定的安装文件更新,并在更新后重新启动此前运行中的用户虚拟机和容器。

3. 提前下载并保留应用数据

此前,点击安装后才会依次下载所需文件。新版本从首个界面开始,就会同时下载引擎镜像、Podman 安装文件、分发文件、应用安装所需的文件包及应用软件。在登录和授权期间也会继续准备。

根据公司的说明,新 Mac 安装示例中的引擎镜像为 937 MB,默认机器人所需的软件约为 1.1 GB。中断的下载会在下次运行时续传,使用前会将文件完整性校验值与预设值进行比对。

新版本发布后,应用还会在后台预先下载当前使用的机器人组件和有变更的后端。准备完成后,由用户发起更新,应用按停止、备份、应用新版本、重新启动的顺序执行。自动预下载在磁盘空间充足时运行,但不包括用于正式发布前验证的候选版,以及对外发布前制作的内部构建版本。

在 Windows 上,运行新安装文件覆盖旧版时,会跳过旧卸载程序的数据删除确认窗口进行更新。设置中的卸载功能会先停止由 OpenBot 启动的服务。若选择删除数据,会删除 OpenBot 虚拟机、后端和安装文件夹内的 OpenBot 文件,但保留该文件夹内的用户文件。若不选择删除,相关项目会保持停止状态,供重新安装使用。

4. 升级前检查数据库

本次发布不会额外执行改变数据库结构的迁移,即将现有数据调整为新版本结构的操作。1.0.1 数据库继续直接使用,定义数据库条目和结构的模式也保持为 0088_approval_reviewer_guidance。

从 1.0.0 或 0.3.x 升级的用户会经历这些中间版本的迁移。因此,升级准备应从确认当前数据库版本并备份升级前状态开始。

5. 环境隔离与自动管理的取舍

专用虚拟机减少对用户环境的干扰,引擎自动更新则将启动错误交由安装管理阶段处理。预先下载更新文件,也把用户点击更新后等待下载的过程转移到工作期间。

代价是,在 Mac 上会征得同意后暂时停止 rootless 用户虚拟机,并在应用退出时连同容器一起恢复;更新 Docker Desktop 时,容器也会暂停后重新运行。原先在用户虚拟机上的安装会在专用虚拟机中重新开始,旧数据则留在原虚拟机上。若要回退从 1.0.0、0.3.x 迁移后的数据库,必须恢复升级前的备份。

本版的核心在于减少对现有工作环境的干扰和更新失误,同时兼顾应用运行与数据保留。