前言¶
在 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()
注意事項¶
- CLI doctor 功能:
dsh doctor命令計劃在 v0.3.0 版本中推出,當前版本僅支持在運行中的dsh web進程內通過工具調用進行診斷。 - 獨立性:插件不調用或依賴
dsh-daemon,兩者共存不會衝突。 - 配置文件安全:安全模式補丁和修復操作會寫入
cordis.patch.yml(不修改原始文件),您可以隨時檢查或回滾。 - 權限:插件以當前 DSH 進程的權限運行。
結語¶
dsh-doctor 爲 DSH 用戶提供了一個獨立的故障恢復層,適合需要高可用性和自動容災的場景。