dsh-desktop-quick-actions:DSH 桌面侧栏底部的重启与充值快捷按钮

前言

DeepSeek Harness(DSH)桌面版在侧边栏底部可以挂客户端插件,把常用操作放在界面里而不是记命令或翻菜单。重启客户端、打开 DeepSeek 充值页是两类高频需求;在 Windows 上若用 taskkill 再 spawn 可执行文件的方式重启,往往还会弹出一个控制台窗口,关掉窗口后新进程也可能被一并带走。下面介绍社区插件 dsh-desktop-quick-actions(维护者 penghao73551,分类:客户端),它在侧栏底部提供两个圆形按钮,分别处理「无控制台窗口的重启」和「在系统浏览器打开充值页」。

这是什么

dsh-desktop-quick-actions 是面向 DSH desktop profile 的客户端插件(npm 包名同插件 id,当前版本 1.1.0,MIT 许可证)。它在 DSH 桌面侧边栏底部渲染两个圆按钮:

  • Restart:关闭当前应用并再次启动,且不会出现控制台窗口。
  • Top up:在系统默认浏览器中打开 DeepSeek 充值页。

重启逻辑依赖 Windows WMI,因此 Restart 仅支持 Windows 10/11;Top up 在桌面应用能运行的环境下均可使用。插件需 Node 20+,并与提供 webServer 的 DSH 桌面宿主配合(README 写明兼容 DSH desktop 0.2.1-rc.* 及更高版本)。

目录页:https://www.skillhub.cn/plugins/penghao73551/dsh-desktop-quick-actions
源码与说明:https://github.com/penghao73551/dsh-desktop-quick-actions

为什么需要专门的重启实现

README 说明:最直白的实现是几行 taskkill 加 spawn(exe),在 Windows 11 上容易表现为:WMI 创建的 console 子进程被交给 Windows Terminal,SW_HIDE 与 -WindowStyle Hidden 对其无效,出现黑色终端窗口;用户关闭该窗口会向同一控制台上的子进程发送 CTRL_CLOSE_EVENT,刚拉起的 DSH 桌面也会在数秒内退出,且日志里不一定有崩溃信息。

本插件用两层机制规避(一层不够):

层级 做法 目的
启动器 Invoke-CimMethod Win32_Process Create 启动 wscript.exe,运行生成的 .vbs,内部 WScript.Shell.Run cmd, 0, False wscript.exe 为 GUI 子系统,不分配控制台,Terminal 无从接管
应用启动 同样通过 WMI Win32_Process Create 启动 DSH 可执行文件 新进程由 WmiPrvSE.exe 持有,不继承控制台,关终端窗口不会影响应用

WMI 不可用时仍保留 Start-Process 作为回退。

端口如何传递

桌面宿主每次启动会绑定新端口,硬编码端口在第二次重启就会错。宿主侧从触发重启请求的 req.headers.host 读取端口,以 -Port 传给 PowerShell helper;若无法确定端口,helper 会跳过端口检测,改为等待进程就绪。

核心功能与 HTTP 路由

插件在 desktop 的 web 服务上注册路由(plain dsh web profile 下会跳过并写日志):

方法 路径 用途
GET /dsh-quick-actions/info 诊断:应用 pid、exe 路径、helper 是否存在、充值 URL、检测到的端口、平台
POST /dsh-quick-actions/restart 启动 detached 的 relaunch helper
POST /dsh-quick-actions/open 在默认浏览器打开 URL
POST /dsh-quick-actions/rendered 客户端上报绘制位置(布局探测)

/open 仅接受 https://,不接受 file:、javascript: 或裸路径。

安全相关行为(摘自 README):

  • Helper 先读取目标 pid 的 ExecutablePath,与即将启动的可执行文件不一致则中止,避免误杀 pid 被复用后别的进程。
  • 保留原始命令行,自定义参数(如 --user-data-dir)在重启后仍在。
  • 子进程环境中剥离 NODE_OPTIONS,避免继承注入的 loader。
  • 各步骤追加写入 ~/.dsh/desktop-quick-actions.log,失败时可查拒绝原因。

导入阶段不抛未捕获异常,避免拖垮桌面 recovery 流程;各步骤有 guard 与日志。

安装与启用

安装命令(与 README 一致):

dsh plugin --profile desktop add dsh-desktop-quick-actions

安装后需手动重启 DSH 桌面应用一次;之后侧栏底部的 Restart 按钮即可走完整 relaunch 流程。

卸载:

dsh plugin --profile desktop remove dsh-desktop-quick-actions

典型用法与验证

日常使用:在 DSH 桌面侧边栏底部点击 Restart 或 Top up 即可,无需额外配置项(资料中未列出用户可编辑的配置字段)。

重启后可在 PowerShell 中核对日志与是否误启 Windows Terminal:

# after clicking the button
Get-Content "$env:USERPROFILE\.dsh\desktop-quick-actions.log" -Tail 20
Get-Process WindowsTerminal -ErrorAction SilentlyContinue   # expect no output

健康日志示例:

relaunch: helper start: pid=41828 exe=<install>\DeepSeek Harness.exe port=54264
relaunch: stopping app process
relaunch: starting app via WMI: "<install>\DeepSeek Harness.exe" ...
relaunch: wmi start ok: new pid=39380
relaunch: app is up again; done

需要排查插件状态时,可对 desktop 宿主发起 GET /dsh-quick-actions/info(具体 base URL 以当前 desktop 监听地址为准)。

适用场景与注意

适合在 Windows 上长期使用 DSH 桌面版、希望侧栏一键重启且不想看到 Terminal/控制台闪窗,或需要快速打开充值页的用户。Top up 对非 Windows 桌面场景仍可能有 UI 价值,但 Restart 的 WMI helper 仅面向 win32(package.json 中 os: ["win32"])。

DSH 生态是「一切皆插件」;SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。安装前建议阅读 GitHub 源码与 MIT 许可证,并理解插件以当前 DSH 桌面进程权限运行,重启会结束并重新拉起同一可执行文件。

结尾

dsh-desktop-quick-actions 把「无控制台的重启」和「浏览器打开充值页」收进侧栏两个按钮,并在 Windows 11 上针对 WMI + Windows Terminal 的坑做了分层处理与端口传递。需要安装说明与路由细节时,以 README 为准:

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

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

小夜