前言¶
DeepSeek Harness (DSH) 採用插件化架構,在本地開發或調試時,有時需要重啓後端或關閉服務。dsh-power-controls 在設置頁面的「普通設置」中增加了兩枚電源按鈕,提供重啓與關閉能力,並支持自動收尾機制,以防止頁面關閉後服務器進程繼續佔用內存。
核心功能¶
該插件主要解決 DSH 後端的重啓、關閉以及頁面關閉後的資源釋放問題。
-
重啓 DSH (電源循環)
點擊按鈕後,插件會殺掉當前運行的dsh web進程,等待端口 3080 釋放,然後重新拉起新實例,最後驗證端口監聽是否成功。頁面斷線幾秒後會自動刷新回來。 -
關閉 DSH (僅關閉後端)
只關閉後端服務。瀏覽器標籤頁會停留在斷線狀態,用戶需要雙擊桌面的 DSH Web 圖標重新打開。 -
自動收尾 (等待所有頁面停止 beaconing)
默認開啓。當所有瀏覽器標籤頁都關閉或不可見時,插件會等待一段時間(默認 15 秒),確認沒有活躍的頁面請求後,才退出進程。配置項autoCloseMs可設爲 0 禁用此功能。 -
標籤頁圖標切換 (鯨魚娘)
插件會將標籤頁的 favicon 替換爲鯨魚娘圖片(128px)。服務端通過tapIndex注入資源路由,客戶端通過applyFavicon()每次重渲染時重新確認圖標狀態。
重啓機制說明¶
在 Windows 上,重啓 DSH 依賴任務計劃程序,而非簡單的 spawn detached helper。
早期的實現方式是 spawn 一個 detached helper 進程,然後自己退出。這會導致問題:當父進程(dsh web)退出時,會回收整個進程樹,helper 進程也會隨之被殺掉,導致後端無法重新拉起。
爲了避免這個問題,現在的實現方案是:
1. 點擊「重啓 DSH」按鈕。
2. 後端註冊一個名爲 DSHPowerRestart 的計劃任務。
3. 任務啓動後執行 respawn-dsh-web.ps1 腳本:
* 按端口找到舊的 dsh web 並停掉。
* 等待 3080 端口釋放(最多 60 秒)。
* 執行 start-dsh-web.ps1 -NoOpen 拉起新實例。
* 驗證端口,最多重試 3 次。
4. 只有計劃任務註冊成功並啓動後,後端插件才允許自己退出。
安裝與啓用¶
安裝前必須先停止 DSH 後端。因爲插件安裝會讓 pnpm 重解析依賴樹,而正在運行的後端鎖定了 lightningcss 原生模塊,會導致後續安裝報錯(拒絕訪問)。
# 從 GitHub 安裝
dsh plugin --profile web add github:harmless0819-dev/dsh-power-controls
安裝完成後,刷新設置頁面,在「普通設置」中即可看到兩枚電源按鈕。
自檢與使用¶
由於沒有瀏覽器界面,可以通過命令行工具檢查插件狀態。
- 健康檢查端點
插件提供了/dsh-power/health端點用於自檢。
curl http://127.0.0.1:3080/dsh-power/health
返回數據包含 `lastReport`(上次上報時間)、`reportCount`(上報次數)、`clicks`(點擊次數)、`injected`(是否成功注入按鈕)、`reconnect`(重連次數)以及 `clients`(當前活躍客戶端列表)。
- 查看退出日誌
插件會將自動收尾的退出原因記錄到日誌文件D:\deepseek\logs\dsh-power-auto-close.log,並在下一次啓動時的lastExit字段中反饋。
總結¶
dsh-power-controls 通過在設置頁增加電源按鈕,簡化了 DSH 後端的重啓與關閉流程。其自動收尾機制能有效避免頁面關閉後服務器進程的資源佔用。安裝時需注意先停後端,並在 Windows 上依賴任務計劃程序完成重啓。