dsh-update
Manifest validDeepSeek Harness (dsh) check-for-updates plugin — top-right "Check for Updates" UI + automatic upgrade after closing (npm / update-dsh.ps1)
dsh-update
A user-level plugin for DeepSeek Harness (dsh) that adds a "Check for updates" button to the top-right of the Web UI, plus a live update with a progress bar.
- Grey "Check for updates" button in the session header → "Checking"
- Blue spinner while checking
- Liquid-glass toast: "You are already on the latest version, X" when up to date
- Blue "New version" button + centered update dialog (release notes + "Update") when a newer version exists
- Click "Update" → a 5-second countdown, then dsh closes itself and the update runs on the way out (cancel any time, or close immediately)
- A desktop progress card appears in the bottom-right corner while it runs, showing the real stage (
[5/6] 安装依赖). It is draggable, its ✕ collapses it into a tray icon (white rounded tile with the blue DeepSeek whale), and clicking that icon brings the card back exactly where you left it - No console window is ever shown — the card is started through
launch-hidden.vbs(see Development notes) - A Windows notification in the bottom-right announces the result when it finishes
- Checks the GitHub releases feed and drives your own
launcher/update-dsh.ps1, so it updates the exact installation the launcher runs; never touches the launcher exe or~/.dshuser data
English
Requirements
- DeepSeek Harness (dsh) Web surface (
dsh web), v0.1.0+ - Node 22+ (uses the built-in
fetch) - The workspace layout the launcher expects: a
deepseek-harnesssource checkout with a siblinglauncher/update-dsh.ps1, plusgit,pnpm,curl.exeand PowerShell onPATH(the update drives that script)
Installation
Add the plugin to your web profile, then register the row.
dsh plugin --profile web add ADDD1118/dsh-update
Append this to ~/.dsh/profiles/web/cordis.patch.yml:
- insert:
- id: dsh-update
name: dsh-update
Restart dsh web and hard-refresh the browser (Ctrl+F5). The button appears in the top-right of the session header (beside "Session log").
The plugin ships prebuilt (
lib/index.js+lib/client.js), so no build step is required.
How the update works
- The check reads the GitHub releases feed for the newest tag; if it is newer than the running version, the "New version" flow lets you update.
- Clicking "Update" schedules the update rather than applying it live: the source checkout is the working directory of the running server, and Windows will not let that directory be replaced while the server is alive. The schedule is recorded in
~/.dsh/.dsh-pending-update.json. - A 5-second countdown then asks dsh to close itself via the launcher's
appExit— the same path as a normal shutdown, just without you clicking the X. Cancel at any point to unschedule. - When dsh shuts down with an update scheduled, a detached updater waits for the process to fully exit, then runs
launcher/update-dsh.ps1 -Tag <tag>(download → pnpm install → build) and writes the outcome to~/.dsh/.dsh-update-state.json. - While that runs,
update-progress.ps1polls that state file and draws the bottom-right card; both it and the completion toast run as independent processes, so they survive even if the updater dies. - Reopen dsh and the result is shown once. If the update completed, the marker clears itself automatically — no repeated nagging.
- Full output of the background update lands in
~/.dsh/.dsh-update.log.
Closing dsh never updates anything by itself. The only way an update runs is if you clicked "Update" and the schedule is still pending; there is no background auto-upgrade. If you force-kill dsh instead of closing it, the scheduled update does not run — use
更新DeepSeekHarness.cmdfor that case.
简体中文
功能
为 DeepSeek Harness (dsh) 的 Web 界面右上角新增 "检查更新" 按钮,并支持在关闭 dsh 后自动完成的后台更新。
- 会话头右上角灰色 "检查更新" 按钮 → 点击后变 "检查中"
- 检查时显示蓝色转圈
- 已是最新时弹出液态玻璃提示:"当前已是最新版本,版本号为 X"
- 有新版时按钮变蓝色 "新版本",点击弹出居中更新对话框(含更新说明 + "更新"按钮)
- 点 "更新" → 5 秒倒计时后 dsh 自动关闭,更新在退出过程中执行(随时可「取消排期」,或直接「立即关闭」)
- 更新期间桌面右下角悬浮进度小条,显示真实阶段(
[5/6] 安装依赖)。可拖动位置;点 ✕ 收起为托盘图标(白底圆角蓝色鲸鱼),点该图标会在你关闭时的位置把浮窗还原 - 全程不出现任何控制台窗口 —— 通过
launch-hidden.vbs隐藏启动(见 Development notes) - 完成后右下角弹出 Windows 通知告知结果
- 通过 GitHub releases 检测最新 tag,并驱动你自己的
launcher/update-dsh.ps1,因此更新的正是启动器实际运行的那份代码;不触碰启动器 exe 和~/.dsh用户数据
环境要求
- DeepSeek Harness (dsh) Web 界面(
dsh web),v0.1.0+ - Node 22+(用到内置
fetch) - 启动器期望的目录结构:
deepseek-harness源码检出 + 同级launcher/update-dsh.ps1;且PATH中有git、pnpm、curl.exe和 PowerShell(更新由该脚本执行)
安装
将插件加入 web profile,并注册插件行。
dsh plugin --profile web add ADDD1118/dsh-update
在 ~/.dsh/profiles/web/cordis.patch.yml 追加:
- insert:
- id: dsh-update
name: dsh-update
重启 dsh web 并强刷浏览器(Ctrl+F5)。按钮出现在会话头右上角("Session log" 旁)。
插件已预构建(
lib/index.js+lib/client.js),无需再执行构建。
更新原理
- 检查时会读取 GitHub releases 的最新 tag;若比当前运行版本新,则通过 "新版本" 流程更新。
- 点 "更新" 只是排期,不会立即执行:源码检出目录正是运行中服务的工作目录,而 Windows 不允许在进程存活时替换该目录。排期记录写入
~/.dsh/.dsh-pending-update.json。 - 随后 5 秒倒计时,通过启动器提供的
appExit让 dsh 自行退出 —— 与正常关闭走同一条路径,只是不需要你手动点关闭。倒计时期间可随时取消排期。 - 关闭 dsh 时若存在排期,一个分离的后台进程会等主进程完全退出后执行
launcher/update-dsh.ps1 -Tag <tag>(下载 → pnpm install → 构建),并把结果写入~/.dsh/.dsh-update-state.json。 - 更新期间由
update-progress.ps1轮询该状态文件绘制右下角进度卡;进度卡与完成通知都是独立进程,即使 updater 意外退出也能给出结果。 - 重新打开 dsh 后结果只提示一次。若更新确实已完成,标记会自动清除,不会反复弹窗。
- 后台更新的完整输出见
~/.dsh/.dsh-update.log。
「关闭 dsh」本身不会触发任何更新。 唯一会执行更新的是你点了「更新」且排期仍然存在 —— 没有后台自动升级。若是强制结束进程(而非正常关闭),排期的更新不会执行,这种情况下请用
更新DeepSeekHarness.cmd。
Development notes
src/**is bundled bytsdownintolib/index.js(host, ESM) andlib/client.js(browser, CJS handed to the shell viawindow.__ModuleLoader__.load).updater.mjsandupdate-progress.ps1ship unbundled and are loaded from disk at runtime.update-progress.ps1must stay saved as UTF-8 with a BOM. Windows PowerShell 5.1 reads.ps1files as ANSI (GBK on a Chinese system) when no BOM is present, which mangles its Chinese strings badly enough to break parsing.- The updater parses only the
[N/M]numbers out ofupdate-dsh.ps1's output and supplies its own stage labels: that script'sWrite-Hostoutput arrives in the console's OEM codepage, so decoding it as UTF-8 would produce mojibake. - PowerShell children are launched via
launch-hidden.vbs(wscript, window style 0) for the progress card. Two separate reasons:detached+unrefalone does not keep a PowerShell child alive after its parent exits, and on Windows 11 console apps are handed to Windows Terminal — sopowershell -WindowStyle Hiddenstill leaves a terminal window on the desktop, because that window belongs to the terminal host rather than to PowerShell. wscript is a GUI-subsystem host with no console of its own. dsh-update-icon.icois a multi-size ICO (16/24/32/48/64/128/256) composed from the repo's ownapps/web/public/favicon.svgwhale: the SVG is recoloured to the brand blue#4d6bfe(sampled frompackages/skill/skill-badge/assets/dsh-badge.png), rasterised with headless Edge, then drawn onto a white rounded tile. Note the favicon carries aprefers-color-scheme: darkrule that repaints the path white — it must be stripped before rasterising, or the whale comes out white-on-transparent and invisible.
License
Comments
Loading…
Similar plugins
by Liu-fu-gui
DeepSeek Harness (DSH) Desktop plugin: adds the missing 「升级 DSH」 entry — tray command + dsh_upgrade model tool, driving the official version service and installer channel via desktopRuntime.updates. 不
★ 0
MIT
JavaScript
Sep 19, 2026
dsh plugin --profile web add dsh-desktop-upgradeby stuarthu
Checks npm hourly for newer versions of the installed plugins and asks which ones to upgrade.
★ 1
↓ 71/wk
MIT
JavaScript
Aug 22, 2026
dsh plugin --profile web add dsh-update-notifierby jijiz1
One-click version checker, updater, and restart UI for DeepSeek Harness (DSH).
★ 0
MIT
JavaScript
Aug 21, 2026
dsh plugin --profile web add dsh-self-updaterby YannZhou
About section for the DeepSeek Harness settings: version info, npm latest/next update check with one-click install and auto-restart, and GitHub release history.
★ 5
↓ 133/wk
MIT
JavaScript
Sep 17, 2026
dsh plugin --profile web add @yannzhou/dsh-aboutby a1113622001
DeepSeek Harness (cordis) plugin: self-update for the harness launcher - checks npm for a newer @deepseek-ai/dsh, stages it, and applies it on harness exit (or update-and-restart from the web panel).
★ 3
MIT
JavaScript
Aug 22, 2026
dsh plugin --profile web add dsh-auto-updateby zhuoxuanliu53-svg
DSH Web GUI plugin: check and apply DeepSeek Harness official source updates
★ 0
TypeScript
Aug 21, 2026
dsh plugin --profile web add dsh-updater