前言¶
在 DeepSeek Harness(DSH)里改 profile、换插件或调 Cordis 配置时,往往需要让内核重新读 manifest 与 patch,或干脆把整个 DSH 进程拉起来一遍。平时可以靠改磁盘上的 profile 触发 HMR,或手动退出再开客户端,步骤分散,也不总在手边。下面介绍社区插件 dsh-restart-switch:在 Composer 输入区右侧加一个小按钮,菜单里可选「重启内核」或「重启整个 DSH 应用」,状态与失败原因也会在菜单里显示,而不是静默无反应。
这是什么¶
dsh-restart-switch 由维护者 icymint0220 发布,分类为客户端插件。它面向 DSH 使用者:在 Composer 工具栏提供统一的「重启开关」,要么通过 live HMR 重新 compose profile(等价于 DSH 在 profile 文件变更时走的路径),要么 detached 启动 relaunch 辅助进程,在桌面壳里停 Electron、等 Host 优雅退出后再拉起可执行文件;非桌面环境则按同一命令行重新 spawn 进程。
当前 npm 包版本为 1.0.0,许可证 MIT。社区目录页:icymint0220/dsh-restart-switch;源码与说明:GitHub 仓库。
两种重启目标¶
插件菜单提供两种动作,取舍不同:
| 动作 | 作用 | 会丢失什么 |
|---|---|---|
| Restart kernel(重启内核) | 经 live HMR 服务重新 compose profile:再次读取 manifest 与 patch,替换变更的插件模块、启动已停用的条目,并重新判定插件树;页面会 reload,浏览器侧加载新的组合。 | 除页面刷新外,Host 进程、HTTP 服务与桌面窗口保持运行。 |
| Restart DSH(重启整应用) | 重新启动整个应用:detached 辅助进程先停桌面壳,等 Host 完成 graceful shutdown,再启动应用可执行文件;无桌面壳时则重新 spawn 同一进程命令。 | 进行中的任务会被打断;菜单会先要求确认。 |
两种操作都会在菜单中上报状态(含失败信息),便于区分插件损坏或重启被拒绝等情况。
按钮位置与界面¶
触发器注册在 conversation.input.right,即 Composer 提交按钮左侧的紧凑控件区。README 说明:最初曾放在 sidebar.footer.action,但部分侧栏皮肤(例如 dsh-claude-style)会占用 footer 并隐藏非其「更新位」的条目,导致按钮不可见;Composer 行在各皮肤下都会渲染,因此改到此处。
菜单注册在 shell.overlay,避免被列布局裁剪。
安装与启用¶
在 DSH profile 内从 npm 安装:
dsh plugin add dsh-restart-switch
从 GitHub 检出安装时,资料给出的形式为(将 <user> 换为实际用户名,例如 icymint0220):
dsh plugin add github:<user>/dsh-restart-switch
也可通过插件管理器安装本地 bundle 目录:
plugin_manager install_bundle <absolute package directory>
环境要求(来自 package.json 的 engines):
- Node
>=20 - DSH
>=0.2.1-rc.5且<0.3.0(0.2.x 线) - 重启内核依赖 profile 具备 live HMR;若无 HMR,菜单会报告
kernel-restart-unavailable,不会假装成功。
配置项¶
可在 profile 的 cordis.patch.yml 中覆盖插件配置:
| 字段 | 默认值 | 含义 |
|---|---|---|
kernelDelayMs |
120 |
RPC 返回后、执行 profile 重 compose 前的延迟(毫秒)。 |
appDelayMs |
1500 |
RPC 返回后、relaunch 辅助进程动作前的延迟(毫秒)。 |
示例:
- id: restart-switch
name: dsh-restart-switch
config:
appDelayMs: 2000
典型用法¶
- 安装并启用插件后,打开任意对话,在 Composer 输入框右侧找到重启按钮。
- 点击打开 overlay 菜单,按需选择:
- 改动了cordis.patch.yml、插件列表或仅需刷新 Cordis 组合、且希望保留 Host 与窗口:选 重启内核。
- 需要完整 relaunch、可接受任务中断:选 Restart DSH,并在确认后等待进程重启。 - 若操作失败,查看菜单中的状态或错误文案,再检查 HMR 是否可用、插件是否报错等。
实现上(README 摘要):index.js 注册 restartSwitch 服务(restartKernel、restartApp)并将方法暴露为可直接 RPC 的 Remote 端点;restartKernel 使用 ctx.hmr.runExclusive(() => ctx.hmr.reconcileProfile());restartApp 在 teardown 前 detached 启动 relaunch.js;client.js 注册工具栏触发器与 overlay 菜单,二者共享小型 store。
适用场景与注意¶
适合:频繁改 DSH profile 与插件、需要在 UI 里快速区分「只 reload 内核组合」和「整应用重启」的开发者;使用会占用 sidebar footer 的皮肤时,仍能在 Composer 行看到按钮。
注意:
- 插件与当前 DSH 进程同权限运行;安装前请自行查看 GitHub 源码 与 MIT 许可证,确认符合你的安全策略。
- 「重启 DSH」会中断运行中任务,且需用户确认;桌面与非桌面环境的 relaunch 路径不同,行为以 README 描述为准。
- 社区目录 skillhub.cn 为独立生态站点,与 DeepSeek / 幻方无官方从属关系;DSH 本身强调「一切皆插件」,本插件是其中的客户端辅助工具之一。
结尾¶
dsh-restart-switch 把 Cordis 内核重 compose 与整应用 relaunch 收进 Composer 工具栏同一入口,并显式反馈成功与失败。需要安装命令、配置字段与架构说明时,以仓库 README 为准。
- 目录页:https://www.skillhub.cn/plugins/icymint0220/dsh-restart-switch
- GitHub:https://github.com/icymint0220/dsh-restart-switch