DeepSeek Harness 重啓插件

前言

在 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 請求,不接受代理轉發的請求。
  • 權限控制:不需要管理員權限,不修改系統配置。

使用流程

點擊設置中的重啓按鈕後,後臺會按順序執行以下操作:

  1. 發起請求:頁面發送 POST /dsh-restart/restart 請求,請求爲認證的 same-origin。
  2. 啓動輔助進程:宿主半啓動一個 detached helper 進程,並在任何服務停止前響應請求。
  3. 等待端口釋放:helper 等待端口停止接受連接。
  4. 啓動器接管:launcher 啓動一個新的 dsh web 實例,並寫入啓動令牌文件。
  5. 確認替換:helper 確認新實例已就緒,然後允許舊進程退出。
  6. 頁面重連:頁面在下一次輪詢中檢測到新的實例 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 倉庫。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜