前言¶
在 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。
入口與操作層級¶
側欄有三個層級的「插頭」圖標(工作區標題右側爲客戶端級;工作區行、會話行在鼠標懸停時出現圖標):
- 客戶端插件:「工作區」總標題右側,設置整個客戶端的默認插件與配置。
- 工作區插件:懸停在工作區名稱行上點擊插頭圖標。
- 會話插件:懸停在該會話名稱行上點擊插頭圖標。
菜單內,外層按 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;不需要預先安裝臨時消息等其他插件。發行包已包含構建產物,無需在安裝時本地構建。
典型用法¶
- 安裝並重啓 DSH 後,從側欄「工作區」標題旁的插頭圖標打開 客戶端 默認策略。
- 在目標工作區行懸停,用插頭圖標爲該工作區覆蓋開關或配置(例如僅在該工作區啓用上下文/記憶類插件)。
- 在某個會話行懸停,爲單次任務單獨啓用或關閉插件;在「設置」中使用與原插件相同的配置界面。
- 若需要新建會話/子 agent 即帶上固定組合,切換到對應層的 下級 頁,將總開關設爲 獨立 後預設插件狀態。
- 遇到同名工具或技能衝突、或洞察/統計讀不到投影數據等情況,查閱 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