前言¶
在 DSH 里改插件、调 profile 或排查宿主问题时,经常需要完整退出再拉起桌面端或 CLI。手动关窗口、找可执行文件、补参数,既慢也容易和当前会话状态不一致。下面介绍社区插件 dsh-harness-restart(维护者 KiiiiiG,分类:客户端):在左侧全局面板列表增加「重启」入口,通过进程外助手退出并重新启动整个 DeepSeek Harness。
这是什么¶
dsh-harness-restart 面向「整应用重启」这一单一目标:桌面端重启完整 Electron 应用,CLI 下重启当前 dsh 进程。插件本身不能在被重启的进程内完成杀进程与再拉起,因此配合进程外脚本 helper.mjs 执行计划;控制面在 DSH 侧边栏,日志与回退脚本落在 $DSH_HOME/dsh-harness-restart/。当前版本 1.1.1(MIT,Node >= 20)。
核心功能¶
侧边栏入口与交互¶
安装并刷新后,左侧面板列表(与 Plugins、Market、Schedules 同列)会出现圆形箭头 +「重启」:
- 无运行中任务时:打开面板并立即发起重启,无需二次确认。
- 有 Agent 任务或后台作业:面板变为确认页,需点「停止任务并重启」;可「返回会话」取消。
- 重启过程中显示「正在重启 DeepSeek Harness…」,随后窗口关闭并重新打开。
- 请求失败时展示原因,并提供「重试」与「返回会话」。
进程外助手(helper.mjs)¶
重启流程分两段,避免 HTTP 响应尚未返回就终止宿主:
- 插件启动助手 stage 1,其再启动 detached 的 stage 2 后退出。
- stage 2 等待约 1.5 秒(默认
delayMs: 1500),再按计划终止应用进程。 - 等待应用与 Host 进程退出后,用原可执行文件与参数重新启动;等待上限默认
graceMs: 12000,超时则强制终止。 - 全过程写入
$DSH_HOME/dsh-harness-restart/logs/;计划保存在plans/,失败时可对照日志。
安全与任务保护¶
- 控制接口默认仅接受回环 / 桌面壳同源请求,且需请求头
x-dsh-restart: 1;跨站或异源Origin拒绝(allowRemote: false为默认)。 - 默认会检查运行中的 Agent 与后台作业,不会静默打断;有任务时
force=0会返回 409,供确认页使用。
回退与自检¶
若重启后应用未自动回来,可在 $DSH_HOME/dsh-harness-restart/ 使用生成的启动脚本(Windows:start-deepseek-harness.cmd / start-deepseek-harness.bat)。
激活后每个版本运行一次自检(可配置 selfTest: true):语法检查、控制接口探测、对无害 Node 进程做真实终止→等待→拉起演练,以及 POST /dsh-harness-restart/restart?dry=1(只生成计划、不执行)。结果写入 preflight.json 与 self-test-<版本>.ok;dry=1 永不启动助手,可用于无副作用诊断。
兼容性¶
- 桌面端:存在
process.versions.electron时,重启应用主进程(如DeepSeek Harness.exe)。 - CLI:在普通 Node 宿主下,用
process.execPath与process.argv重新启动当前进程。
安装与启用¶
本仓库为 DSH bundle(dsh.bundle.patch 指向 cordis.patch.yml),无构建步骤,无需 npm install。
插件管理器:DSH 设置 → 插件 →「安装」选择本目录,或调用 plugin_manager 的 install_bundle,target 为目录绝对路径。
CLI:
dsh plugin --profile <profile> add file:<这个目录的绝对路径>
装好后需手动重启一次 DSH;之后可用侧边栏「重启」。
配置¶
在 profile 的 cordis.patch.yml 中按行 id 覆盖:
- id: dsh-harness-restart
config:
delayMs: 1500 # 响应页面后等多久才终止应用(毫秒)
graceMs: 12000 # 等应用与 Host 自行退出的最长时间(毫秒),超时强制终止
selfTest: true # 是否运行一次性的进程外自检
allowRemote: false # 是否允许非回环地址调用控制接口(默认只允许本机)
典型用法¶
- 按上文安装并完成首次手动重启。
- 刷新页面,在左侧点击「重启」。
- 若有任务在跑,在确认页选择「停止任务并重启」或「返回会话」。
- 异常时用
$DSH_HOME/dsh-harness-restart/logs/与plans/排查;需要时用dry=1请求或查看preflight.json。
适用场景与注意¶
适合经常改插件、换 profile 或需要「干净拉起」整 app 的 DSH 用户。插件与当前 dsh 进程同权限运行,安装前应阅读源码与 MIT 许可证;plans/ 会记录完整环境变量(可能含令牌),勿提交仓库或对外分享。
DeepSeek Harness 生态强调「一切皆插件」;社区目录站点与 DeepSeek / 幻方无官方从属关系,本文介绍的是社区维护的客户端插件。
链接¶
- 目录页:https://www.skillhub.cn/plugins/KiiiiiG/dsh-harness-restart
- GitHub:https://github.com/KiiiiiG/dsh-harness-restart