前言¶
DeepSeek Harness(DSH)官方 Windows 桌面端在系统托盘右键菜单里,通常只有「打开」和「退出」。日常开发或长时间挂着任务时,若 Host 或前端界面状态异常,往往需要关掉整个应用再开,或依赖开发版菜单里才有的操作,而托盘入口并不完整。
dsh-tray-restart 是社区维护的客户端类插件,在官方桌面托盘菜单中增加「重启应用与 Host」与「刷新页面」,并在桌面端自动更新覆盖 app.asar 后自动重新打补丁。下面介绍它的定位、能力与安装方式。
这是什么¶
- 名称:dsh-tray-restart(仓库 QIRSHENG/dsh-tray-restart)
- 维护者:QIRSHENG
- 分类:客户端(DeepSeek Harness 社区插件目录中的「客户端」类)
- 当前版本(package.json):1.1.0
- 许可证:MIT
插件在 Cordis Host 子进程中加载,通过等长改写官方打包的 resources/app.asar 内 /lib/main.js 的托盘菜单模板,把两项菜单挂到 Electron 主进程的托盘右键菜单上;官方未暴露托盘主进程扩展点时,这是 README 中说明的实现路径。
核心功能¶
托盘菜单变化¶
安装并重启应用后,托盘菜单由:
打开 DeepSeek Harness
────────────
退出 DeepSeek Harness
变为:
打开 DeepSeek Harness
重启应用与 Host ← 新增
刷新页面 ← 新增(刷新前端,Host 不重启)
────────────
退出 DeepSeek Harness
两项菜单分别做什么¶
- 重启应用与 Host:执行
app.relaunch(); quitWithoutConfirmation(),与官方开发版应用菜单里的同名项一致——干净退出 Host、重启整个应用,不弹「任务仍在运行」的确认框。 - 刷新页面:对主窗口执行
webContents.reload(),等价于前台按Ctrl+R。只重载前端页面,Host、会话和正在跑的任务都不受影响;适合前端改坏、白屏或需要重新加载界面时使用。
两项复用官方已有的本地化文案(messages.restartAppHostMenu / messages.reloadPageMenu),中英文随系统语言切换。
更新后自动重打补丁¶
桌面端自动更新会把 app.asar 换回官方版本。插件在每次 Host 启动约 2 秒后运行检查,必要时重新应用补丁。README 说明:更新后第一次启动只负责重打补丁,托盘新菜单在下一次启动才出现。
补丁器支持从 1.0.x(仅重启项)升级到 1.1.0(重启 + 刷新两项),并同步 asar 目录内 /lib/main.js 的 SHA-256,以便在开启 EnableEmbeddedAsarIntegrityValidation 时仍能通过校验。
环境与限制¶
- 需要 DSH 桌面端 0.2.x(Windows);
package.json中engines.dsh为>=0.2.0 <0.3.0。 - README 记载已在
@deepseek-ai/dsh-desktop0.2.1-rc.2、Windows 11、Node 24 上验证。 - 仅支持官方 Windows 桌面端;开发模式、
dsh web、dsh --profile headless无系统托盘,插件会安全跳过。 - 非 Windows(macOS 菜单栏、Linux 托盘实现不同)不支持。
- 主进程托盘代码仅在启动时加载,安装或补丁后需完全退出并重新打开应用才能看到菜单;官方更新后通常需启动两次(第一次重打补丁,第二次显示新菜单)。
安装与启用¶
桌面端 profile 由 Electron 应用独占管理,dsh plugin --profile desktop ... 会被拒绝,桌面端请走插件管理器(或由 agent 调用 plugin_manager 的 install_bundle)。
方式一:插件管理器(桌面端推荐)¶
- 将仓库克隆到任意目录(安装命令以 README 为准):
git clone https://github.com/QIRSHENG/dsh-tray-restart.git
- 打开 DeepSeek Harness → 设置 → 插件,选择「从本地目录安装」,指向含
package.json的dsh-tray-restart目录。 - 安装完成后完全退出并重新打开 DeepSeek Harness。
方式二:CLI(非桌面端独占的 profile)¶
dsh plugin --profile <profile> add github:QIRSHENG/dsh-tray-restart
# 或本地目录
dsh plugin --profile <profile> add C:\path\to\dsh-tray-restart
同样需要在安装后完全退出并重新打开应用。
若托盘菜单未变化,可先托盘 → 退出,在 PowerShell 中于插件目录执行:
node lib/patcher.mjs status
确认输出中 status: "patched" 后再启动应用。
典型用法与手动补丁 CLI¶
日常使用只需通过托盘右键选择「重启应用与 Host」或「刷新页面」。
不安装插件、仅用 Node.js ≥ 20 时,也可在插件仓库目录运行补丁器(默认 asar:%LOCALAPPDATA%\Programs\DeepSeek Harness\resources\app.asar,可用环境变量 DSH_DESKTOP_APP_ASAR 覆盖):
node lib/patcher.mjs status # 只读检查
node lib/patcher.mjs apply # 需要时打补丁(幂等)
node lib/patcher.mjs apply --dry-run # 只检查能否安全打补丁
node lib/patcher.mjs restore # 写回安装前的原始 main.js
加 --json 输出机器可读结果;运行记录写在 %USERPROFILE%\.dsh\dsh-tray-restart\status.json。
卸载¶
# 1. 先还原托盘菜单
node lib/patcher.mjs restore
# 2. 移除插件(桌面端:插件管理器;其它 profile 用 CLI)
dsh plugin --profile <profile> remove dsh-tray-restart
若 restore 报 size-mismatch(桌面端版本已变化),README 建议直接重新安装官方桌面端。
适用场景与注意¶
适合谁:在 Windows 上长期使用 DSH 官方桌面端、希望从托盘一键重启整个应用或只刷新前端、又不想在每次自动更新后手动改 app.asar 的用户。
安全与边界(摘自 README):只改写 /lib/main.js 中已知的托盘菜单模板;锚点不匹配或补丁会变长时会拒绝写入。不改注册表、不加启动项、不联网。升级后若补丁失败,菜单保持官方原样,不应影响启动。与其它直接修改 app.asar 的工具可能冲突;status: "unsupported" 时不应强行写入。应用无法启动时,可先 node lib/patcher.mjs restore,仍不行则重装桌面端。
权限与信任:插件在 DSH Host 进程权限下运行,并会修改本地桌面安装包内的 app.asar。安装前建议阅读仓库源码与 MIT 许可证,自行判断是否符合环境合规要求。
结尾¶
dsh-tray-restart 用最小 asar 补丁把开发版里已有的重启与刷新能力补到 Windows 托盘菜单,并在桌面端更新后自动重打补丁,适合需要稳定托盘运维入口的 DSH 桌面用户。
- 社区目录页:https://www.skillhub.cn/plugins/QIRSHENG/dsh-tray-restart
- 源码与完整说明:https://github.com/QIRSHENG/dsh-tray-restart
社区插件目录为独立站点,与 DeepSeek / 幻方无官方从属关系;星标与版本以仓库当前信息为准。