前言¶
在 DeepSeek Harness (DSH) 的使用中,Profile 配置失敗或 Harness Loader 崩潰會導致開發流程中斷。傳統的排查方式往往依賴正在運行的進程,一旦 Loader 掛掉,診斷便無從下手。DSH Lifeboat 提供了一種隔離式的解決方案,確保即使在主進程無法啓動的情況下,也能對配置進行診斷並嘗試恢復。
這是什麼¶
DSH Lifeboat 是一款由 IoveCelestina 維護的 DSH 插件。它作爲一套獨立的“救生艇”系統,專門用於處理 Profile 的安全啓動、故障隔離和恢復操作。其核心價值在於將診斷和恢復流程與主 Harness 進程完全解耦,確保恢復操作在隔離的臨時環境中進行,且不會直接破壞原始配置文件。
核心功能¶
DSH Lifeboat 提供了以下核心能力:
- 無進程恢復控制台:Rescue 服務器是一個獨立進程,絕不運行在失敗的 Harness 進程內部。這意味着即使 Loader 掛掉,控制台仍可訪問。
- Web UI 與 CLI 雙模式:
- Web UI:監聽 127.0.0.1,提供實時探針進度、證據查看、已驗證恢復方案選擇、報告下載以及一鍵撤銷功能。
- CLI 模式:用於自動化診斷,直接輸出
dsh-lifeboat/v1JSON 格式的診斷報告。
- 智能診斷機制:
- 使用
dsh --profile <name> --dump-config生成配置快照。 - 將快照克隆到臨時 Home 目錄進行探針測試,確保原始文件保持只讀。
- 採用“上界優先移除搜索”算法,結合 Delta 調試和精確枚舉,尋找最小化的故障 Bundle 移除方案。
- 使用
- 安全恢復機制:
- 在應用恢復前,執行全量指紋檢查、樂觀清單哈希校驗和時間戳備份。
- 使用跨進程鎖防止併發恢復操作。
- 恢復操作是原子的,支持撤銷,並記錄恢復收據。
- 狀態標記:安裝後會在選定的 Profile 上添加健康標記,並在 Loader 穩定後寫入
~/.dsh/lifeboat/last-healthy.json。
安裝與啓用¶
安裝插件需要通過 DSH 的 CLI 命令添加官方發佈的 Release 包:
dsh plugin --profile web add https://github.com/IoveCelestina/dsh-lifeboat/releases/download/v0.1.1/dsh-lifeboat-0.1.1.tgz
安裝完成後,可以通過以下方式啓用診斷或恢復服務:
- 啓動 Web UI:
node ./src/cli.js serve
默認端口爲 4317,使用 `--port 0` 可獲取隨機可用端口。
- CLI 診斷:
node ./src/cli.js diagnose --profile web
node ./src/cli.js diagnose --profile web --json
- 帶運行時探針的啓動測試:
node ./src/cli.js diagnose --profile web --mode boot --allow-runtime-code-execution
適用場景與注意¶
- 運行環境:插件依賴 Node.js,要求版本爲
^22.19.0或>=24.0.0。插件本身無運行時依賴。 - 恢復邏輯:恢復計劃提供的是技術解決方案(如移除 Bundle),而非道德歸責。如果 A 和 B 僅在同時運行時失敗,Lifeboat 會提供“禁用 A”或“禁用 B”作爲等價選項。
- 應用限制:“應用恢復”功能僅當報告包含獨立驗證的 Bundle 移除計劃時纔可用。
- 報告存儲:診斷報告默認存儲在
$DSH_HOME/lifeboat/reports,系統會自動保留最新的 500 個報告。如需外部策略管理,可設置--max-reports 0。 - 分發渠道:Release 包通過 GitHub Releases 分發,不經過 npm 倉庫。
結尾¶
DSH Lifeboat 通過將診斷與恢復流程與主 Harness 進程解耦,提供了一個可靠的兜底手段。對於需要穩定保障 DeepSeek Harness Profile 穩定性的場景,它是一個值得納入工具鏈的插件。