dsh-restart:DSH Desktop 侧边栏「重启」按钮

前言

DSH(DeepSeek Harness)的理念是「一切皆插件」,但桌面端插件受限于 Electron 主进程的权限模型,无法直接拿到退出或重启的原语。官方的托盘退出会弹出原生确认框,而关闭窗口只是把窗口收进托盘,并不会真正退出进程。很多场景下,开发者希望有一个「重启」入口:点击后弹出与托盘退出一致的原生确认,确认后再让旧进程优雅退出、完全停稳,然后重新拉起。

dsh-restart 就是为此而做:在 DSH Desktop 侧边栏底部增加一个「重启」按钮。点击后触发与托盘退出完全相同的原生确认框(「还有对话在运行吗」等判断),确认后走官方 app.relaunch() 原语重启。该插件本身是纯客户端,外壳补丁则通过修改 resources/app.asar 提供重启入口。

核心功能

  • 在侧边栏底部注册一个「重启」按钮,样式与官方侧边栏底部按钮保持一致。
  • 点击按钮后弹出与托盘退出相同的原生确认框,复用官方的 quitConfirmation.confirm() 逻辑。
  • 确认后调用 app.relaunch() 触发重启,并在旧进程退出后再拉起新进程。
  • 若补丁未安装,按钮会变为禁用态,并提示「配套的外壳补丁未安装」。
  • 外壳补丁通过修改 lib/main.js 和 lib/preload-app.cjs 各一处,新增 restartApplication 通道与处理逻辑,共 1149 字节。
  • 插件本身不依赖 @deepseek-ai/dsh-client-ui-primitives,只使用官方允许的 UI 令牌与样式约定。

安装与启用

安装需要两步:先为 DSH Desktop 打补丁,再安装插件。插件目录即仓库根目录。

第 1 步:外壳补丁

必须先退出 DSH Desktop(运行中的 Electron 不允许替换 app.asar)。在补丁工具链目录下运行:

powershell -ExecutionPolicy Bypass -File "<本目录>\shell-patch\install.ps1"

脚本会自动探测 DSH 安装目录,检测进程是否已退出,按当前 app.asar 生成补丁版,首次安装时备份原始文件到 resources\app.asar.dsh-restart-backup,然后换上补丁版并校验 SHA256。若自动探测失败,可通过 -AppRoot "D:\你的路径" 显式指定。

第 2 步:安装插件

重新启动 DeepSeek Harness 后,在 DSH 里通过 plugin manager 安装插件目录:

<本目录的绝对路径>

安装完成后,侧边栏底部会出现「重启」按钮。

典型用法

  1. 启动 DSH Desktop,侧边栏底部出现「重启」按钮。
  2. 点击按钮,弹出与托盘退出相同的原生确认框。
  3. 若点击「取消」,窗口保持正常,之后从托盘退出不会再触发自动重启。
  4. 若点击确认,旧进程优雅退出、完全停稳,新进程自动拉起。

适用场景与注意事项

  • 适合需要在桌面端快速重启 DSH Desktop 的开发者与用户,尤其是需要频繁重置环境或清理状态的场景。
  • 插件以当前 DSH 进程权限运行,安装前建议检查源码与许可证。
  • 本机 Electron fuse EnableEmbeddedAsarIntegrityValidation 当前为 disabled,改 asar 不会触发启动校验;若未来版本打开该 fuse,补丁可能失效。
  • DSH 升级会覆盖 resources\app.asar,补丁需要重打(插件本身仍在)。升级后重跑一次 install.ps1 即可,脚本会自动续期基准。
  • 若新版外壳改动了补丁锚点代码形状,refresh 后锚点命中数不为 1,脚本会报错并保持原样,需人工更新 patch-asar.mjs 里的锚点。
  • 想彻底移除:先退出应用,还原外壳(powershell -ExecutionPolicy Bypass -File shell-patch\restore.ps1),然后在 DSH 里移除插件。

生态背景

DSH 是 DeepSeek 推出的「一切皆插件」架构,社区目录(如 SkillHub)是独立站点,与 DeepSeek 或幻方无官方从属关系。本插件属于客户端插件,仅用于桌面端侧边栏 UI 扩展。

总结

dsh-restart 通过在 DSH Desktop 外壳上开一个口子,把官方已有的退出确认与重启原语接到侧边栏按钮上,为桌面端提供了一个可靠、一致的重启入口。它不引入新机制,只是复用官方逻辑,并确保补丁失败时按钮自动禁用,不会静默失效。

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

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

Xiaoye