前言¶
在 DeepSeek Harness (DSH) 的開發與調試過程中,有時需要重啓 dsh web 進程。這通常發生在修改了配置文件、更改了插件宿主半、調整了端口或工作區,或者需要清除會話狀態時。傳統的做法是打開終端、手動停止進程並重新啓動。dsh-plugin-restart 插件在設置中提供了一個重啓按鈕,通過一次點擊即可替換正在運行的服務進程,並讓頁面自動重連。
插件介紹¶
該插件由 chenkui-luo 維護,採用 MIT 許可證。它通過在 DSH 的設置界面中添加一個重啓卡片,解決了需要終端操作或重新打開桌面圖標才能重啓的問題。插件運行在 DSH 的 web 上下文中,不需要管理員權限,也不會觸碰系統配置。
安裝與啓用¶
在終端中執行以下命令即可安裝:
dsh plugin --profile web add github:chenkui-luo/dsh-plugin-restart
安裝完成後,刷新頁面,進入設置界面即可看到重啓選項。
核心功能¶
- 進程替換與自動重連:點擊按鈕後,會替換當前 serving 頁面的
dsh web進程,頁面會自動重新連接。 - 無需終端操作:整個過程在瀏覽器設置中完成,不需要打開命令行終端。
- 處理熱重載失效場景:針對插件宿主半修改、配置修改、端口變更或會話狀態清除等無法熱重載的情況提供解決方案。
- 安全機制:僅支持認證的 same-origin loopback 請求,不接受代理轉發的請求。
- 權限控制:不需要管理員權限,不修改系統配置。
使用流程¶
點擊設置中的重啓按鈕後,後臺會按順序執行以下操作:
- 發起請求:頁面發送
POST /dsh-restart/restart請求,請求爲認證的 same-origin。 - 啓動輔助進程:宿主半啓動一個 detached helper 進程,並在任何服務停止前響應請求。
- 等待端口釋放:helper 等待端口停止接受連接。
- 啓動器接管:launcher 啓動一個新的
dsh web實例,並寫入啓動令牌文件。 - 確認替換:helper 確認新實例已就緒,然後允許舊進程退出。
- 頁面重連:頁面在下一次輪詢中檢測到新的實例 ID,從而重新加載自己。
注意事項¶
- 中斷對話:重啓會中斷當前正在進行的對話輪次,這是重啓的標準行爲。
- 端口占用:如果端口被 launcher 無法識別的進程佔用(例如手動啓動的
dsh web),重啓操作會接管該端口,包括其進程樹。 - 錯誤提示:當關鍵文件缺失時,按鈕會報告清晰的錯誤,而不是假裝工作。
日誌與配置¶
重啓過程的詳細日誌保存在本地:
%LOCALAPPDATA%\DeepSeekHarness\restart-plugin\logs\restart.log
插件支持以下環境變量配置:
| 變量名 | 作用 |
|---|---|
DSH_RESTART_INSTALL_DIR |
Launcher 運行時目錄(默認 %LOCALAPPDATA%\DeepSeekHarness) |
DSH_RESTART_DATA |
插件私有數據目錄(默認 <INSTALL_DIR>\restart-plugin) |
DSH_RESTART_LAUNCHER |
指向另一個 launcher 腳本(用於便攜安裝或測試) |
結尾¶
該插件通過自動化進程替換與重連流程,簡化了 DSH 的日常維護工作。更多細節與源碼,請參考插件目錄或GitHub 倉庫。