前言¶
在 DeepSeek Harness(DSH)裏,第三方插件裝好後默認參與全局響應。插件一多,常駐能力(例如計量、樣式類插件)和「只在某段對話裏才需要」的能力會混在一起,既難按需啓停,也不方便把若干插件當成一套工作流來管理。
kkaporn/dsh-session-composer(npm 包名 dsh-plugin-canvas)提供一塊無限畫布:把已安裝的第三方插件拖進畫布後脫離全局、在畫布上組成「組合」,開啓組合時再讓組合內插件重新加入全局響應。維護者爲 kkaporn,社區目錄分類爲工作流;倉庫採用 MIT 許可,當前 package 版本爲 1.0.0。
這是什麼¶
一句話定位:無限畫布插件倉庫——在畫布上編排第三方插件,用啓停組合控制哪些插件參與全局響應。
它不修改各插件的代碼、配置、依賴或數據;啓停完全委託宿主 pluginManager.setBundleEnabled / setPluginEnabled,持久狀態只寫入 ~/.dsh/plugin-canvas/state.json,不寫 YAML 或 package.json。
核心模型¶
下面表格描述插件狀態與全局響應的關係(資料原文):
| 動作 | 結果 |
|---|---|
| 裝完(不動) | 插件在本體庫,全局響應 |
| 拖入畫布 | 插件脫離全局,進入畫布(休眠) |
| 開啓組合 | 組合內插件進入全局響應 |
| 關閉組合 | 組合內插件退出全局 |
常駐插件(README 舉例:ponytail、cost-meter)若不拖進畫布,則一直保持全局響應。
安全與設計約束¶
- 本體硬隔離:
@deepseek-ai/*永不顯示、永不操作。 - 只動開關:啓停 100% 走宿主 pluginManager,不改插件本體。
- 不寫配置文件:除
state.json外不寫入其他項目配置。 - 重複 entry id 阻斷:保存組合前檢查;若 entry id 衝突可能導致啓動崩潰,會直接拒絕保存。
架構概覽¶
- 宿主半(
lib/index.js):5 個 HTTP 路由——/state、/drag、/activate、/save、/delete;啓停委託pluginManager,狀態寫入~/.dsh/plugin-canvas/state.json。 - 客戶端(
lib/client.js):在conversation.composer.dock註冊入口;手寫無限畫布(節點拖拽、平移縮放、連線、拖入插件),無 React Flow 依賴。 - 運行時:零額外 npm 運行時依賴(純
node:內置模塊);要求 Node>=18;peer 依賴@deepseek-ai/dsh(>=0.2.0-rc.2 <0.3.0-0)及可選@deepseek-ai/cordis(~4.0.4)。
安裝與啓用¶
從 GitHub 安裝(命令來自倉庫 README):
dsh plugin add github:kkaporn/dsh-session-composer
若已在本地檢出源碼目錄,也可指向該路徑:
dsh plugin add /path/to/dsh-plugin-canvas
安裝後,通過對話側 composer 入口打開畫布界面(客戶端註冊點 conversation.composer.dock),在畫布上拖入插件、保存組合,並按需開啓或關閉組合。
典型用法(可復現流程)¶
- 用
dsh plugin add安裝本插件及需要的第三方插件;需要長期全局生效的插件留在本體庫,不要拖進畫布。 - 打開 composer 畫布,從本體庫把暫時不想全局響應的插件拖入畫布(拖入後該插件脫離全局、處於休眠)。
- 在畫布上把多個插件編排成一組,保存組合;保存前宿主會校驗 entry id,避免重複 id 導致啓動崩潰。
- 需要某套工作流時開啓組合,組合內插件重新進入全局響應;用完後關閉組合,組合內插件退出全局。
宿主提供的 HTTP 接口(/state、/drag、/activate、/save、/delete)由客戶端與畫布交互調用,一般用戶只需通過 UI 完成上述步驟。
適用場景與注意¶
適合誰:已在 DSH 裏安裝多個第三方插件、希望按會話或任務切換「哪幾個插件同時生效」的開發者;需要把若干插件當成可開關組合來試工作流時,本插件的分類(工作流)與畫布模型較對口。
務必注意:
- 插件與所編排的第三方插件均在當前 dsh 進程權限下運行;安裝前應閱讀源碼與許可證(本倉庫 MIT),並瞭解各被編排插件的行爲。
- 社區目錄 skillhub.cn 上的條目 與 GitHub 倉庫 爲獨立社區信息來源,與 DeepSeek / 幻方無官方從屬關係;DSH 生態理念是「一切皆插件」,目錄站是社區聚合,不是官方應用商店。
- 開發自檢(可選):在倉庫根目錄執行
node test-index.mjs(宿主半純函數)、node test-client.mjs(客戶端結構),無需額外測試框架。
結尾¶
dsh-session-composer 用畫布把「全局響應」變成可編排、可開關的組合,適合在插件較多時做工作流隔離。進一步瞭解可查看社區目錄頁與 GitHub README:
- 目錄頁:https://www.skillhub.cn/plugins/kkaporn/dsh-session-composer
- GitHub:https://github.com/kkaporn/dsh-session-composer