前言¶
在 DeepSeek Harness(DSH)的 Web 界面裏,重啓或停止宿主進程可以作爲一個插件能力來做。keyiadiannao/dsh-power-button 在側欄底部加入電源按鈕,打開後提供 Restart/Shutdown 菜單,並帶 Windows 風格的全屏過渡覆蓋層。它內置獨立重啓引擎,不依賴其他插件。
這是什麼¶
keyiadiannao/dsh-power-button 是一個面向 DSH 的自包含電源控制插件,由 keyiadiannao 維護。它把側欄按鈕、Restart/Shutdown 菜單、確認交互和過渡覆蓋層放進 Web 側欄,用於完成 DSH 的重啓或停止。許可證爲 MIT。
核心功能¶
- 側欄底部電源按鈕:主題感知,並匹配相鄰
Settings觸發器。 - Restart/Shutdown 菜單:提供重啓和關機兩個動作;確認重啓後頁面自動重載。
- Windows 風格全屏過渡覆蓋層:用於展示重啓或關機過程中的過渡狀態。
- 內置獨立重啓引擎:寫入
detached .cjshelper,等待舊進程退出和端口釋放後,以相同execPath/execArgv/argv/cwd重新啓動 DSH;不使用PowerShell或taskkill。 - 命令與模型工具:提供
/restart和/shutdown,以及restart_harness模型工具;若該工具名稱已被其他插件佔用,則跳過註冊。 - 本地化:提供 zh/en UI 和宿主通知,並遵循 profile 的
locale.preference。 - 日誌清理:啓動時清理運行時目錄中超過 7 天的
restart-helper-*.log文件。
安裝與啓用¶
需要 Node >= 22.19。使用以下命令安裝:
dsh plugin --profile web add "github:keyiadiannao/dsh-power-button#master"
安裝後重啓 DSH,側欄底部會出現電源按鈕。
配置¶
插件通過 profile 的 cordis layer 配置,可以使用 cordis.patch.yml 或 settings UI。示例:
- id: dsh-power-button
config:
enableModelTool: true
常用配置項:
| 配置項 | 默認值 | 說明 |
|---|---|---|
enableModelTool |
true |
用於註冊 restart_harness 模型工具 |
maxDelayMs |
5000 ms |
restart_harness 模型工具 delayMs 參數的上限;有效下限爲 1000 ms |
典型用法¶
1、點擊側欄底部的電源按鈕,打開 Restart/Shutdown 菜單。
2、選擇 Restart 並確認後,頁面會自動重載。
3、選擇 Shutdown 時,GUI 會先彈出確認對話框;需要明確確認纔會停止進程。
4、也可以使用 /restart 和 /shutdown 命令。
5、如果啓用了 restart_harness 模型工具,可傳入 delayMs;該參數最低爲 1000 ms,默認上限由 maxDelayMs 控制,默認 5000 ms。
6、/shutdown 和模型工具保持單動作設計,模型不暴露 shutdown。
安全與運行時細節¶
- 破壞性 POST 請求受
same-origin/loopbackguard 保護。 - 併發重複轉換會被拒絕,返回
409。 - 命令日誌會脫敏;helper/marker 文件權限爲
0600,運行時目錄權限爲0700。 - 重啓確認僅通過 UI toast 通知,不寫入任何 session log。
適用場景與注意¶
適合需要在 DSH 的 Web 側欄中完成重啓/關機,且希望避免依賴其他插件的開發者或使用者。由於插件會執行重啓/停止 DSH 進程,它以當前 dsh 進程權限運行;安裝前應檢查源碼與許可證。許可證爲 MIT;detached helper relaunch 想法參考 anweat/dsh-restart(MIT),但實現獨立編寫、未複製代碼。
鏈接¶
- GitHub:https://github.com/keyiadiannao/dsh-power-button
- 社區目錄:https://www.skillhub.cn/plugins/keyiadiannao/dsh-power-button