dsh-session-composer:用無限畫布組裝可開關的 DSH 插件組合

前言

在 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),在畫布上拖入插件、保存組合,並按需開啓或關閉組合。

典型用法(可復現流程)

  1. 用 dsh plugin add 安裝本插件及需要的第三方插件;需要長期全局生效的插件留在本體庫,不要拖進畫布。
  2. 打開 composer 畫布,從本體庫把暫時不想全局響應的插件拖入畫布(拖入後該插件脫離全局、處於休眠)。
  3. 在畫布上把多個插件編排成一組,保存組合;保存前宿主會校驗 entry id,避免重複 id 導致啓動崩潰。
  4. 需要某套工作流時開啓組合,組合內插件重新進入全局響應;用完後關閉組合,組合內插件退出全局。

宿主提供的 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
羽毛球分组比赛记分
小程序二维码

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

小夜