dsh-tiered-plugin-menu:按工作區與會話分級管理 DSH 插件

前言

在 DeepSeek Harness(DSH)裏,插件默認往往按客戶端或全局 profile 統一下發:同一個包在所有工作區、所有會話裏共用一套開關和配置。實際開發時,常見需求是「只在寫代碼的工作區啓用某工具插件」「同一會話族裏 A 會話用一套記憶策略,B 會話用另一套」,而全局開關很難精細到目錄樹和單次會話。

社區插件 dsh-tiered-plugin-menu(維護者 kazari-qwp,分類 admin-security)在側欄增加分級入口,讓配置按 客戶端 → 父工作區 → 子工作區 → 會話 繼承,並可在任意層覆蓋;同時支持爲下級實例準備默認插件策略。下文介紹其定位、能力與安裝用法,事實均來自項目 README 與 package 元數據。

這是什麼

dsh-tiered-plugin-menu 是 DSH 的管理類插件:爲每個工作區和每個會話提供獨立的插件開關與配置,支持逐級繼承與(可選的)實例隔離。它不替代 DSH 自帶的「插件」總頁,而是在工作區樹旁提供與目錄結構一致的配置入口。

維護倉庫:GitHub - kazari-qwp/dsh-tiered-plugin-menu。社區目錄頁:skillhub.cn 插件頁。許可證爲 MIT。package.json 中當前版本爲 0.6.4,engines 聲明依賴 DSH 0.2.2-rc.1 與 Node.js ^22.19.0 || >=24.0.0。

入口與操作層級

側欄有三個層級的「插頭」圖標(工作區標題右側爲客戶端級;工作區行、會話行在鼠標懸停時出現圖標):

  1. 客戶端插件:「工作區」總標題右側,設置整個客戶端的默認插件與配置。
  2. 工作區插件:懸停在工作區名稱行上點擊插頭圖標。
  3. 會話插件:懸停在該會話名稱行上點擊插頭圖標。

菜單內,外層按 npm 包 聚合顯示一項,繼承|啓用|關閉 同時作用於包內全部組件;進入包後可逐組件控制,不一致時外層顯示「部分啓用」。「設置」展開各插件原有的配置卡;若無可複用配置卡則提供 JSON 編輯器。

核心功能

逐級繼承

沒有在本層單獨設置時,沿上級繼承;需要時在工作區或單個會話覆蓋。README 舉例:客戶端配置 A、某工作區 B、其中一個會話 C——該會話用 C,同工作區其他仍繼承的會話用 B,其他工作區繼承 A。

菜單自有設置頁中 按工作區樹繼承 默認開啓,修改後立即保存。父級取最近的已註冊上級目錄,與 DSH「工作區樹」分組一致;未註冊的中間目錄會跳過。目錄層級與 Agent 父子關係分別處理(例如 Superagent Worker 目錄在 Router 目錄下時,可繼承 Router 所在工作區的配置)。

下級默認設置

每個菜單有 本級|下級 選項卡。下級總開關默認爲 繼承;切到 獨立 後可預設新建實例的插件開關,並複用原插件配置卡:

設置位置 作用於哪些新實例
客戶端 新頂層工作區(關閉樹繼承時爲所有新工作區),以及沒有歸屬工作區的新會話
工作區 新普通會話;開啓樹繼承時也用於新子工作區
會話 新子 agent,含後續各級子 agent

編輯默認值不會改寫已有工作區、會話或子 agent。分層配置默認保存在 $DSH_HOME/plugins/tiered-plugin-menu.json,可通過菜單插件的 dataFile 更改。

依賴與開關確認

改開關前會計算影響範圍:啓用組件時若依賴未啓用,可自動啓用依賴或取消;關閉被依賴組件時,列出仍依賴它的組件(含繼承該依賴的下級會話),可自動關閉或取消。依賴未安裝或不可用則報錯,開關不變,不會自動安裝。DSH 自帶插件頁仍按原生邏輯運行。

自動目錄隔離

下級實例通過 Node 文件接口創建目錄時,菜單可分配私有目錄;繼承上級實例時共用上級目錄,獨立啓用時使用自己的目錄。數據在配置文件旁的 <配置文件名>.data/ 中按作用域區分。README 明確:這與配置、生命週期相關,不是安全沙箱;全局文件、固定端口、外部進程等不在此層隔離範圍內。

插件隔離(實驗性)

菜單設置頁第二項 插件隔離(實驗性) 默認關閉,升級後也不會自動開啓;修改後需 重啓 DSH 生效。開啓後從客戶端級開始隔離,工具、技能等同名項可在同一會話用帶插件標識的穩定名稱共存。作者說明可能改善部分兼容問題,也可能引入新問題;詳細範圍見倉庫內 docs/PLUGIN_ISOLATION.md。

自兼容性聲明

插件作者可在 package.json 聲明多實例自兼容:

{
  "dsh": {
    "tieredPluginMenu": {
      "selfCompatible": true
    }
  }
}

true 表示作者聲明自兼容;false 或未填視爲未驗證,啓用前菜單會要求確認。自 0.5.4 起使用 selfCompatible,不再讀取舊字段 supportsChildInstances。

安裝與啓用

在 DSH 插件 → 添加插件 中輸入 npm 包名:

dsh-tiered-plugin-menu

若鏡像源返回首次發佈的佔位包,可切換到 npm 官方源後重試。命令行示例(桌面 profile):

dsh plugin --profile desktop add dsh-tiered-plugin-menu

Web 版將 desktop 換成自己的 profile 名稱(通常爲 web)。也可從 Releases 下載構建好的 .tgz 安裝。未開啓熱重載時安裝或升級後需重啓 DSH;不需要預先安裝臨時消息等其他插件。發行包已包含構建產物,無需在安裝時本地構建。

典型用法

  1. 安裝並重啓 DSH 後,從側欄「工作區」標題旁的插頭圖標打開 客戶端 默認策略。
  2. 在目標工作區行懸停,用插頭圖標爲該工作區覆蓋開關或配置(例如僅在該工作區啓用上下文/記憶類插件)。
  3. 在某個會話行懸停,爲單次任務單獨啓用或關閉插件;在「設置」中使用與原插件相同的配置界面。
  4. 若需要新建會話/子 agent 即帶上固定組合,切換到對應層的 下級 頁,將總開關設爲 獨立 後預設插件狀態。
  5. 遇到同名工具或技能衝突、或洞察/統計讀不到投影數據等情況,查閱 README 中的隔離說明與版本升級註記(如 0.6.3 對隔離插件投影讀取的修復);按需開啓實驗性隔離並重啓驗證。

關閉分級菜單本身會釋放其加載的下級實例與界面入口,但保留持久化配置;再次開啓時恢復。選中另一會話時會切換前端綁定;進入洞察、設置等頁面保留當前綁定。

適用場景與注意

適合:在同一 DSH 客戶端下管理多工作區、多會話,且希望插件開關和配置與目錄樹一致;需要爲新建會話或子 agent 設默認插件組合;在同一客戶端內試用不同插件配置而不改全局 profile。

注意:

  • 插件在 當前 DSH 進程權限 下運行,安裝前建議閱讀源碼與 MIT 許可,並自行評估 admin-security 類能力對本地環境的影響。
  • 兼容說明以 README 實測爲準(例如 README 正文一處寫明當前版本 0.6.1 的修復項,package 爲 0.6.4;測試環境 DSH 0.2.2-rc.1、Node 24)。未聲明自兼容的第三方插件啓用前需確認。
  • 社區目錄 skillhub.cn 爲獨立生態站點,與 DeepSeek / 幻方無官方從屬關係;DSH 本身仍是「一切皆插件」的 harness,本插件是對插件生命週期與配置作用域的擴展,而非官方應用商店內置能力。

結尾

dsh-tiered-plugin-menu 把 DSH 插件開關和配置落到客戶端、工作區、會話(及子 agent)各層,用繼承減少重複設置,用覆蓋滿足單次任務差異,並用依賴確認與可選隔離降低多實例混用時的摩擦。若你已經在用工作區樹區分項目,可先在一個非關鍵工作區試分級菜單與下級默認,再逐步推廣到日常會話。

  • 目錄頁:https://www.skillhub.cn/plugins/kazari-qwp/dsh-tiered-plugin-menu
  • 源碼與文檔:https://github.com/kazari-qwp/dsh-tiered-plugin-menu
羽毛球分组比赛记分
小程序二维码

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

小夜