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
羽毛球分组比赛记分
小程序二维码

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

小夜