前言¶
在 DeepSeek Harness(DSH)里改插件、动宿主配置时,经常需要整进程重启才能生效。Windows 上退出再点快捷方式也能做到,但步骤分散;若从任务管理器结束进程,还可能撞上 Electron 的崩溃对话框,或留下不该出现的控制台窗口。下面介绍社区维护的客户端插件 dsh-restart-button:在侧栏左下角加「重新启动」按钮,用两段式确认降低误触,并在重启流程里处理 job object、权限与窗口可见性等问题。需事先说明:仅支持 Windows,实现依赖 schtasks、wscript、taskkill 等系统机制。
这是什么¶
dsh-restart-button(GitHub:yami0310/dsh-restart-button)由 yami0310 维护,在 SkillHub 插件目录 归类为客户端插件。它通过 Cordis 补丁向网页侧栏注入 UI,并向宿主注册 POST /api/dsh-restart-button,在桌面端完成「结束当前实例 → 拉起新实例 → 等待 Web 就绪」,且助手进程结束后不常驻、不留控制台窗口。
DSH 生态强调「一切皆插件」;SkillHub 等目录由社区维护,与 DeepSeek / 幻方无官方从属关系。安装前建议阅读仓库源码与 MIT 许可证,并知晓插件以当前 DSH 进程权限运行。
核心功能¶
侧栏按钮与确认¶
左侧栏底部会出现圆环箭头按钮。点第一次变为「确认重启?」;再在 3 秒内点第二次才真正触发重启。展开侧栏时显示文字,收成竖条时仅显示图标。设计上不一点即重启:按钮紧贴设置入口,误触会立即掐断当前会话。
重启链路(概要)¶
按钮 ──POST──> 宿主半边 ──schtasks /run──> 任务计划服务
│
▼
wscript
│
▼
node 助手(helper.mjs)
助手会先结束 GUI 主进程(避免 renderer 先死触发崩溃弹窗),再按镜像名清理剩余进程,最后 spawn 新 DSH 实例,并探测 Web 界面是否就绪。计划任务名 DSHRestartButton 用于让助手脱离 DSH 的 job object,避免父进程退出时助手被一并杀掉。
安全与并发¶
接口只接受本机同源:Host 须为 127.0.0.1 / localhost / [::1],且 Origin(若有)须与 Host 一致。同一时刻只允许一次重启在进行,重复请求返回 409。
安装与启用¶
资料中的安装方式为克隆仓库后,用插件管理器以 link: 加载目录(便于后续 git pull 更新):
git clone https://github.com/yami0310/dsh-restart-button.git
在 DSH 插件管理器中执行(将 <仓库路径> 换为本地克隆目录):
plugin_manager install_bundle target=link:<仓库路径>
插件管理器会把包名写入 profile 的 dsh.profile.bundles。客户端半边会热加载;宿主半边需重启一次 DSH 后路由与计划任务逻辑才完整生效。package.json 标明版本 1.0.0,运行环境 Node >= 18,os: win32。
典型用法¶
- 按上一节完成安装,并重启 DSH 一次。
- 在侧栏底部找到重新启动按钮;需要重启时点两次确认。
- 若只想看助手如何归类进程、不写死重启,可在仓库目录使用自检模式:
DSH_RESTART_DRYRUN=1 node lib/helper.mjs "<DSH 的 exe 路径>"
Windows CMD:
set DSH_RESTART_DRYRUN=1
node lib\helper.mjs "C:\Program Files\DeepSeek Harness\DeepSeek Harness.exe"
日志写入 %USERPROFILE%\.dsh\restart-button.log,自检时不会结束任何进程。
配置与环境变量¶
| 环境变量 | 作用 |
|---|---|
DSH_RESTART_DRYRUN=1 |
只自检,不重启 |
DSH_RESTART_NODE |
指定内置 node.exe 路径;默认从 exe 同级 resources/runtime/... 与 ~/.dsh/dsh-runtimes/... 查找,都不存在时再设置 |
适用场景与注意¶
适合在 Windows 上长期使用 DSH、且经常因插件或宿主配置变更需要完整重启桌面的用户。不适合 macOS / Linux:README 明确写明整包建立在 Windows 任务计划与 wscript 之上。
常见「点了没反应」多与计划任务权限有关(DSH 常以管理员运行,任务须 /RL HIGHEST);仓库 README 的「九个坑」表记录了 job object、windowsHide、端口探测、ELECTRON_RUN_AS_NODE、busy 超时等细节,排查时可对照日志 restart-button.log。
卸载:在插件页停用 dsh-restart-button;若要删除计划任务:
schtasks /delete /tn DSHRestartButton /f
相关链接¶
- 插件目录:https://www.skillhub.cn/plugins/yami0310/dsh-restart-button
- 源码与说明:https://github.com/yami0310/dsh-restart-button
经过上面的步骤,侧栏即可用可控的方式完成 DSH 桌面端重启,而不必反复走系统退出或任务管理器路径。