dsh-recency-guard:DSH 插件崩潰後的新近性隔離與恢復

前言

在 DeepSeek Harness(DSH)裏按需安裝、更新第三方或實驗性插件,是常見做法。一旦某個插件在啓動或運行階段拖垮宿主,往往只能先關掉全部插件,再逐個加回定位元兇。這個過程費時,還容易在「剛更新過誰」與「配置被改掉」之間失去線索。下面介紹的 dsh-recency-guard(維護者 xuanyuanchumo,社區分類 admin-security)面向這一類崩潰恢復場景:記錄安裝與更新的時間順序,備份相關配置,並在下一次啓動、問題插件代碼尚未被加載之前,按規則自動隔離最可疑的條目,待宿主穩定後再逐步恢復。

這是什麼

dsh-recency-guard 是 DSH 的插件崩潰恢復守護。README 將其概括爲:記錄第三方/實驗性插件的安裝與更新新近性,備份其配置;崩潰後自動關閉最近更新的嫌疑插件,使 profile 能再次啓動,穩定後恢復仍可用的配置。

當前 npm 包版本爲 0.12.1(MIT 許可),產物入口爲 dist/index.js,並附帶零依賴 CLI bin/rescue.mjs(包內命令名 recency-guard-rescue)。插件通過 Cordis patch 注入宿主,並在 Web 客戶端側掛載管理面板與工具接口。

核心機制

崩潰後的隔離策略

當某個插件導致 DSH 崩潰時,守護會在崩潰時刻記下「誰最可疑」。下一次啓動時,在崩潰插件的代碼被加載之前,將其擋在門外。

若仍反覆崩潰,關閉範圍會按新近性遞增:第 1 次關閉最近更新的 1 個;仍崩潰則關閉最近更新的 2 個,以此類推。宿主穩定運行後,除首要嫌疑外,其餘被自動關閉的配置會恢復啓用。

恢復置信與兩階段提交

證據分兩類處理:

  • 唯一嫌疑:視爲確定性證據,可在第 1 輪觀察後直接關閉。
  • 多嫌疑:視爲概率性證據;同一頭號嫌疑需連續 N 輪(默認 2,可配置項 confirmRounds)仍佔首位才自動關閉,以降低偶發崩潰誤傷。

關閉動作分兩階段:prepared(記錄待執行)→ quarantined(已生效)。若崩潰打斷執行,下次啓動會按磁盤現狀對賬(confirmed / reverted),避免半成品狀態。

異常退出檢測(v0.12.1)

除原有哨兵文件路徑外,v0.12.1 增加 classifyAbnormalExit,覆蓋 SIGKILL、OOM、斷電、原生段錯誤等無法執行 process.on('exit') 的場景。殘留啓動標記且 PID 已死時按概率性證據計數,達 confirmRounds 後複用既有 recover() 通道,避免「永遠關 0 個」的崩潰循環。乾淨啓動、熱重載、併發實例等結局會歸零或留痕,並與「穩定後是否恢復插件」判定解耦(僅 exitClass === 'clean' 時走自動恢復)。

配置備份與時間線

插件更新前,會把更新前的配置快照存爲 <版本>@<時刻>.json,默認每插件保留 5 份(可配置)。便於對照「升級後行爲變了,是配置變了還是缺陷」。

備份根目錄可通過配置 backupRoot 或環境變量 RECENCY_GUARD_BACKUP_ROOT 指定;自定義根下仍按分區鍵分層,便於多項目隔離。工具側支持 action=backups 查看最近備份與各插件時間線。

官方實驗插件

匹配 @deepseek-ai/dsh-experimental-* 的組件只記錄、不自動關閉(journal 中爲 official-observe,並做整組狀態的時間線備份)。崩潰歸因時仍可查看當時裝了哪些實驗組件、版本與狀態,但不自動關停官方實驗場組件。

變更檢測

訂閱宿主 plugin-manager/changed 事件(500ms 防抖),經 GUI/工具路徑的安裝與更新會盡快進入時間線與嫌疑面。CLI 或手工編輯配置不觸發該事件,仍由每次啓動的同步 diff 兜底。

可觀測性與面板

側欄提供生命週期、事件流、嫌疑排名、備份策略、圖譜關係等卡片;v0.10 起增加轉移矩陣、控制帶、數據流說明等可觀測視圖。面板動作帶 revision 樂觀併發校驗,寫操作(recover / restore / reenable / archive)執行前寫入審計 journal。

宿主正常時可通過工具 recency_guard 查詢狀態、歷史與備份;命令窗口輸出對人話摘要做了展示接線(v0.12)。

安裝與啓用

已抓取資料中未給出固定的 dsh plugin add … 一行命令。請打開社區目錄頁,按該頁公佈的安裝方式操作:

package.json 中聲明的 DSH 兼容範圍爲多條預發佈分支(例如 0.2.1-rc.5+、0.2.2-rc.1+ 等標記爲 compatible)。若宿主升級後插件被兼容閘門移出 profile,需對齊 README 與 dsh.compatibility.dshReleases 後再掛載。

安裝前建議閱讀倉庫源碼與 MIT 許可證;本插件與宿主同屬 admin-security 類能力,在當前 DSH 進程權限下運行,能讀寫 profile 內的插件狀態與配置備份。

典型用法

宿主不可用時的只讀逃生 CLI

宿主因崩潰無法啓動時,可在 profile 目錄外只讀查看守護產物(零依賴、語義化退出碼 2 表示仍有未恢復崩潰,便於腳本聯動):

node bin/rescue.mjs status --profile-dir <dir>
node bin/rescue.mjs history --profile-dir <dir>
node bin/rescue.mjs decision --profile-dir <dir>
node bin/rescue.mjs archives --profile-dir <dir>

若已通過 npm 安裝包,也可使用 bin 名:

recency-guard-rescue status --profile-dir <dir>

v0.10 起,status / history 在終端側按 CJK 顯示寬度對齊中英混排標籤。

配置項(資料中明確出現)

在宿主設置中調整(具體字段以倉庫文檔爲準):

項 作用
confirmRounds 多嫌疑時頭號嫌疑連續幾輪仍居首才自動關閉(默認 2)
backupRoot 時間線備份根目錄
RECENCY_GUARD_BACKUP_ROOT 環境變量,作用同 backupRoot

面板上的備份策略卡片爲只讀投影;改配置仍走宿主設置頁。

宿主內的工具與面板

守護註冊宿主工具後,可查詢事件時間線、事實摘要與備份列表;側欄面板支持查看恢復判定(觀察中 / 已行動)、嫌疑列表(默認展示 15 條,可展開其餘)、手動恢復或重新啓用等操作(動作需有效 revision,衝突時返回 409)。

適用場景與注意

適合:經常試用社區插件或 @deepseek-ai/dsh-experimental-*、需要在崩潰後先讓 profile 能起來再慢慢對賬的 DSH 用戶;希望保留「誰在崩潰前剛被更新過」與配置時間線的團隊環境。

注意:

  1. 自動關閉針對第三方/非官方實驗嫌疑;官方實驗插件僅觀測,不承擔自動隔離。
  2. 強殺、斷電等異常退出依賴 v0.12.1 的殘留標記邏輯,仍可能需多輪觀察纔行動,屬有意設計的概率性證據。
  3. 插件不能替代對第三方源碼的安全審計;安裝前請自行檢查倉庫與權限邊界。
  4. SkillHub 目錄爲社區索引站點,與 DeepSeek / 幻方無官方從屬關係;版本與兼容信息以 GitHub 與 package.json 爲準。

結尾

dsh-recency-guard 把「最近動過誰」變成可執行的啓動前隔離策略,並用備份、journal 與離線 rescue.mjs 把崩潰恢復從盲試改成了可對賬的流程。需要安裝入口與分類說明時,見 SkillHub 目錄頁;需要機制細節與版本記錄時,見 GitHub 倉庫。

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

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

小夜