DSH Lifeboat:DSH 配置文件的無進程安全啓動、故障隔離與恢復工具

前言

在 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/v1 JSON 格式的診斷報告。
  • 智能診斷機制:
    • 使用 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 穩定性的場景,它是一個值得納入工具鏈的插件。

插件目錄頁
GitHub 倉庫

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

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

小夜