← Back to home@pomelotea-yuzu

dsh-updater

DeepSeek Harness (dsh) update checker plugin: check the latest release from GitHub right inside the Settings panel, view the changelog, and copy the upgrade command. Check-only — no auto install.

Stars
0
Language
TypeScript
Created
Aug 25, 2026
Updated
Aug 25, 2026
GitHub repo

Introduction

dsh-updater

DeepSeek Harness(dsh)更新检查插件:在 web 设置面板新增「更新」分区,展示当前 安装版本与 GitHub Releases 最新版本、更新说明摘要与 Release 跳转链接,并提供 一键复制升级命令。只检查、给命令,不自动安装(升级由你自己在终端执行)。

功能

  • 设置面板新增「更新」分区(左侧导航最后一项,order 20,↑ 箭头图标)
  • 应用启动时后台静默检查一次(host 内存缓存兜底,不重复打 GitHub)
  • 手动「检查更新」强制刷新
  • 展示:当前版本 / 最新版本 / 检查时间 / 状态(已最新 / 可更新 / 检查失败)/ 最近版本更新说明 / 「打开 Release 页面」按钮
  • 检测到新版本时展示升级命令卡片:「复制更新命令」按钮 (命令按实际安装目录生成:npm install -g --prefix <安装目录> @deepseek-ai/dsh@latest --registry …)
  • rc 预发布版本也算「可更新」(DSH 目前全是 rc)

安装

dsh plugin --profile web add "link:D:\dsh_plugin\dsh-updater"

重启 dsh web 生效;仅改 client 端只需浏览器强刷(Ctrl+Shift+R)。

如何升级 DSH(复制命令后手动执行)

  1. 关闭正在运行的 dsh web
  2. 新终端执行「更新」分区里复制的命令(npm 重装到原安装目录)
  3. dsh --version 确认新版本,再启动 dsh web

为什么不做一键安装:Windows 上 npm 重装需删除正在运行的 dsh 文件, 而 web 进程自己正占用着它们,必须先退出才能升级——这是平台限制。

数据流

设置页「更新」分区
  └─ GET /dsh-updater/status(或 /check?force=1)
       └─ host 端:
           1. 当前版本:process.argv[1](dsh CLI 的 bin.js)上一级 package.json
              —— 与 `dsh --version` 同源;回退 import.meta.resolve / 子进程 dsh --version
           2. 安装目录:由 bin.js 路径向上推导 npm --prefix(生成升级命令用)
           3. GitHub Releases API(官方源 https://api.github.com,仅此一个)
              失败自动回退:node --use-system-ca 子进程 → curl.exe(schannel)
           4. 剥掉 dsh-v 前缀,npm semver 规则比较(rc 算更新)
           5. 结果内存缓存 10 分钟(GitHub 未认证限流 60 次/时/IP)

配置

profile 的 cordis.patch.yml 可覆盖(默认值已够用):

- id: dsh-updater
  config:
    timeoutMs: 10000   # GitHub 请求超时(毫秒)
    cacheMs: 600000    # 检查结果缓存时长(毫秒)

开发

pnpm install
pnpm check       # client.js 语法
pnpm typecheck   # host 端类型
pnpm test        # 单元测试
pnpm build       # tsc + 复制 client → lib/

改 host 端(src/*.ts)需重启 dsh web;仅改 client/client.js 只需浏览器强刷。