dsh-power-menu:在 DSH Desktop 标题栏一键关闭或重启应用

前言

用 DeepSeek Harness 桌面版改插件、改 profile 配置时,往往需要完整退出或重启一次进程才能生效。DSH Desktop 关窗口只会收进系统托盘,真正退出或重启通常要从托盘菜单里找「退出」,步骤偏长。社区插件 dsh-power-menu(维护者 xichen-62)在会话标题栏右上角增加一个电源按钮,菜单里只有「关闭DSH」和「重启DSH」两项,把这两类操作搬到当前界面里完成。

下面介绍插件定位、能力、安装方式与使用注意。插件仅支持 Windows 上的 DSH Desktop,许可证为 MIT;当前 package 版本为 0.1.17(以仓库为准)。

这是什么

dsh-power-menu 是 DSH 的客户端类插件:在桌面版 UI 挂载电源菜单,通过本机回环 HTTP 接口触发关闭或重启整个 DeepSeek Harness 桌面应用(Electron 主进程与 Host)。它不依赖外部服务,README 写明纯本地、无遥测。

社区插件目录由独立站点维护,与 DeepSeek / 幻方无官方从属关系;安装前建议自行查看源码与许可证。插件以当前 DSH 进程权限运行,关闭与重启会中断正在生成的回答、工具与后台任务。

核心功能

经 README 核实,插件主要提供以下能力:

  1. 右上角电源按钮:位于会话标题栏图标行最右侧,顺序为「布局 / 侧栏 / 电源」。欢迎页与对话页共用同一挂载位置。
  2. 关闭DSH:结束整个桌面应用,不自动重新启动;需用户自行再打开 DSH。
  3. 重启DSH:结束应用,等待旧端口释放后用原可执行文件重新拉起,窗口自动回来。
  4. 键盘与反馈:菜单内可用方向键、Home/End、Enter/空格、Esc;执行时整页半透明遮罩显示「正在关闭DSH…」或「正在重启DSH…」。
  5. 安全边界:Host 注册 POST /api/dsh-power-menu/shutdown、POST /api/dsh-power-menu/restart、GET /api/dsh-power-menu/health,仅接受本机回环地址并做同源相关校验;dsh web 下返回 409,不杀其他进程。

兼容性说明(来自 README):Windows 10 / 11;在 DSH Desktop 0.2.1-rc.2 上实测通过(2026-10-18);engines 要求 dsh >= 0.2.0-rc.1、node >= 22(跟随 DSH 自带 Node)。

安装与启用

DSH 插件管理器可能只把包写入 dependencies、不自动写入 dsh.profile.bundles。README 强调:装完后必须再运行一次 enable.ps1(或使用仓库的 install.ps1 一并处理),然后重启 DSH;否则点按钮可能出现 HTTP 404。

方式 A:一键脚本(推荐)

在插件仓库目录执行:

powershell -ExecutionPolicy Bypass -File .\install.ps1

GitHub 直连较慢时可加镜像参数:

powershell -ExecutionPolicy Bypass -File .\install.ps1 -Mirror

脚本会清理旧的 link/junction 残留、用 DSH CLI 安装、补齐 dsh.profile.bundles 并提示重启。无 git 时脚本可从 Release 下载 dsh-power-menu-0.1.17.tgz 本地安装(README 有 -TgzPath、-Sha256 等说明)。

方式 B:插件市场

  1. 打开 DSH Desktop 插件 / 插件市场,选择 添加插件,输入:
github:xichen-62/dsh-power-menu
  1. 安装完成后,在仓库目录运行:
powershell -ExecutionPolicy Bypass -File .\enable.ps1
  1. 重启 DSH,在 已安装 中确认 dsh-power-menu 为「启用中」。

方式 C:命令行

dsh plugin --profile desktop add github:xichen-62/dsh-power-menu

随后在仓库目录执行 enable.ps1(同上),并重启 DSH。若 PATH 中没有 dsh,使用 DSH 安装目录内的 dsh / dsh.cmd。

无 git 且 github: 安装失败时,README 给出 tarball 示例:

dsh plugin --profile desktop add https://github.com/xichen-62/dsh-power-menu/releases/latest/download/dsh-power-menu-0.1.17.tgz

典型用法

  1. 在会话标题栏右上角点击电源图标。
  2. 选择 关闭DSH 或 重启DSH。
  3. 等待遮罩提示;关闭则退出应用,重启则在数秒内自动拉起窗口。
动作 结果 需要手动重开?
关闭DSH 结束整个桌面应用 是
重启DSH 结束应用后重新拉起 否

README 注明:点击即执行,无二次确认;操作前请保存手头工作。若需最干净的退出与 Chromium 存储落盘,仍可使用托盘「退出」——插件通过结束主进程交接,主进程 before-quit 可能被跳过,README 在常见问题中有说明。

排查时可查看本地日志目录:%USERPROFILE%\.dsh\dsh-power-menu\(含 power-menu.log、helper-*.log)。

工作原理(简述)

插件运行在 Host 子进程内,无法直接调用 Electron 的 app.quit() / app.relaunch()。关闭或重启时,Host 将交接信息写入 %USERPROFILE%\.dsh\dsh-power-menu\,再 spawn 分离的 lib/helper.cjs:helper 对 Electron 主进程执行 taskkill(不带 /T),让 Host 有机会在 IPC 断开后走 application.shutdown;重启模式下 helper 等待端口释放后用原可执行文件重新拉起。细节与流程图见仓库 README「工作原理」一节。

适用场景与注意

适合谁:主要在 Windows 上使用 DSH Desktop、频繁改插件或 profile 并需要快速重启的开发者。

不适合:非 Windows 环境;仅使用 dsh web 的场景(接口会拒绝)。

安装与权限:插件与 DSH 同权限;安装前请阅读 MIT 许可证 与源码。若安装报「没有写入权限」,README 指出常见原因是此前 link: 安装留下的 junction 导致 ERR_PNPM_EPERM,可先删除 node_modules\dsh-power-menu 链接或重新运行 install.ps1。

结尾

dsh-power-menu 把「退出 / 重启整个 DSH Desktop」收敛到标题栏一个电源菜单里,减少在系统托盘里翻找的操作,适合 Windows 桌面版日常开发与调试。

羽毛球分组比赛记分
小程序二维码

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

Xiaoye