前言¶
在 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