dsh-version-manager:在 DSH 里统一管理安装、升级与重启

前言

用 DeepSeek Harness(DSH)做智能体开发时,同一个机器上往往同时存在多种「dsh」来源:全局 npm install -g、npx 缓存里的多版本并存、以及官方桌面客户端。升级 npx 副本不会立刻换掉当前进程,重启又要自己拼命令;桌面装包和 CLI 装包也不在同一个界面里。下面介绍的 dsh-version-manager(维护者 ccsdyc)是一个 DSH 客户端插件(Harness bundle),在左侧导航增加「版本管理 / Versions」面板,把 npm、npx、desktop 三类安装放在分段切换器里统一查看和操作。

这是什么

dsh-version-manager 在 npm 上发布为 dsh-version-manager(当前资料中的包版本为 1.0.0,许可证 MIT)。它通过 cordis.patch.yml 注入客户端 UI,并在 Host 侧注册一组 /dsh-versions/* API,用于列举本机安装、拉取 registry 最新 rc/alpha、执行升级与删除、下载官方桌面安装包、写桌面快捷方式,以及在 CLI 场景下安全重启 DSH。

分类上属于 客户端 插件:package.json 中 dsh.client.platform 为 web,并依赖 @deepseek-ai/dsh-client-ui-sidebar 等布局能力。社区目录页见 SkillHub;源码与完整说明见 GitHub。

核心功能

三区域版本面板

面板默认按「当前进程来源」优先排序,其余区域为 npm、npx、desktop。切换器下有一条状态行:区分正在运行的版本与磁盘上已安装的最新版本(例如 npx 并列安装时出现 running 0.2.2-alpha.2 · newest installed 0.2.2-alpha.3)。

  • npm:全局安装的 @deepseek-ai/dsh,可升级,不可删除。
  • npx:缓存中的多版本列表;最新 rc 与 alpha 各一行,其余已装版本可升级或删除;running 角标跟当前进程的 _npx/<hash>。
  • desktop:读取本机已装桌面版(Windows 卸载注册表、macOS DeepSeek*.app 的 CFBundleShortVersionString),并与 download.deepseek.com 固定安装 URL 上解析出的发布版本对比;可触发两步式下载与启动安装程序。

有未确认的更新时,侧栏入口与对应分段会出现 new 标记;点开分段即视为确认该区域的发布版本,状态写入 localStorage 键 dsh-version-manager:dismissed。

升级、删除与重启

升级路径与 README 一致:

  • 全局 npm:npm install --global @deepseek-ai/dsh@<version>
  • npx:npx --yes @deepseek-ai/dsh@<version> --version(只填充缓存,不删旧副本)

若升级的是当前进程所在安装,面板会要求确认并在完成后自动重启;仅升级另一区域则只安装副本。工具栏 Restart DSH 仅对 CLI 启动(npm/npx)且 launcher 提供 ctx.appExit 时可用,桌面客户端不走此路径。重启日志默认落在 $DSH_HOME/logs/dsh-version-manager-restart.log(macOS、Windows 另有回退路径)。

删除规则:不能删「当前运行来源」和「各渠道最新已装」;npm 区域不提供删除。npx 删除会清理对应 _npx 目录及匹配的 npm cache 索引项。

桌面客户端一键装包

官方安装包 URL 固定、文件名不含版本号:

https://download.deepseek.com/desktop/dsh-latest-windows-x64.exe
https://download.deepseek.com/desktop/dsh-latest-macos-arm64.dmg
https://download.deepseek.com/desktop/dsh-latest-macos-x64.dmg

流程分两步:先用 Host 原生目录选择器选保存位置,再下载并拉起安装程序(macOS 用 open 挂载 DMG)。仅接受上述域名与 URL;下载失败会删除残缺文件。

桌面快捷方式

工具栏 桌面快捷方式 / Desktop shortcut 按本次会话的启动方式写启动器,而不是简单指向「已安装的桌面 exe」。Windows 生成 DeepSeek Harness.lnk;macOS CLI 为 DeepSeek Harness.command,桌面客户端为指向 bundle 的 DeepSeek Harness.app 符号链接。CLI 快捷方式会保留当前的 profile 与启动参数(含 web / --profile 等,去掉 --no-open)。

Windows 默认图标来自插件自带的 assets/tray.ico;可通过环境变量 DSH_VERSION_MANAGER_ICON 覆盖。图标会先复制到 %LOCALAPPDATA%\dsh-version-manager\shortcut.ico 再写入 .lnk,以避免工作区低完整性标签导致 Explorer 不刷新图标。

语言与界面

面板语言默认由 IANA 时区推断:大陆常用时区(如 Asia/Shanghai)显示中文,其余(含港澳时区)显示英文,不跟随应用 locale。页脚 English / 中文 按钮优先级更高,选择保存在 localStorage。

安装与启用

插件以 npm 包形式发布。README 给出的标准装法如下(web profile):

dsh plugin --profile web add dsh-version-manager

若 CLI 只添加了依赖,还需在插件管理器中启用 bundle,再重启 DSH。Host 端在启动时加载,package.json 要求 Node >= 24.9.0。

离线或无法直接访问 registry 时,可将仓库中的 dsh-version-manager 文件夹打成 zip(根目录为文件夹本身),在目标机上:

  1. 解压到任意路径,例如 D:\dsh\dsh-version-manager。
  2. 完全退出 DSH。
  3. Windows 双击 install.cmd;macOS/Linux 执行 sh install.sh。
  4. 重启 DSH 并刷新页面。

安装脚本会定位 %DSH_HOME%(或 ~/.dsh)与 web profile,尝试 dsh plugin --profile web add link:<路径> 并写入本地 link;可用 --profile、--dsh、--dry-run、--no-cli 等选项。安装前会把 profile 的 package.json 备份为 package.json.dshvm-backup。

自托管插件市场索引可参考 README:用 node tools/make-market-index.mjs 生成 index.json 后挂到 HTTPS 静态站点,再在 DSH 的 plugin-market 设置里添加该 URL(格式 1 支持 npm/Git 源,不支持 zip 作为市场源)。

典型用法

日常操作主要在 DSH Web 客户端左侧 版本管理 / Versions 入口完成,无需记忆零散 shell 命令。

  1. 打开面板,在分段切换器中查看 npm / npx / desktop 的安装与运行状态;有红点或侧栏 new 时先做 re-check 或点开对应分段确认更新。
  2. 在 npx 或 npm 区域对目标 semver 执行升级;若提示需重启,使用状态行中的 Restart on 指定版本动作或工具栏 Restart DSH。
  3. 需要固定启动方式时,点击 桌面快捷方式,在桌面得到与当前会话一致的启动器(npx 会话不会误写成桌面 exe 快捷方式)。
  4. 桌面版落后时,切换到 desktop 分段,选目录后完成官方安装包下载与安装。

Host 侧路由包括 /dsh-versions/list、/upgrade、/restart、/delete、/desktop/install、/shortcut 等,Client 通过同源 fetch 调用;具体行为以 README「Transport」一节为准。

适用场景与注意

适合谁:经常在同一台开发机上切换 DSH 的 rc/alpha 通道、用 npx 试新版本又不想手工清缓存,或希望从 Web UI 拉官方桌面安装包并与本机已装版本对比的开发者。

权限与安全:插件与当前 DSH 进程使用相同权限执行升级、删缓存、写桌面快捷方式、下载安装包等操作。安装前应阅读 源码仓库 与 MIT 许可证,确认路由与 shell 调用符合你的环境策略。修改 index.js 后必须重启 DSH 才能生效新 Host 逻辑;仅刷新页面只重载浏览器端。

环境依赖:面板会驱动本机 npm/npx;Windows 快捷方式优先 PowerShell;macOS 读取 plist 依赖 plutil/open。registry 与桌面安装功能需要网络。Intel macOS 的 x64 DMG 若未返回 Content-Disposition,界面会显示 latest version unavailable 且不设更新点——README 说明这是当前制品行为,将来头信息补齐后会自动生效。

生态说明:DSH 采用「一切皆插件」的扩展方式;SkillHub 等社区目录由第三方维护,与 DeepSeek / 幻方无官方从属关系,本文不以「官方应用商店」描述安装来源。

结尾

经过上面的步骤,可以把本机多种 DSH 安装源收拢到一块面板:看得见「正在跑谁、磁盘上最新是谁」,按需升级、删 npx 副本、拉桌面包,并在 CLI 场景下一键重启。需要安装名与时区语言细节时,以仓库 README 为准。

  • 目录页:https://www.skillhub.cn/plugins/ccsdyc/dsh-version-manager
  • GitHub:https://github.com/ccsdyc/dsh-version-manager
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye