前言¶
改 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 与解包目录并存、宿主被第三方补丁改过等。发现问题时在工具返回里说明项、后果与修法;重启仍会执行(重启本身常是为让修复生效)。
体检相关配置见下文「配置与体检开关」。
重启机制(三层回退)¶
- 桌面运行时服务:若宿主提供
desktopRuntime/desktopActions的requestRestart,交给 Electron relaunch(首选)。 - 脱离进程树重来(主要面向 Windows 桌面):通过
wscript以 detached 方式启动脚本,按可执行文件路径精确匹配同名进程后结束旧实例,必要时处理app.asar与解包目录冲突,再拉起 GUI;并清理ELECTRON_RUN_AS_NODE、DSH_PERMISSION_MODE等环境变量,避免新进程继承宿主模式。 - 都不成立:明确返回失败,提示手动重启,不假装成功。
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。