dsh-rescue-guard:DSH 起不來時的獨立救援與啓動前預檢

前言

DeepSeek Harness(DSH)的配置與插件都落在 profile 裏。一次 apply() 拋錯、命令重複註冊、或構造期讀了尚未落地的文件,宿主可能在插件加載階段就退出——此時救援類插件自己也進不了啓動流程。社區裏已有 dsh-fix、dsh-plugin-ops、各類備份與回滾插件,各自側重診斷、靜態規則或清單快照;dsh-rescue-guard 把「命令名衝突的啓動前預檢」「崩潰日誌六類歸類」和「不依賴 DSH 的獨立 CLI」收在同一套工作流裏,維護者 1250589385(raysnows)在 README 中寫明設計來自本機 21 份真實崩潰日誌的反推。

這是什麼

dsh-rescue-guard 歸類爲工作流插件,當前包版本 0.3.1,許可證 MIT。它解決兩類問題:DSH 已無法啓動時,用 Node 內置模塊實現的 dsh-rescue 做診斷、安全模式、快照回滾與禁用可疑 bundle;DSH 仍正常時,在啓動前做啓發式靜態預檢,並在面板裏查看崩潰歷史、安全模式與快照。README 強調:若崩潰發生在插件加載階段,本插件作爲 bundle 同樣可能加載失敗,因此獨立 CLI 是核心能力,而不是可選附屬。

兩半分工

組件 何時工作 作用
獨立 CLI dsh-rescue DSH 起不來 不依賴 DSH:診斷、預檢、安全模式、快照、禁用/啓用 bundle
啓動前預檢 DSH 正常 提前發現命令名衝突、缺失文件、可能遮蔽根路由的註冊等
面板 UI DSH 正常 診斷信息、安全模式、快照管理;底部提供可複製的救援命令

維護者在日誌統計表中列出本機樣本:21 份崩潰裏 12 份崩在插件加載中(含 ENOENT 讀缺失文件 8 次、command "rules" is already registered 2 次、1 entry did not activate 2 次等),其餘涉及啓動握手或運行期進程退出——這解釋了爲何必須保留脫離宿主的 CLI。

獨立 CLI 與子命令

CLI 入口在插件包目錄的 bin/dsh-rescue.cmd(Windows 可雙擊;會探測本機 Node 或 DSH 自帶運行時)。子命令與全局選項以 README 爲準:

dsh-rescue diagnose                 看崩潰原因 + 預檢 + 建議(建議先跑)
dsh-rescue crashes [--limit N]      只列歸類後的崩潰歷史
dsh-rescue scan                     只跑啓動前靜態預檢
dsh-rescue safe-mode status|on|off  安全模式
dsh-rescue snapshot create|list|restore <id>
dsh-rescue disable <bundle>         把某個 bundle 移出啓動列表
dsh-rescue enable <bundle>          加回啓動列表

--profile <dir>  配置目錄(默認 ~/.dsh/profiles/desktop)
--home <dir>     DSH_HOME
--json           以 JSON 輸出

典型救援順序:先 diagnose,再 safe-mode on 後嘗試啓動 DSH;若仍失敗,按診斷中的 web_auth 等建議處理;若要定位具體插件,可用 enable 逐個加回。

啓動前預檢與安全模式

預檢對應 README 所列真實事故類型:命令名衝突(例如多個插件註冊同一命令導致 apply() 中斷)、構造期 readFileSync 目標文件缺失、以及 prefix 掛在 / 可能影響桌面端握手。文檔明確:預檢是靜態啓發式,命中值得查,未命中不代表沒問題;UI 與 CLI 都會提示這一點。0.3.x 起 scan 還檢測對宿主私有事件 internal/* 的訂閱,用於升級宿主前掃一眼兼容性風險。

安全模式佈防後,下次啓動只加載 @deepseek-ai/* 官方 bundle,第三方暫時移出;啓動成功後自動還原。約束包括:不改動官方 bundle、改寫清單前自動快照、原子寫、冪等。插件不自動刪除任何東西,只做禁用(可還原)。

快照、指紋與崩潰守護

每次啓動會保留清單級快照(package.json / pnpm-workspace.yaml / rules.yaml),默認路徑爲 <profile>/.rescue/snapshots/,保留最近 10 份。清單損壞時可:

dsh-rescue snapshot list
dsh-rescue snapshot restore 2026-11-07T13-35-29.164Z

啓動指紋寫在 boot.json 的 fingerprint / lastGood:成功啓動時記錄宿主與各插件解析版本,失敗時與上次成功對比並寫入日誌與面板。

面板可安裝崩潰守護:事件驅動監聽崩潰日誌目錄(非輪詢爲主),防抖後生成 <profile>/.rescue/last-crash-report.txt,含錯誤原文、歷史歸類、預檢摘要與可執行建議。README 稱平時零佔用,主路徑依賴操作系統目錄變更通知。

崩潰診斷在 0.3.0 起會解析棧裏第一個非 @deepseek-ai/* 的第三方幀,縮小嫌疑 bundle 範圍,但文檔要求人工確認鏈式調用場景,棧幀不是最終判決書。

與生態裏其它插件的關係

README 對照表說明:dsh-plugin-ops 強於依賴、peer、版本兼容等靜態規則,但不查命令註冊衝突;本插件與之互補。與 dsh-fix 在獨立 CLI 救啓動上有重疊,差別在於命令衝突預檢與六類崩潰歸類。快照類插件側重通用備份,本插件快照服務於救援與清單回滾。若你 primarily 需要依賴漂移類檢查,文檔建議優先考慮 dsh-plugin-ops;若痛點是啓動崩潰、命令衝突與 profile 自救,本插件更對口。

安裝與啓用

官方安裝命令:

dsh plugin add dsh-rescue-guard

安裝後需要重啓 DSH,路由與面板纔會生效;README 寫明裝完不重啓時 /dsh-rescue/*.json 可能 404,屬預期行爲。package.json 要求 Node >=20。包內自帶回歸測試:

node test/regression.mjs

期望 24 項全部通過。

適用場景與注意

適合:本地 desktop profile 插件較多、曾多次啓動失敗、需要在不啓動 DSH 的情況下禁用 bundle 或回滾清單的開發者。

務必注意:

  • 插件以當前 DSH 進程權限讀寫 profile;安裝前應查看 GitHub 倉庫 源碼與 MIT 許可證。
  • 不能在「插件加載期即崩潰」的場景下靠本 bundle 自救——只能用 dsh-rescue CLI。
  • 不做法制意義上的安全審計;修不了 renderer exited: killed 等應用層進程問題。
  • 命令衝突掃描以 package.json 聲明爲準,物理殘留在 node_modules 但已從聲明移除時可能漏報。
  • 社區目錄 SkillHub 插件頁 與 GitHub 由社區維護,與 DeepSeek / 幻方無官方從屬關係。

結尾

dsh-rescue-guard 把獨立救援 CLI、清單快照、安全模式與啓動前預檢(尤其命令名衝突)放在一條工作流裏,並附帶可選的崩潰守護與面板運維入口。星標與版本以倉庫當前信息爲準;進一步瞭解可訪問 SkillHub 目錄頁 與 GitHub:1250589385/dsh-rescue-guard。

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

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

小夜