dsh-doctor: DeepSeek Harness 自我修復監控器

前言

在 DeepSeek Harness(DSH)的插件生態中,單個插件故障可能導致 dsh web 無法啓動,或長時間運行的任務因網絡中斷/流阻塞而卡死。dsh-doctor 是一個運行在獨立 Node 進程中的監控插件,用於處理由插件引起的啓動故障和會話卡頓。它不依賴 dsh-daemon,通過獨立的機制介入並嘗試修復環境。

核心功能

dsh-doctor 提供四種核心能力:
1. Web 啓動恢復:在 60 秒預算內自動嘗試恢復因插件導致失敗的 Web 服務啓動。
2. 工具錯誤捕獲:通過 tools/* 事件鉤子捕獲所有工具調用錯誤。
3. 會話監控:監控所有活動會話,檢測卡頓並嘗試恢復。
4. 安全模式補丁:支持通過寫入補丁文件來禁用故障插件或開啓安全模式,不直接修改原始配置文件。

安裝與啓用

安裝方式:通過官方目錄或 GitHub 倉庫安裝。
官方目錄鏈接:https://www.skillhub.cn/plugins/d86e/dsh-doctor
GitHub 倉庫鏈接:https://github.com/d86e/dsh-doctor

工作原理

Web 啓動恢復(60秒預算)

監控器每 30 秒探測一次 dsh web 健康狀態。連續失敗三次後進入故障處理流程,硬性限制單次故障恢復總時長不超過 60 秒。

簡單路徑(約 10 秒):讀取日誌,通過正則匹配識別故障插件,在 cordis.patch.yml 的兄弟文件中禁用該插件行,然後重啓 dsh web。

複雜路徑(≤60 秒):若無法定位單一故障,則寫入一個覆蓋所有插件的“安全模式補丁”(僅允許 dsh-core 運行),重啓後進入安全模式,直到安全模式被移除。

工具錯誤捕獲

插件訂閱 tools/execute 和 tools/post-execute 事件。當工具調用失敗時,錯誤會被分類並記錄,不會阻塞主進程。

會話監控

監控器維護一個會話狀態機,檢測到回合處於 running 狀態且超過閾值時間無新事件時,會通過 agent.followup 發送“繼續”消息喚醒會話。同時也提供 dsh_doctor_watch_cancel 用於手動取消。

使用示例

檢查正在監控的會話列表:

dsh_doctor_watch_list()

診斷失敗的插件:

dsh_doctor_diagnose()

注意事項

  1. CLI doctor 功能:dsh doctor 命令計劃在 v0.3.0 版本中推出,當前版本僅支持在運行中的 dsh web 進程內通過工具調用進行診斷。
  2. 獨立性:插件不調用或依賴 dsh-daemon,兩者共存不會衝突。
  3. 配置文件安全:安全模式補丁和修復操作會寫入 cordis.patch.yml(不修改原始文件),您可以隨時檢查或回滾。
  4. 權限:插件以當前 DSH 進程的權限運行。

結語

dsh-doctor 爲 DSH 用戶提供了一個獨立的故障恢復層,適合需要高可用性和自動容災的場景。

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

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

小夜