dsh-capability-composer:按需收窄模型可見的插件與技能列表

前言

DeepSeek Harness(DSH)默認會把所有已安裝插件的工具定義、技能目錄、各插件的 system-prompt 段落全部塞進每次請求的上下文。這導致每次請求都要爲「可能用到的東西」買單,而實際只在當前輪次用到的只是其中很小一部分。dsh-capability-composer 把這些資源按「組合(composition)」組織,只讓當前組合進入模型可見範圍,從而在保持插件與技能仍在運行的前提下,縮小每次請求的系統提示體積。

這是什麼

dsh-capability-composer 是 DSH 1.5 專用的能力組合器插件,維護者爲 xiamubumu。它將插件與技能按組合管理,根據會話、工作區或全局三個層級解析組合,從而控制模型在系統提示中看到的「可用插件與 MCP 工具」和「可用技能」範圍。插件本身不停止運行,技能仍可手動調用,只改變可見性。

核心功能

1. 插件按需加載

默認只有 28 個官方核心工具 + 3 個元工具(search_plugins、load_plugin、invoke_tool)常駐。其餘工具不會出現在工具列表中,只在系統提示的「可用插件與 MCP 工具」目錄中顯示名稱,模型通過 invoke_tool 或 load_plugin 按需調用。

2. 技能影子化

不在當前技能組合中的技能會被註冊一個影子條目,包含 invocation.modelInvocable: false 和 rank: 0,使其不進入模型可見的技能目錄,但仍可手動通過 /skill-name 調用。

3. 組合解析三層級

組合按「最近優先」規則解析:

  • 會話級:僅當前會話生效
  • 工作區級:基於當前工作目錄(cwd)生效
  • 全局級:pinned[axis]['*'] 指定

空字符串、空數組、null 均視爲「未指定」,繼續向上繼承。單個層級可選擇多個條目,取並集。空列表不等於「選擇全部」,而是「不過濾」。

4. 系統提示段落裁剪

根據當前組合裁剪各插件的 system-prompt 段落,實測可節省約 2129 tokens/請求(包括 agent-teams:usage、plugin:dsh-docker、plugin:api-client 等)。裁剪失敗時採用「寧可多留」策略,避免誤刪。

5. UI 與即時生效

插件在 DSH 的「設置 → 插件」中新增兩個標籤頁:

  • Plugin compositions:控制插件組合
  • Skill compositions:控制技能組合

UI 操作防抖 400ms 後調用 POST /dsh-capability-composer/state,保存採用「按組合名稱逐項合併」而非整體覆蓋,避免跨位置創建的組合被誤刪。

安裝與啓用

僅支持 DSH 1.5(>=0.1.5-rc.2 <0.2.0)。

從 npm 安裝:

dsh plugin add npm:dsh-capability-composer

安裝後,在「設置 → 插件」中啓用該插件,即可在「Plugin compositions」與「Skill compositions」標籤頁中創建組合。

典型用法

示例:按工作區隔離插件與技能

  1. 在當前工作區創建一個「data-analysis」組合,只包含數據相關插件(如 dsh-docker、plugin:api-client)。
  2. 在同一工作區創建一個「web-dev」組合,只包含前端相關插件。
  3. 在不同會話中切換組合,模型只會看到當前組合內的插件與技能,減少無關上下文。

示例:手動調用非常駐工具

// 在系統提示中看到某工具名稱,但不在工具列表中
invoke_tool({
  tool: "mcp__vnpy__run_backtest",
  args: { ... }
})

需要整組插件時使用:

load_plugin({
  ids: ["mcp:vnpy"]
})

示例:關閉系統提示裁剪

通過環境變量關閉對插件 system-prompt 段落的裁剪:

export DSH_COMPOSER_PRUNE_PLUGIN_SECTIONS=0

適用場景與注意

  • 適合需要管理大量插件與技能、希望按會話/項目隔離可見範圍的使用者。
  • 插件以當前 DSH 進程權限運行,安裝前建議檢查源碼與許可證。
  • 不支持 DSH 1.5 以下版本,也不保證未來版本的兼容性。

短結尾

dsh-capability-composer 通過組合與按需可見性,幫助你在保持插件與技能運行的同時,顯著減少每次請求的系統提示體積。更多細節與配置項見目錄頁與 GitHub 倉庫。

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

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

小夜