前言¶
在 DeepSeek Harness(DSH)里装插件、卸插件或改配置,文档里常会提示「重启后生效」。若习惯在任务管理器里从众多 node.exe 里辨认 DSH 再结束进程,容易误关其它 Node 服务;关掉之后还要回忆当初的启动命令,端口占用或端口变化也会让浏览器里旧地址失效。页面刷新或路由刷新只会重载前端,不会让宿主进程重新加载插件与配置。
下面介绍社区插件 dsh-power-switch:在会话界面右上角增加一枚电源控件,通过两次确认点击,结束或重启当前 DSH 进程本身,而不是假装重启的 UI 操作。
这是什么¶
dsh-power-switch 由维护者 hongdougao111 发布,在 SkillHub 插件目录中归类为客户端插件。它在 DSH 会话头部右侧注入电源图标,菜单内仅提供「重启」与「关闭」两个动作;每个动作需连续点击两次,第一次为确认,第二次才执行。
插件当前版本为 0.1.4(见仓库 package.json),许可证为 MIT。
核心功能¶
界面与交互¶
电源图标位于会话头部右侧,不与最小化、隐藏、关闭等窗口控件抢位。点开菜单后只有两个按钮:
| 按钮 | 行为 |
|---|---|
| 重启 | 结束整个 DSH(含 Desktop 主进程),随后自动拉起新实例 |
| 关闭 | 结束整个 DSH,不自动拉起 |
与「刷新页面」的区别¶
重启与关闭针对的是操作系统中的 DSH 相关进程。旧 Web 页面随旧进程消失;执行后界面会显示「正在关闭 / 正在重启」,等待连接断开即可。新实例需从 Desktop 应用或启动器重新进入;DSH 可能选用新端口,原浏览器地址不一定继续有效。
Desktop 下的实现要点(README 说明)¶
在 Desktop 形态下,插件通过自省 process.pid、process.ppid、process.execPath 定位主进程,再经 detached helper 在响应返回后执行 taskkill /PID <主进程> /F(不带 /T),避免强杀子树导致宿主来不及落盘。主进程退出后,宿主因 IPC 断开走正常关闭流程;helper 等待旧实例与端口释放后,用原 exe 拉起新实例,并通过 MainWindowHandle 等条件确认窗口出现后再清理残留进程。
README 还说明:新版本通过结束桌面主进程,避免仅杀宿主子进程时出现的 Error: dsh desktop host stopped 弹窗。
纯 Web / 宿主形态¶
以 dsh web 或 node bin.js 启动、没有 Electron 主进程时,插件会直接结束宿主自身;API 的 facts / restartable 字段会如实反映当前是否支持重启。
安全边界¶
- 仅接受同源
POST,跨站请求返回 403 - HTTP 服务只监听本机 loopback
- 除重启、关闭外无其它远程动作;关闭不会删除会话、配置或插件文件
安装与启用¶
在插件市场搜索「电源」或 power,或执行:
dsh plugin add dsh-power-switch
README 写明:安装完成后需要手动重启一次 DSH 才能加载插件;之后可用本插件完成后续重启或关闭。
典型用法¶
- 改完插件或配置、需要让变更生效时:打开右上角电源菜单 →「重启」→ 连点两次 → 等待当前页面断线 → 从 Desktop 或启动器重新进入 DSH。
- 仅需退出当前实例、不立刻拉起时:同一菜单 →「关闭」→ 连点两次。
- 自检当前插件状态(将
<port>换成当前 DSH 监听端口):
curl http://127.0.0.1:<port>/dsh-power-switch/api
返回中包含 pid、port、platform、restartable 等字段;若 restartable 为 false,插件会拒绝重启而非猜测进程关系。
适用场景与注意¶
适合:经常在同一台机器上调试 DSH 插件与配置、希望用固定入口结束或重启当前实例的开发者。
注意:
- 插件以当前 DSH 进程权限运行,安装前应在 GitHub 阅读源码与 MIT 许可证,自行评估是否满足环境要求。
- 只能管理当前这一份 DSH 实例;多实例需多 profile,不能当作批量集群工具。
- 重启成功后旧浏览器标签可能仍显示断线或空白,属预期行为;若十几秒后页面仍无反应,界面会提示再试一次;helper 失败时可能弹出原生提示,需手动启动应用。
- 社区目录 SkillHub 为独立站点,与 DeepSeek / 幻方无官方从属关系;插件星标数以目录页展示为准(当前为 2)。