前言¶
DeepSeek Harness (DSH) 是一个基于插件的智能体开发框架。在开发复杂工作流时,管理大量的 SKILL 和 MCP (Model Context Protocol) 服务器往往面临两个痛点:一是配置分散,难以在统一的界面中查看和管理;二是 MCP 服务器的工具定义会直接占用 Token 上下文,导致上下文膨胀或启动延迟。dsh-skill-mcp-manager 是一个宿主级插件,旨在解决上述问题,提供可视化的 SKILL 与 MCP 管理,并实现 MCP 的按需加载。
插件概览¶
- 名称:
dsh-skill-mcp-manager - 功能:One-stop SKILL & MCP manager — a host-level plugin for DeepSeek Harness with MCP on-demand loading.
- 所有者:
alone-tree - 许可证:MIT
- GitHub:https://github.com/alone-tree/dsh-skill-mcp-manager
- 版本:1.1.7
核心功能¶
1. One-stop 视觉管理¶
插件将 SKILL 和 MCP 的管理集成到 DSH 的设置页面中,无需层层深入配置文件。用户可以直接在界面中启用/禁用 SKILL 和 MCP,查看每个工具的描述,甚至直接打开 SKILL 的源码进行编辑。对于 MCP,可以独立控制单个工具的启用/禁用状态,被禁用的工具对 AI 不可见,且不影响同一服务器上的其他工具。
2. MCP 按需加载¶
这是插件的核心特性。在会话开始时,MCP 服务器仅暴露其 名称 + 简短工具描述,而不发送完整的工具 Schema。
* 平衡 Token 消耗与功能:避免发送冗长的 Schema 导致上下文膨胀,同时保留 AI 探索可用工具的能力。
* 无启动延迟:服务器仅在 AI 实际需要时才建立连接。
* 非致命错误:按需加载失败不会阻塞会话,允许后续重试或手动重载。
3. 每会话独立实例与热重载¶
- 独立实例:每个 DSH 会话(包括子代理)都会创建自己独立的 MCP 实例。这确保了并发会话之间不会互相干扰,特别是对于需要状态的工具(如 Playwright 浏览器实例)。
- 热重载:在当前会话中运行
/mcp_load命令即可重新连接 MCP 服务器并刷新工具列表,无需重启 DSH 或开启新会话,极大便利了本地开发调试。
4. SKILL 深度扫描与隐藏¶
- 深度扫描:插件会递归扫描目录中的
<dir>/SKILL.md文件,支持连接任意深度的外部技能库目录。 - 临时隐藏:隐藏 SKILL 会在配置中写入
disable-model-invocation,使其对模型不可见,但保留/name等命令接口,方便开发者调试或临时屏蔽特定技能。
安装与启用¶
安装¶
使用官方 CLI 安装插件到指定 Profile:
dsh plugin --profile <profile> add dsh-skill-mcp-manager
配置¶
安装后,需要在 Profile 的 cordis.patch.yml 中添加配置条目。示例配置如下:
- insert:
- id: skill-mcp-manager
name: 'dsh-skill-mcp-manager'
config:
dataDir: '' # 空字符串则使用默认路径 ~/.dsh/skill-mcp-manager
profile: web # 指定要管理的 Profile 名称
trialTimeoutMs: 30000
toolCallTimeoutMs: 60000
catalogDescriptionMaxLength: 500
toolDescriptionMaxLength: 150 # 目录中工具描述的截断长度(可调整)
importNativeMcp: true # 启动时自动接管原生 dsh-mcp-client 配置
配置完成后重启 Profile。插件运行在宿主层,因此 mcp_register、mcp_load 等工具对所有会话可见。
使用方法¶
UI 管理界面¶
打开 Settings → Capability:
* SKILL 标签页:显示所有管理的 SKILL(按路径排序)。支持切换模型可见性、在编辑器中打开、跨平台删除。系统内置的 SKILL(位于 node_modules 或 app.asar)为只读。
* MCP 标签页:显示已注册的服务器,包含 Tier 标记和工具计数。支持切换 Tier、查看详细配置(命令、环境变量、头部信息)、启用/禁用单个工具、查看或隐藏密钥、刷新快照。
模型工具接口¶
插件为模型提供了三个管理工具。
1. mcp_register¶
添加或修改 MCP 配置。该工具会先进行试连接(Trial-connect)并列举工具,只有配置正确才会持久化。
mcp_register { name, tier?, transport, command?, args?, env?, cwd?, url?, headers?, notes? }
tier:eager|on-demand|disabled(默认on-demand)。notes:用户备注,不会被服务器更新覆盖。
2. mcp_load¶
在当前会话中加载或热重载指定的 MCP 服务器实例。
/mcp_load { name, peek? }
- 不带
peek时:连接服务器,获取完整工具定义并刷新会话快照。 - 带
peek: true时:仅读取快照,不进行实际连接,适合在不改变连接状态的情况下查看描述。
3. /mcp prepare-uninstall¶
在卸载插件前执行此命令。它将所有由插件接管并标记为禁用的 MCP 配置重新启用,并将其完整配置交还给原生 dsh-mcp-client。这确保了移除插件后不会丢失 MCP 配置。
设计与注意事项¶
- Profile 范围:插件仅管理其安装所在的 Profile,不会越权管理其他配置。
- 原生配置接管:安装时,插件会将 Profile 中的原生
dsh-mcp-client行导入到能力库中,并在原生层默认禁用。卸载前务必执行/mcp prepare-uninstall。 - 安全性:插件以宿主进程权限运行,请确保安装来源可信(GitHub 链接:https://github.com/alone-tree/dsh-skill-mcp-manager)。
- Token 节省:由于 MCP 仅在 AI 需要时加载且默认不暴露完整 Schema,建议根据实际需求调整
toolDescriptionMaxLength以平衡功能可见性与上下文占用。
结语¶
dsh-skill-mcp-manager 通过按需加载和会话隔离机制,帮助开发者在不牺牲功能完整性的前提下,有效控制 DSH 的上下文成本和启动开销。对于需要频繁开发调试 MCP 服务的场景,其热重载功能尤为实用。