dsh-restart-switch:在 Composer 工具栏一键重启 Cordis 内核或整应用

前言

在 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

典型用法

  1. 安装并启用插件后,打开任意对话,在 Composer 输入框右侧找到重启按钮。
  2. 点击打开 overlay 菜单,按需选择:
    - 改动了 cordis.patch.yml、插件列表或仅需刷新 Cordis 组合、且希望保留 Host 与窗口:选 重启内核。
    - 需要完整 relaunch、可接受任务中断:选 Restart DSH,并在确认后等待进程重启。
  3. 若操作失败,查看菜单中的状态或错误文案,再检查 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
羽毛球分组比赛记分
小程序二维码

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

小夜