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 仓库。

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

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

小夜