dsh-restart-yashua:一键重启 DeepSeek Harness

前言

改 DSH 插件配置、换 profile、或动过 bundles 之后,通常需要完整重启宿主进程才能生效。手动关窗口再开,或在任务管理器里找 DeepSeek Harness.exe,步骤多且容易漏掉仍在跑的实例。下面介绍维护者 yashua233 的客户端插件 dsh-restart-yashua:侧栏按钮、/restart 指令、harness_restart 工具三条入口共用同一套重启逻辑,并在每次真正重启前强制确认——因为重启会中断当前会话。

这是什么

  • 仓库:yashua233/dsh-restart-yashua
  • 分类:客户端(注入侧栏与设置 UI)
  • 许可证:MIT
  • 当前插件版本(资料来源 package.json):1.0.16
  • 声明兼容的 DSH 版本:0.2.1-rc.5(无版本范围,跨小版本可能装不上或行为不对)

插件不联网、不收集数据;除写 $DSH_HOME/logs/restart.log(进程号、asar 让位、启动结果等,不含会话内容)外无其它副作用。

核心功能

三种入口,一套实现

入口 用法 确认方式
侧栏按钮 点「重启 Harness」 就地展开确认条,点「重启」才执行
指令 /restart --yes 必须带 --yes,否则只提示
工具 harness_restart action=restart confirm=true 必须 confirm: true,否则只返回「需要确认」

侧栏是两段式:第一次点击不重启,按钮原地变为「重启会中断当前会话,确定吗?」及[重启][取消],降低误触。

启动前体检(只读)

每次 harness_restart action=status 以及每次真正重启前,插件会检查已知会导致「DSH 打不开」的情况,例如 profile 带 UTF-8 BOM、本地登录 cookie 过多导致 431、client.js 模块 id 与包名不一致、bundles 登记与安装不一致、app.asar 与解包目录并存、宿主被第三方补丁改过等。发现问题时在工具返回里说明项、后果与修法;重启仍会执行(重启本身常是为让修复生效)。

体检相关配置见下文「配置与体检开关」。

重启机制(三层回退)

  1. 桌面运行时服务:若宿主提供 desktopRuntime / desktopActions 的 requestRestart,交给 Electron relaunch(首选)。
  2. 脱离进程树重来(主要面向 Windows 桌面):通过 wscript 以 detached 方式启动脚本,按可执行文件路径精确匹配同名进程后结束旧实例,必要时处理 app.asar 与解包目录冲突,再拉起 GUI;并清理 ELECTRON_RUN_AS_NODE、DSH_PERMISSION_MODE 等环境变量,避免新进程继承宿主模式。
  3. 都不成立:明确返回失败,提示手动重启,不假装成功。

Linux / macOS 上第 2 层不适用,会落到第 3 层。侧栏触发的 HTTP 路径 POST /dsh-restart/restart 另有同源校验与请求体 confirm: true 要求(缺则 428 needs_confirmation)。

安装与启用

安装命令以 README 为准;desktop 为桌面端常见 profile 名,web 端用 ~/.dsh/profiles/ 下你实际使用的名字。装完后重启一次 DeepSeek Harness 生效。

# 从 GitHub
dsh plugin --profile desktop add github:yashua233/dsh-restart-yashua

# 从 npm(若已发布)
dsh plugin --profile desktop add dsh-restart-yashua

# 本地目录(开发或自改)
dsh plugin --profile desktop add link:/path/to/dsh-restart-yashua

插件以当前 DSH 进程权限运行;安装前建议自行查看仓库源码与 MIT 许可证。社区目录 skillhub.cn 插件页 为独立站点,与 DeepSeek / 幻方无官方从属关系。

典型用法

侧栏:点「重启 Harness」→ 确认条点「重启」。

指令(必须显式确认):

/restart --yes

工具:

harness_restart action=restart confirm=true

查看环境与可用重启路径、延迟:

harness_restart action=status

排障时可看 $DSH_HOME/logs/restart.log,关注 left=0(旧进程已清干净)、asar swap、started 等行。改包名或显示「未安装」时,README 还提到可用宿主自带 node.exe 运行 scripts\check-identity.mjs 做身份自查(Windows 路径示例见仓库「遇到问题」一节)。

配置与体检开关

全局配置文件:~/.dsh/dsh-restart.json(改完即时生效),也可在「设置 → 重启与体检」中调整。

字段 默认 说明
enabled true 总开关;关闭后三条入口不注册
delayMs 1200 触发到真正重启的缓冲毫秒数
preflight.crashLogs true 是否回看 crash-*.log
preflight.crashLogDays 7 回看 crash 日志的天数
preflight.sessions true 是否检查会话文件(明显异常才报)

在 profile 的 cordis.patch.yml 中可覆盖插件 config,例如:

- insert:
    - id: dsh-restart-yashua
      name: 'dsh-restart-yashua'
      config:
        delayMs: 2000

适用场景与注意

  • 适合:频繁改插件或 profile、需要可靠 relaunch 的桌面 DSH 用户;与 dsh-qq-mail-notify、dsh-mail-command 可任意组合(本插件重启后 mail-command 的落盘口令仍有效,README 有说明)。
  • 注意:重启必然中断当前会话;Windows 桌面端依赖 wscript.exe;仅声明在 0.2.1-rc.5 上实测,其它版本需自行改 dsh.compatibility.dsh 再试。
  • 生态:DSH 理念是「一切皆插件」;本介绍事实均来自上述 GitHub README 与 package.json。

结尾

dsh-restart-yashua 把「重启宿主」收成侧栏、指令、工具三条带确认的路径,并在重启前做只读体检,减少改配置后仍打不开的情况。目录页:https://www.skillhub.cn/plugins/yashua233/dsh-restart-yashua;源码与完整排障说明:https://github.com/yashua233/dsh-restart-yashua。

羽毛球分组比赛记分
小程序二维码

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

小夜