dsh-rescue:DeepSeek Harness (DSH) 的救援模式工具

前言

DeepSeek Harness (DSH) 採取「一切皆插件」的理念。當版本升級導致第三方插件衝突,GUI 無法啓動時,常規修復手段失效。此時需要一種能在插件體系之外生效的工具,dsh-rescue 正是爲解決這一場景設計。

當 DSH 因插件衝突陷入死鎖,dsh-rescue 臨時摘除 profile 中所有第三方插件層,讓 dsh 以純核心啓動並自行修復;修完一條命令即可原樣還原。

是什麼

dsh-rescue 是 DeepSeek Harness (DSH) 的救援模式工具,由 Iliyasfiel 維護,採用 MIT 許可證。

它是一個啓動級工具,而非插件。其核心原理是直接編輯 profile 的 manifest(清單文件),剝離 dsh.profile.bundles 中定義的第三方 bundle。因爲內置核心層(如 @deepseek-ai/dsh-base)不在 dependencies 中,它們會被保留,從而確保 DSH 能以一個純淨的核心啓動。

核心能力

該工具提供以下核心功能:

  • 臨時剝離:移除 profile stack 中所有第三方 bundle。
  • 純核心啓動:允許 DSH 在沒有第三方插件干擾的情況下啓動,用於修復。
  • 一鍵還原:修復完成後,通過一條命令恢復原始插件棧。
  • 事務化備份:在修改 manifest 前先備份和記錄狀態,修改失敗會自動回滾。
  • 協調式退出:exit 命令會智能還原,僅當插件包仍在 dependencies 時才恢復,已刪除的插件不會被強行復活。
  • 零依賴離線:純 Node 實現,無需 pnpm,完全離線可用。
  • 生態兼容入口:提供一個惰性的 cordis bundle 入口(apply() 爲空操作),使其可作爲插件被 dsh plugin add 安裝,但實際運行機制是 CLI。

安裝

全局安裝 CLI(推薦,這是救援路徑):

npm install -g dsh-rescue

或者,將其註冊爲生態兼容的 bundle(可選):

dsh plugin --profile web add dsh-rescue

典型用法

救援工具的工作目錄默認爲 $DSH_HOME/profiles(DSH_HOME 通常指向 ~/.dsh),默認 web GUI profile 名爲 web。

基本命令

dsh-rescue enter  <profile>    # 進入救援模式:僅保留核心層,隔離第三方插件
dsh-rescue exit   <profile>    # 退出救援模式:協調並還原原始插件棧
dsh-rescue status <profile>    # 查看狀態:救援狀態、核心層與第三方層的拆分情況
dsh-rescue help

典型救援流程

當 DSH 無法啓動時,停止當前進程並執行以下步驟:

# 1. 進入救援模式
dsh-rescue enter web

# 2. 此時 profile 僅包含核心層,DSH 應能正常啓動
dsh web

# 3. 在 GUI 或 CLI 中修復插件衝突(例如移除衝突的包)
dsh plugin --profile web remove <conflicting-package>

# 4. 退出救援模式,還原插件棧
dsh-rescue exit web

# 5. 恢復正常啓動
dsh web

行爲細節

  • 判定規則:工具僅依據 dependencies 和 dsh.profile.bundles 的交集來判定第三方插件,不依賴包名前綴假設,因此對 DSH 核心形態的變化更穩健。
  • 不可侵入性:救援工具不能作爲插件安裝在 DSH 內部運行(它會成爲被隔離的對象)。因此,其真正的機制是 CLI,而 bundle 入口是刻意設計爲惰性的(apply() 爲空),僅用於生態兼容。
  • 狀態管理:
    • enter 只精簡 bundles,保留 dependencies。
    • exit 會精確還原 bundles,僅當插件包仍存在於 dependencies 中時才恢復。
    • 救援期間若宿主自動補寫了默認配置,exit 會精確移除這些自動寫入的配置,保持還原的乾淨。

適用場景與注意

  • 適用場景:版本升級導致 GUI 無法啓動,需要在不啓動插件的情況下修復 profile 配置。
  • 注意:
    • 救援工具以當前 dsh 進程的權限運行,安裝前應檢查源碼。
    • 不能在已經處於救援模式的 profile 中再次 enter,或對非 profile 目錄、無狀態目錄執行操作,系統會報錯並拒絕修改。
    • 由於是直接編輯 manifest,操作前建議備份 profile 目錄。
羽毛球分组比赛记分
小程序二维码

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

小夜