dsh-harness-restart:为 DeepSeek Harness 提供侧边栏一键重启

前言

在 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 响应尚未返回就终止宿主:

  1. 插件启动助手 stage 1,其再启动 detached 的 stage 2 后退出。
  2. stage 2 等待约 1.5 秒(默认 delayMs: 1500),再按计划终止应用进程。
  3. 等待应用与 Host 进程退出后,用原可执行文件与参数重新启动;等待上限默认 graceMs: 12000,超时则强制终止。
  4. 全过程写入 $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  # 是否允许非回环地址调用控制接口(默认只允许本机)

典型用法

  1. 按上文安装并完成首次手动重启。
  2. 刷新页面,在左侧点击「重启」。
  3. 若有任务在跑,在确认页选择「停止任务并重启」或「返回会话」。
  4. 异常时用 $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
羽毛球分组比赛记分
小程序二维码

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

Xiaoye