dsh-workspace-capabilities:按工作区限定技能与 MCP

前言

在 DeepSeek Harness(DSH)里,技能和 MCP 服务器往往是全局可见的:同一套工具目录会跟着会话走,上下文里也会带上各 MCP 的说明。多项目、多工作区并行时,很容易出现「这个仓库根本不需要 GitHub MCP,却仍在工具列表里占位」的情况;有些场景则希望某个工作区只暴露少量技能,减少误用或上下文膨胀。

DSH 社区插件 dsh-workspace-capabilities(维护者 Fleey,分类 admin-security)做的是一件事:在侧栏每个工作区行的「…」菜单里增加 技能与 MCP,用勾选方式决定该工作区路径下会话能用哪些技能和 MCP 服务器。取消勾选项从下一轮对话起生效,无需重启 DSH。

这是什么

dsh-workspace-capabilities 是 DeepSeek Harness 插件,简介为:按工作区选择可用的技能(skill)和 MCP 服务器。配置按工作区路径持久化,默认全部启用,保存的是禁用列表,因此之后新装的技能、新加的 MCP 默认可用。

社区目录站点与 DeepSeek / 幻方无官方从属关系;安装前建议自行查看源码与许可证。插件在 DSH 进程权限下运行。

核心功能

界面入口

在工作区侧栏某一行的「…」菜单中,除重命名、删除外,会出现 技能与 MCP。点击后弹出对话框,列出当前工作区路径下发现的技能与已连接的 MCP 服务器,勾选表示允许使用,取消勾选表示对该工作区禁用。

技能

  • 取消勾选的技能会从该工作区会话的技能目录中消失。
  • skill 工具与 /技能名 无法再加载被禁用的技能。
  • 列表按当前工作区路径发现;只在其他 agent preset 中挂载的技能可能不显示。
  • 插件只能隐藏技能,不能启用在来源处已停用的技能。例如在 dsh-skills-manager 中停用的技能仍会出现在列表里,但会标为「来源已停用」且无法勾选,需先在技能管理器中重新启用。

MCP

  • 取消勾选的 MCP 服务器,其全部 mcp__<服务器>__* 工具对该工作区的会话(含子代理)隐藏。
  • 服务器本身保持连接,其他工作区不受影响。
  • 被禁用的 MCP 若仍返回服务器指令(instructions),该文本仍可能出现在系统提示词中;只是对应工具不可用。

持久化格式

选择保存在 $DSH_HOME/workspace-capabilities.json,默认路径为 ~/.dsh/workspace-capabilities.json:

{
  "version": 1,
  "workspaces": {
    "/path/to/project": {
      "disabledSkills": ["some-skill"],
      "disabledMcpServers": ["github"]
    }
  }
}

Host 提供接口 GET /dsh-workspace-capabilities/state?workspaceId= 与 POST /dsh-workspace-capabilities/save,走 Host 自有请求鉴权。

安装与启用

安装命令须使用 README 原文,不要自行拼接通用 dsh plugin add。

DSH NEXT 桌面版

先完全退出 DSH NEXT,再执行(路径以 macOS 应用包为例,与 README 一致):

ELECTRON_RUN_AS_NODE=1 DSH_HOME="$HOME/.dsh" "/Applications/DSH NEXT.app/Contents/MacOS/DSH NEXT" --expose-internals "/Applications/DSH NEXT.app/Contents/Resources/app/lib/plugin-cli.js" desktop add github:Fleey/dsh-workspace-capabilities

重新打开 DSH NEXT。卸载时将 add github:Fleey/dsh-workspace-capabilities 换成 remove dsh-workspace-capabilities。本地开发可改用 add link:/path/to/clone。

命令行版(Web profile)

dsh plugin --profile web add github:Fleey/dsh-workspace-capabilities

典型用法

  1. 安装插件并重新打开 DSH(桌面版)或确保 Web profile 已加载插件。
  2. 在侧栏选中目标项目对应的工作区行,点击「…」→ 技能与 MCP。
  3. 取消不需要的技能或 MCP(例如仅文档仓库禁用 GitHub MCP),确认保存。
  4. 新开一轮对话或继续对话:从下一轮起,禁用项不再出现在工具与技能目录中。

README 中说明:在工作区内单独设置 skill 与 MCP,可用于规避工具上下文占用或其他特需场景。

适用场景与注意

适合谁

  • 同一 DSH 实例管理多个仓库,希望按项目收紧工具面。
  • 需要减少 MCP 工具数量、降低上下文占用,但不想全局卸载 MCP 服务器。
  • 与安全、治理相关的 admin-security 类需求:按工作区最小暴露技能与 MCP。

实现与升级风险

  • 依赖 DSH 0.2 内部结构(侧栏菜单 DOM、技能注册表 collectFresh)。DSH 大版本升级后,菜单项可能不出现或技能过滤失效(日志会有警告);MCP 过滤走的是公开 API agent.ctx.tools.restrict({ deny })。
  • 侧栏「…」菜单在 Host 侧无扩展 slot,浏览器端通过 DOM 注入实现(见仓库 lib/client.js)。

测试

仓库内可运行:

npm test

结尾

dsh-workspace-capabilities 把「全局技能 + 全局 MCP」收成「按工作区路径的可选子集」,默认全开、只记禁用,对新装技能和新 MCP 友好。若你已在用 DSH 多工作区开发,可从侧栏「技能与 MCP」试一轮,再对照 ~/.dsh/workspace-capabilities.json 是否符合预期。

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

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

Xiaoye