dsh-capability-gateway:按需暴露 Skills 与 MCP 的统一网关

前言

在 DeepSeek Harness(DSH)里接足够多的 MCP 服务或 Skills 之后,常见两类问题:模型可见的工具目录不断膨胀,挤占真正任务相关的上下文;同时所有能力在提示里「平铺」展示,模型反而更容易选错工具。传统做法是尽量精简安装列表,或手动关掉部分暴露——但能力本身仍可能需要,只是不应常驻在模型面前。

下面介绍社区插件 dsh-capability-gateway(维护者 xiaomao361,分类:联网工具)。它把用户勾选纳入管理的 Skills 与 MCP 工具从模型默认目录里收起来,改由单一工具 capability 按意图搜索、读 schema 或说明后再调用。插件同时提供 Host 与 Client 能力;不代理远程流量、不额外架设服务端、也不把数据发往外部。

这是什么

dsh-capability-gateway 的定位是:在 DSH 中,对已 opt-in 的第三方 Skills 与 MCP 工具提供按需网关(README 英文摘要:One on-demand gateway for opt-in third-party skills and MCP tools in DeepSeek Harness)。当前 package 版本为 0.6.0,许可证 MIT,依赖 DSH 引擎 0.2.1-rc.5。

与「全部工具长期挂在 system prompt」相比,网关侧的变化包括:受管的 Skills 离开模型面向的 skill 目录(仍可由用户触发,经 capability 加载);受管 MCP 保留原生执行链与权限校验,但工具 schema 不再直接进入提示;模型侧主要只看到一个 capability 工具,另在 system prompt 中加入有上限的能力名称索引(仅名字,无描述与 schema)。

核心功能

暴露模型与 PTC 行为

  • Managed skills:从模型可见 skill 目录移除,经 capability 的 load 等动作按需加载说明与目录。
  • Managed MCP:mcp__<server>__* 类工具 schema 从提示中移除;call 仍走原生权限与 guard 链。
  • PTC mode:保留 run_code 与 capability SDK 绑定;受管 MCP 声明省略,搜索/描述后再经 tools.capability 调用。
  • promptIndex / promptHint:可配置是否在提示中加入能力名索引与「能力在 capability 之后」的指引;索引字符上限默认 2000(配置范围 200–6000)。

capability 工具动作

Action 用途
search 按目标、短关键词或名称找候选
load 返回某 skill 的说明与 base 目录
describe 返回单个 MCP 工具的 JSON Schema
call 调用 MCP 工具;先按 schema 校验参数
status 网关是否启用及管理范围概况
inventory 紧凑统计、根目录、覆盖与异常摘要
history / stats 当前会话路由元数据与窗口统计
report 导出周报 Markdown

搜索策略偏保守:无匹配时返回 not_found 并指向原生路径,网关不会自行调用上游工具。

别名与中文检索

中英文描述词面不一致时,可通过配置别名缩小 gap,例如:

skillKeywords:
  release-notes: [发布说明, 变更记录]

或通过 keywordPacks 引用 JSON 包;Skill 也可在 SKILL.md 中用 keywords: 声明别名。无效 pack 不阻断启动,状态与设置页会标出覆盖不完整项。

本地日志与隐私

本地 journal 记录搜索与调用的元数据(动作、目标名、路由、结果、错误码、耗时、候选名与排名、插件版本等),不记录查询原文、工具参数、结果正文或错误体。默认目录为 $DSH_HOME/data/capability-gateway(配置键 logDir)。设置页可查看用量统计与运行时记录,并导出报告。

安装与启用

在 DSH profile 目录下安装包并注册 bundle(命令与片段来自官方 README):

# from your DSH profile directory
pnpm add link:/path/to/dsh-capability-gateway   # or: pnpm add dsh-capability-gateway

在 ~/.dsh/profiles/<profile>/package.json 中注册,使插件层生效:

{
  "dependencies": { "dsh-capability-gateway": "link:/path/to/dsh-capability-gateway" },
  "dsh": { "profile": { "bundles": [
    "@deepseek-ai/dsh-base", "@deepseek-ai/dsh-web-app", "dsh-capability-gateway"
  ] } }
}

安装后打开 Settings → Built-in plugins → Capability gateway → 配置,选择 MCP 服务与 skill 目录,核对增删后保存;Host 会持久化并重载配置。

也可手动 patch(注意:id 为 capability-gateway 的 patch 会整体替换 config,需重复写出所有需要的键):

# ~/.dsh/profiles/<profile>/cordis.patch.yml
- id: capability-gateway
  config:
    skillRoots:
      - '~/.agents/skills'
    mcpServers:
      - my-mcp-server

包默认不管理任何 skill/MCP,范围由安装后的配置决定。重载插件或重启 DSH 后,设置页路径为 Settings → Built-in plugins → Capability gateway。

主要配置项

Key 默认 含义
enabled true false 时插件不生效,恢复原生暴露
skillRoots [] 由网关提供服务的 skill 目录
mcpServers [] 受管 MCP 服务名
wrapSkills / wrapMcp true 分别开关 skill / MCP 包装
mcpKeywords / skillKeywords {} 别名映射
keywordPacks [] 按序合并的 JSON 别名包
promptHint / promptIndex true 提示指引与名称索引
promptIndexChars 2000 索引字符上限
maxResults 5 搜索返回候选数(1–10)
logDir $DSH_HOME/data/capability-gateway 日志目录

设置页还提供范围选择、Search lab(与模型同一套排序逻辑,不执行 MCP、不写 journal)、效果与诊断等 workflow;并发编辑会被拒绝,保存失败时应先确认当前生效范围再重试。

典型用法

模型或开发者侧的可复现路径可以概括为:

  1. 在配置中把需要的 skillRoots 与 mcpServers 纳入管理并重载。
  2. 用 capability 的 search 按任务意图或名称找候选(设置页 Search lab 可先行验证排序与匹配原因)。
  3. 对 skill 使用 load 拉取说明;对 MCP 先用 describe 看 schema,再 call 传参。
  4. 需要排查时用 status、inventory;需要会话级统计时用 history / stats;需要汇总导出时用 report。

示例别名配置见上文 YAML;完整动作表见 README 中 The capability tool 一节。

适用场景与注意

适合:已安装较多 MCP 与 Skills、希望压缩模型侧工具定义体积,又希望保留按需调用能力的使用者;需要在中文 query 与英文 skill 描述之间建立别名映射的团队。

注意:

  • 插件在当前 DSH 进程权限下运行,安装前应自行审阅 GitHub 源码 与 MIT 许可证;社区目录 SkillHub 插件页 与 DeepSeek / 幻方无官方从属关系,并非官方应用商店。
  • 未纳入 skillRoots / mcpServers 的能力仍走 DSH 原生暴露路径;网关关闭(enabled: false)时行为与未安装包装时一致。
  • 受管 MCP 的执行仍受 DSH 原生权限链约束;网关只改变「如何进入模型上下文」,不替代安全策略。

结尾

dsh-capability-gateway 用单一 capability 入口把 opt-in 的 Skills 与 MCP 从常驻工具目录改为按需发现与调用,并辅以名称索引、别名与本地元数据日志,缓解工具目录膨胀与误选问题。进一步了解与 issue 反馈见 GitHub;浏览社区条目见 SkillHub 目录页。

  • 目录页:https://www.skillhub.cn/plugins/xiaomao361/dsh-capability-gateway
  • GitHub:https://github.com/xiaomao361/dsh-capability-gateway
羽毛球分组比赛记分
小程序二维码

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

Xiaoye