前言¶
DeepSeek Harness (dsh) 的插件依賴關係通過 pnpm 管理併疊加到 dsh.profile.bundles 中。直接使用 pnpm up --latest 或手動操作,容易出現 profile 處於半成品狀態、版本鎖定被破壞、層列表未更新或組合校驗失敗等問題,導致 dsh 重啓後無法啓動。
dsh-plugin-updater 針對這些痛點設計,提供了一套從備份、鎖定風格保持、對賬到雙重校驗、真實啓動驗證的完整流程,確保插件更新或卸載後環境依然可用。
是什麼¶
dsh-plugin-updater 是 DeepSeek Harness (dsh) 的插件更新與卸載工具。它由 dp419936514 維護,核心價值在於通過“備份 -> 校驗 -> 啓動驗證 -> 失敗回滾”的管線,安全地管理第三方插件依賴。
核心功能¶
- 插件清單:顯示插件名字、當前版本、可升級版本,並標記已鎖定、已棄用、本地依賴。支持按
pnpm outdated刷新清單。 - 兩種更新模式:支持升級到最新版,或在原版本約束內升級。跨大版本時會在頁面上提示。
- 一鍵操作:在設置頁勾選插件,二次確認後執行。支持實時進度和逐項報告“舊 -> 新”的變更。
- 逐項卸載:每個插件行一個“卸載”按鈕。流程包括:備份 -> pnpm remove -> bundles 對賬 -> 組合校驗 + 臨時端口啓動驗證。失敗時自動回滾。
- 回滾機制:操作失敗自動還原;也可以在設置頁裏手動回滾最近 10 份歷史備份。
- 智能重啓:自動檢測 dsh 的啓動方式(systemd 用戶服務或前臺/後臺進程),使用對應的命令或分離進程拉起新進程,確保舊進程退出後再加載新版本。
- 操作歷史:每次更新、卸載、回滾的結果記錄在
<profile>/.dsh-plugin-updater/history.l中。
安裝與啓用¶
在 web profile 中安裝:
dsh plugin --profile web add github:dp419936514/dsh-plugin-updater
重啓 dsh web 後,設置頁會出現“插件更新”分區。卸載該插件自身需使用命令行:
dsh plugin --profile web remove dsh-plugin-updater
典型用法¶
設置頁操作¶
- 打開“插件更新”分區,勾選要更新的插件(精確鎖定的默認不勾)。
- 選擇更新模式,點擊“一鍵更新所選”。
- 成功後點擊“重啓 dsh”生效。
命令行操作¶
- 檢查清單:
node bin/dpu.mjs check - 更新所有:
node bin/dpu.mjs update --yes - 更新指定插件:
node bin/dpu.mjs update --targets dsh-cost-meter --yes - 卸載指定插件:
node bin/dpu.mjs uninstall --targets dsh-cost-meter --yes - 回滾:
node bin/dpu.mjs rollback - 重啓服務:
node bin/dpu.mjs restart --yes
注意事項¶
- 範圍限制:只管理 profile 的第三方依賴,不升級 dsh 本體,不修改 agent preset、會話和憑據,也不替你裝新插件。
- 手動更新:更新是“更新你勾選的那些”,不會自動追新。
- 內置包保護:內置
@deepseek-ai/*的更新歸 dsh 自己,也不在卸載範圍。 - 安全性:比直接
pnpm up --latest更安全,多了備份、鎖定、bundles 對賬、雙重校驗和失敗回滾。 - 斷電恢復:更新或卸載中途斷電、被殺,可用備份目錄 +
node bin/dpu.mjs rollback命令還原。 - 卸載驗證:卸載後會重新對賬
dsh.profile.bundles,斷言沒有殘留的無依賴層。
結尾¶
dsh-plugin-updater 通過一套標準化的操作流程,填補了直接使用包管理器更新插件帶來的安全空白。對於需要頻繁調整插件生態的開發者,它能有效降低環境損壞風險。更多細節可參考 GitHub 倉庫。