dsh-graceful-restart:DeepSeek Harness 優雅重啓與啓動守護插件

前言

DeepSeek Harness(DSH)採用“一切皆插件”的理念。現有的重啓插件往往會在用戶操作時中斷當前正在進行的回覆輪次。dsh-graceful-restart 插件旨在解決這一問題,它通過自動“套殼”機制,在後臺維護一個守護進程。當需要重啓時,它不會立刻殺掉進程,而是等待當前輪次結束,確保工作不丟失。同時,它具備啓動失敗自動回滾和頁面自動刷新能力。

核心功能

優雅重啓

觸發 restart_harness 工具或 /restart 斜槓命令後,插件不會立即終止進程,而是等待當前所有 agent 輪次結束。只有確認當前回覆完整落盤後,纔會由第一代進程拉起新一代,實現無縫切換。

重啓後自動喚醒

重啓前,插件會將活躍會話 ID 寫入 marker 文件。新一代啓動後,會輪詢等待會話恢復,並自動執行 steer() 操作喚醒智能體。喚醒時的提示語優先級爲:continuePrompt 參數 > settings.yaml 默認值 > 內置默認。

啓動守護與失敗回滾

這是插件的核心能力。它採用 git 風格的快照鏈機制:每次啓動前記錄插件清單快照,生成按時間排序的鏈表,並通過一個 current 指針指向當前生效版本。
當啓動失敗(退出碼非 0 或寬限期內退出)時,系統會執行以下步驟:
1. 將錯誤獨立記錄。
2. current 指針回退到更早的快照。
3. 對比實際清單與當前快照,計算差集。
4. 執行逆操作(新增的卸載、被卸載的裝回、版本變化的恢復基線)。
5. 重試啓動,循環直到成功或沒有更早的快照。

頁面自動刷新

插件通過 WebSocket 連接狀態和代際 ID(進程啓動時間戳)對比來判斷頁面是否需要刷新。只有當連接恢復且 ID 發生變化時,頁面纔會自動刷新一次。這種方式不依賴輪詢,僅在連接事件觸發動作。

設置菜單

在 DSH 的設置頁面中會新增“優雅重啓”頁籤,用於查看快照時間線、錯誤信息以及回滾記錄。

安裝與配置

安裝命令如下:

dsh plugin --profile web add dsh-graceful-restart

安裝後需重啓 DSH 生效。如果是本地開發,使用 file: 依賴時,修改代碼後需要先 remove 再 add 重新同步。

在 settings.yaml 中可以配置喚醒時的默認提示語:

dsh-graceful-restart:
  continuePrompt: (系統已重啓完成)請繼續之前未完成的工作。

使用方式

用戶可以通過以下方式操作:

  • 模型工具:restart_harness(支持 continuePrompt 參數,會自動喚醒),shutdown_harness(優雅關閉不重啓),cancel_harness_action(撤銷未執行的重啓或關閉)。
  • 斜槓命令:/restart(重啓,需等待喚醒),/shutdown(關閉)。

工作原理與文件

插件通過 ConPTY 句柄繼承鏈將輸出重定向回用戶終端。第一代進程作爲隱形 Launcher,負責拉起新一代並處理守護邏輯。

相關文件位於 $DSH_HOME 下:
* dsh-process.json:進程索引。
* dsh-graceful-restart-snapshot.json:啓動守護快照鏈與 current 指針。
* dsh-resume.json:喚醒 marker。
* dsh-graceful-restart.log:插件與守護日誌。
* dsh-graceful-restart-stderr-<時間戳>.log:每次啓動嘗試的完整錯誤輸出。

注意事項

  • 運行環境:用戶必須通過 dsh web 啓動,插件依賴 Windows Terminal 的 ConPTY 句柄繼承鏈才能正常顯示輸出。
  • 生效時機:安裝後必須重啓 DSH 才能生效。
  • 回滾機制:回滾無次數上限,直到成功或無更早快照。
  • 撤銷操作:已安排但未執行的重啓或關閉操作,可以通過 cancel_harness_action 隨時撤銷。

結語

該插件解決了 DSH 在插件升級或配置變更時必須中斷當前任務的問題。通過自動回滾和喚醒機制,它提供了比原生重啓更穩定、更智能的運行體驗。

  • 插件目錄:https://www.skillhub.cn/plugins/msilita/dsh-graceful-restart
  • 源碼地址:https://github.com/msilita/dsh-graceful-restart
羽毛球分组比赛记分
小程序二维码

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

小夜