DSH 會話插件管理器:按會話開關插件的模型可見面

前言

DeepSeek Harness(DSH)裏裝了很多插件時,模型每次請求都會帶上各插件註冊的工具、提示詞段和技能。若想在某一次對話裏臨時收窄能力——例如去掉網頁搜索工具、或不讓 Superpowers 技能進目錄——全局「設置 → 插件」會把影響擴到所有會話,往往過重。

dsh-session-plugin-manager(會話插件管理器)在右側欄增加「插件」頁籤,只對當前 session 關閉插件面向模型的那一層貢獻;其它會話和全局插件開關不變。下面按定位、能力邊界、安裝、用法與配置說明。

這是什麼

  • 倉庫 / npm 包名:dsh-session-plugin-manager(維護者 kiluahh,GitHub,SkillHub 目錄頁)
  • 分類:客戶端插件(注入 @deepseek-ai/dsh-client-ui-sidebar-right)
  • 許可:MIT;README 寫明在 DSH 0.2.2-rc.1 上做過測試;package.json 當前版本爲 0.2.1
  • 一句話:在右側欄按當前會話開關各 bundle 的工具、prompt sections 和 skills,不卸載插件、不改全局設置

列表數據與「設置 → 插件」同源,來自 pluginManager.listBundles()。

核心功能

安裝並在右欄打開 Plugins / 插件 後,可對每個已安裝的 bundle 撥動開關。

關閉(僅本會話)時插件側會:

  1. 通過 agent.ctx.tools.restrict({ deny }) 從下一輪請求的工具定義中移除該插件工具,模型無法看到或調用它們。
  2. 對該插件註冊的 prompt section / context 做同名空段遮蔽(scoped system-prompt shadowing)。
  3. 對在 skillProviders 中登記的 provider(默認映射含 @local/dsh-superpowers → superpowers),將 provider 下各技能註冊爲同名 runtime skill,並設 modelInvocable: false, userInvocable: false:技能目錄不再列出,skill 工具加載會返回不可用。

狀態持久化:按 sessionId 寫入 $DSH_HOME/session-plugin-manager/state.json;重開會話或重啓 DSH 後恢復本會話的開關狀態。開始頁會顯示與右欄對應的卡片。

界面語言:跟隨 DSH 語言;zh* 顯示中文,其它 locale 顯示英文;切換語言後面板會重渲染。行標題來自各包 package.json 的 dsh.meta。

邊界說明:它不做什麼

README 明確區分邊界,避免誤用:

  • 不卸載插件:後臺服務、UI 面板仍可運行,只是去掉模型可見的工具 / 段落 / 技能。
  • 不是全局開關:全局仍以「設置 → 插件」爲準;在設置裏全局關掉的行會在面板裏標爲 Globally off,需先在設置裏啓用才能做會話級控制。
  • 技能按 provider 整組遮蔽,不能勾選單個技能。
  • 不貢獻工具或技能的插件(音效、聊天橋、模型供應商等)在列表中置灰。

環境與依賴

  • 需要帶 sidebarRightTabs 客戶端服務與 pluginManager 主機服務的 DSH(文檔測試版本 0.2.2-rc.1)。
  • 運行時除 DSH 外無額外 npm 依賴,實現僅用 Node 內置模塊。

安裝與啓用

任選一種 install_bundle 目標(須以 host 返回 application: applied 爲準):

從 npm 公共 registry:

plugin_manager({ action: 'install_bundle', target: 'dsh-session-plugin-manager' })

從 GitHub:

plugin_manager({ action: 'install_bundle', target: 'https://github.com/kiluahh/dsh-session-plugin-manager' })

從本地目錄:

plugin_manager({ action: 'install_bundle', target: 'D:\\path\\to\\dsh-session-plugin-manager' })

安裝後:重啓 DSH(host 半需要重啓),並刷新頁面(client bundle 需重新加載)。

插件與 DSH 同進程權限運行;安裝前建議瀏覽倉庫源碼與 MIT 許可證。SkillHub 爲社區目錄,與 DeepSeek / 幻方無官方從屬關係。

典型用法

  1. 打開右側欄,進入 Plugins / 插件。
  2. 將某個 bundle 的開關撥到 off;行上會顯示被隱藏的工具 / 技能數量。
  3. 需要一次性撤銷本會話全部覆蓋時,使用 Restore all / 全部恢復。

README 中文說明中的可復現檢查項包括:

  • 關閉「網頁工具集」後,本會話工具列表中不再出現 web_search_bing、web_fetch_markdown;新會話仍可用。
  • 關閉 Superpowers 後,技能目錄不再列出 brainstorming、test-driven-development 等;skill 工具返回 not available for model invocation。
  • 重開會話或重啓 DSH 後開關狀態保持;點「全部恢復」後工具與技能恢復。

配置(cordis.patch.yml 行 config)

可在插件 bundle 的 cordis.patch.yml 中調整下表字段(均爲資料原文默認值與含義):

字段 默認 說明
stateFile $DSH_HOME/session-plugin-manager/state.json 按會話狀態文件
includeOfficial false 是否同時列出可選官方 bundle
toolMap {} 模塊 → { tools, sections, contexts },覆蓋自動掃描
skillProviders { "@local/dsh-superpowers": ["superpowers"] } bundle → skill provider 名;關閉時整組遮蔽
scan true 是否掃描包源碼補全 tool 映射
scanMaxFiles 120 單包最多讀取文件數
scanMaxBytes 2097152 單文件讀取上限(字節)
cacheTtlMs 30000 目錄緩存 TTL(毫秒)

若某行提示 Tools not mapped,需在 toolMap 中補充該模塊及工具名。

適用場景與注意

適合誰:經常開多會話、且希望某些對話「輕裝上陣」(少工具、少技能、少 prompt 注入)的 DSH 用戶;與全局插件設置互補,而不是替代。

注意:

  • 隻影響模型側可見面,不能代替在安全或合規場景下對插件本身的審計。
  • 技能遮蔽粒度是 provider,不能細到單個 skill。
  • 自定義翻譯可在 client.js 的 DICTS 中增加詞典並擴展 normalizeLocale(見 README Development / Languages)。

維護者在倉庫提供無外部依賴的 Node 測試,例如:

node test/smoke-test.mjs
node test/client-locale.mjs

結尾

DSH 生態強調「一切皆插件」;dsh-session-plugin-manager 解決的是會話級收窄插件模型面的需求:右欄開關、狀態按 session 落盤、與設置頁列表一致。需要安裝說明與驗證清單時,以 GitHub README 爲準;社區索引見 SkillHub 目錄頁。

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

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

小夜