前言¶
DeepSeek Harness(DSH)的设计理念是“一切皆插件”,这使得通过插件管理运行时版本变得必要。在多环境部署中,手动检查 Web 进程版本、磁盘版本以及 npm 上的最新发布,并完成安装与重启,是一个重复且容易出错的流程。dsh-version-autoupdate 是一个双面 Cordis 插件,旨在通过一个可拖动的浮动胶囊,提供可视化的版本检测、安装和确认重启工作流。
功能¶
该插件主要提供以下能力:
- 版本可视化:显示可拖动的浮动版本胶囊,实时反映运行版本、磁盘版本和 npm 目标版本。
- 自动检测:默认每 60 秒检测一次版本状态;执行更新期间会加快刷新频率。
- 包管理支持:支持 npm、pnpm 和 Yarn Classic 的全局安装。
- API 与系统集成:提供 HTTP API 用于状态查询和更新操作;支持离线安装和 systemd 服务管理。
- 灵活的更新策略:支持
preview(含 alpha/rc)和stable(仅正式版)两个渠道。
安装与启用¶
通过 npm 全局安装该插件包:
npm i -g dsh-version-autoupdate
安装完成后,通过 DSH 的插件管理流程加载该包。该包声明了 dsh.bundle.patch 和 exports["./client"]。如果需要手动配置 profile,Host 插件行配置如下:
- id: dsh-version-autoupdate
name: dsh-version-autoupdate
config:
channel: preview
updatePolicy: platform
启动或重启 dsh web 后,通过浮动胶囊查看版本并执行检查、安装、确认重启。
配置¶
插件提供以下配置项:
| 字段 | 默认值 | 说明 |
|---|---|---|
packageManager |
npm |
指定包管理器,支持 npm、pnpm、yarn 或 auto。 |
packageManagerPath |
无 | 包管理器可执行文件的绝对路径(仍会核对全局安装目录)。 |
channel |
preview |
更新渠道。preview 取语义化最高版本(含 alpha/rc);stable 仅取正式版,无正式版时回退。 |
updatePolicy |
platform |
更新策略。platform 默认:Windows 允许 CLI 更新,Linux/macOS 仅检测。full 可启用支持的 CLI 更新操作。 |
minAvailableMemoryMb |
400 |
Linux 可用内存低于阈值时拒绝更新,设为 0 可关闭。 |
installTimeoutMs |
1200000 |
安装总超时时间(默认 20 分钟)。 |
offlineInstall |
auto |
离线安装策略。always / never 可覆盖,随包模板使用 never。 |
systemdUnit |
dsh-web.service |
离线安装时用于停止和启动的 systemd unit 名称。 |
restartDelayMs |
2000 |
确认重启后的延迟时间。 |
重启日志、离线日志和状态文件存储在非空的 DSH_HOME 中(未设置时默认为 ~/.dsh)。插件未提供独立的 home 配置项。
使用与限制¶
- 全局安装限制:只有当包管理器的全局目录与当前运行包的真实路径一致时,才执行全局安装。npx、本地项目、源码或未知安装来源不执行全局安装。
- 桌面版差异:桌面版请使用 DSH 官方更新流程;插件尚未接入桌面原生 updates bridge,桌面版和 npx 不提供进程重启功能。
- Windows 行为:Windows 不自动重启,需要用户手动点击确认。
- API 接口:插件提供以下 HTTP API:
GET /dsh-version-updater/statusPOST /dsh-version-updater/checkPOST /dsh-version-updater/installPOST /dsh-version-updater/restartPOST /dsh-version-updater/start-update(兼容旧入口)
结尾¶
dsh-version-autoupdate 为 DSH 插件开发者提供了一个可视化的版本管理方案,通过标准化的 Host 配置和 HTTP API,能够较好地融入现有的部署流程。在使用前,请务必确认包管理器的全局目录路径与运行环境一致,并根据操作系统策略选择合适的 updatePolicy。