前言¶
DeepSeek Harness (DSH) 環境下,對客戶端 bundle 的修改只有在 host 進程重啓後纔會生效。如果需要在運行中更新代碼或調整配置,通常需要切換回終端,找到對應的進程句柄並執行重啓命令。這個過程不僅繁瑣,而且容易因爲環境差異導致執行失敗。
dsh-simple-restart 插件解決了這個問題。它在 DSH 的設置界面中增加了一行控制項,允許直接通過瀏覽器界面重啓正在運行的 dsh web 進程,且保持原有的啓動參數和運行環境不變。
核心功能¶
該插件獨立管理自身的路由和重啓邏輯,不依賴其他插件:
- 界面集成:在 Settings → General(通用)設置行中添加“重啓 dsh web”按鈕。
- 進程重啓:使用與原進程完全相同的 invocation(可執行文件、參數、工作目錄)啓動新的進程。
- 端口衝突處理:通過啓動一個分離的 helper 進程來處理端口占用問題,確保新進程能順利綁定端口。
- 日誌記錄:將診斷日誌寫入臨時目錄,便於故障排查。
安裝與啓用¶
安裝插件需要使用 DSH 的 CLI 工具,並指定 web profile。
1、通過 GitHub 倉庫安裝:
dsh plugin --profile web add "github:yizhixiaokong/dsh-simple-restart"
2、若需固定版本,可添加標籤:
dsh plugin --profile web add "github:yizhixiaokong/dsh-simple-restart#v0.1.1"
3、安裝完成後,必須重啓一次 dsh web。這是因爲客戶端 bundle 是在啓動時基線化的,重啓後按鈕纔會出現在設置界面中。
使用方法¶
啓用插件並重啓 dsh web 後,操作步驟如下:
1、進入 Settings → General 設置頁面。
2、點擊 “重啓 dsh web” 按鈕。
3、按鈕進入“確認”狀態,提示“確認重啓?”。
4、在 5 秒鐘內再次點擊按鈕以確認重啓。
5、系統會自動處理進程替換,瀏覽器頁面會在新進程就緒後自動重連。
此時,設置行下方的提示信息會顯示正在退出的 host 進程 PID 和 helper 進程 PID,以及診斷日誌的存儲路徑。
注意事項¶
使用此插件時,需注意以下限制:
- 系統服務監控:如果進程由 systemd 等守護進程監控,默認情況下不會重啓(除非在配置中設置
allowRestart: true)。這是因爲 systemd 的默認KillMode會一併殺死 helper 進程,導致重啓失敗。 - 調試器限制:該插件無法在調試器附加的情況下使用。
- 日誌清理:診斷日誌僅追加寫入臨時目錄,不會自動清理,請定期檢查。
- 插件熱更新:對客戶端 bundle 的修改,只有在 host 進程重啓後纔會生效,無法通過此按鈕直接觸發客戶端 bundle 的熱更新。
- 無端口場景:如果 host 進程沒有綁定端口,helper 進程會在開始替換前等待 1.5 秒。
結語¶
dsh-simple-restart 提供了一種標準化的重啓流程,將運維操作從終端轉移到了瀏覽器界面,降低了操作門檻。對於需要在開發環境中頻繁重啓服務的場景,這能顯著提升開發效率。