前言¶
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 为准: