dsh-dynplugin-manager:DSH 動態插件的安裝、加載與生命週期管理

前言

DSH(DeepSeek Harness)的插件體系中,動態插件(Dynamic Cordis Plugins)通常有兩條加載通道:runner 通道按會話加載,loader 通道通過持久掛載生效。對於需要人工安裝、掛載、停用和移除插件的使用者來說,相關操作分散在命令、目錄和配置項中,不夠直接。

dsh-dynplugin-manager 是一個面向 DSH dynamic plugins 的管理插件,提供設置頁、安裝對話框、內置發現、slash commands 和生命週期操作。

這是什麼

dsh-dynplugin-manager 是倉庫 Thomas-key/dsh-dynplugin-manager 中的插件,包名爲 dsh-dynplugin-manager,許可證爲 MIT。

它管理的是 DSH dynamic plugins,包括 runner 會話級加載和 loader 持久掛載兩類對象。倉庫材料中的維護信息存在不一致:README 提到 authored by deepseek-v4-flash,並說明若相關維護說明未移除則作者不積極維護;package.json 的 author 字段爲 illusion。使用前應自行審查源碼、依賴和維護狀態。

核心功能

內置插件發現

插件從兩個位置發現候選:

  • runner managed dir:~/.dsh/dynplugin-manager/plugins/
  • profile node_modules:~/.dsh/profiles/<profile>/node_modules/

不需要額外配置目錄,設置頁會基於這些位置展示可管理對象。

Settings 頁面

啓用後,進入 Settings → Dynamic Plugins 可以看到動態插件狀態。

頁面提供:

  • 內置發現結果
  • live state badges
  • loader 插件的 disable / uninstall 操作
  • install dialog 入口

安裝對話框

安裝對話框支持以下來源:

  • local dir
  • GitHub repo
  • npm package

流程爲:選擇來源、掃描、按候選插件選擇 link / copy 安裝模式、查看即時結果、one-click mount。

其中 GitHub repo 來源會將 zip 解壓到:

~/.dsh/dynplugin-manager/cache/

並支持 monorepo。

自動路由

/dynload <name> 會根據插件形態自動路由:

  • self-contained 插件走 runner session-scoped load
  • import-using 插件走 loader persistent insert-row mount

質量檢查

插件使用 verify-before-persist 機制:在寫入持久配置前執行驗證;驗證失敗不寫入內容。

安裝與啓用

先確認來源

README 中給出了 name collision warning:可能存在同名 npm 包。安裝時建議明確從該倉庫安裝:

dsh plugin --profile web add -w Thomas-key/dsh-dynplugin-manager

如果從本地 checkout 安裝:

dsh plugin --profile web add -w ./dsh-dynplugin-manager

安裝運行時依賴

插件以 link 方式安裝,Node 會從目錄本身解析 import。@deepseek-ai/dsh-tools 不提交到倉庫,需要先在 checkout 中安裝,否則 dsh web 可能啓動失敗:

cd dsh-dynplugin-manager
npm install
cd ..

peerDependencies 中的 @deepseek-ai/cordis 和 react 由 DSH host 提供,不應本地安裝。

啓用

經過上面的步驟後,重啓 dsh web,然後進入:

Settings → Dynamic Plugins

即可看到動態插件列表和安裝對話框。

典型用法

加載插件

/dynload <name>

該命令會自動路由:

  • self-contained 插件進入 runner session-scoped 模式
  • import-using 插件進入 loader persistent mount 模式

停用插件

/dynunmount <name>

行爲按通道區分:

  • loader:移除 insert row,相當於 disable,包本身保留
  • runner:刪除 managed copy

完全移除插件

/dynuninstall <name>

完全移除包括:

  • insert row
  • dsh plugin remove
  • managed copy
  • 相關 records

手動清理 .pnpm 殘留

完全移除後,如需手動回收 .pnpm 物理殘留,可以執行:

dsh plugin --profile web prune

注意:dsh plugin --profile web prune 可能刪除用戶安裝的包,因此插件不會自動執行 prune。

適用場景與注意

適合需要人工管理 DSH 動態插件的使用者和開發者,尤其是需要統一查看插件狀態、從本地目錄 / GitHub / npm 安裝、掛載、停用和移除動態插件的場景。

使用前建議注意:

  • 插件會以當前 DSH 進程權限運行,安裝前應檢查源碼、依賴和許可證。
  • 該插件許可證爲 MIT。
  • 同名 npm 包可能衝突,應從 Thomas-key/dsh-dynplugin-manager 倉庫明確安裝。
  • 維護狀態在倉庫材料中不一致,使用前應自行判斷維護活躍度。
  • npm 上已有 dsh-plugin-manager(author hrhgit),它管理 bundle plugins,與本插件管理的 dynamic plugins 不是同一對象。

鏈接

社區目錄頁是插件目錄頁面,不等同於官方應用商店。

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

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

小夜