← Back to home@jidekaixin2dian

dsh-toolgate

Manage MCP servers and skills in DeepSeek Harness, and control which tools enter the next prompt.

Stars
0
Language
JavaScript
Created
Oct 18, 2026
Updated
Oct 20, 2026

Introduction

工具闸门

管理 MCP 服务器与 Skill,决定下一轮 prompt 带哪些工具。

English

每个 MCP 工具都会带完整 JSON Schema 进入请求。服务器一多,schema 会比对话更占地方。

工具 schema 数量示意

这个插件把配置和暴露分开。配置负责服务器和 Skill,暴露负责这一轮到底带哪些 schema。

安装

dsh plugin --profile <profile> add github:jidekaixin2dian/dsh-toolgate

桌面端由应用管理 profile 时,请在插件管理器里安装。安装或更新 host 半后,退出并重新打开 DSH;桌面端没有浏览器式 Ctrl+R 硬刷新。

使用

打开 设置 -> 工具闸门。

预算 按 MCP 服务器分组,隐藏这一轮不需要的整组 schema,随时恢复。MCP 进程继续运行。全部显示、关闭全部 MCP、关闭最大组、精简模式都在这一页。

MCP 服务器 新增、编辑、删除、启停,写 profile 或 global 的 cordis.patch.yml,HMR 生效。stdio 用 command/args/env,streamable-http 用 url/headers。

Skills 搜索、新建、删除、单 Skill 启停。新建可写用户或项目目录,删除移到 .trash。

模型工具:

toolgate action=status
toolgate action=session disabled=["mcp:github", "skills"]
toolgate action=reset

mcp 是全部 MCP 的通配,mcp:<server> 只针对一台服务器。设置页的全局预算作用于所有会话和子代理,action=session 只覆盖当前会话。

原理

预算部分在 agent/pre-step 里调用 ctx.tools.restrict({ deny }),工具 schema 在 prompt 组装前被移除。MCP 部分按行编辑 cordis.patch.yml,保留无关行和注释,由 HMR 应用。Skill 部分用 rank-0 override provider 把停用项设为 modelInvocable:false。

token 数按序列化 schema 和 Skill 描述估算,不是模型分词器的精确值。

边界

  • 动态 MCP 管理器把工具注册在 agent 作用域时,ctx.tools.restrict 隐藏不了,请用对应管理器的 unload。
  • MCP CRUD 会写 cordis.patch.yml;手工改过该文件时,保存前先看 diff。
  • Skill 的 ZIP 或文件夹导入暂未实现;只在 scoped provider 出现的 Skill 可能无法隐藏。
  • host 半和 client 半更新都需要重开 DSH。

开发

npm test

17 个单元测试覆盖分组规则、MCP 行编辑、HTTP 契约和 Skill 文件操作。

GitHub · Releases · MIT