dsh-plugin-capabilities:把技能与 MCP 服务器管理搬进 dsh 设置页

前言

用 dsh 做开发时,技能和 MCP 服务器的配置大多落在文件里:技能是各个 SKILL.md,MCP 服务器写在 profile patch 或全局补丁的 YAML 行中。想临时停用一个技能、改一条服务器参数,就得离开界面去手工编辑;如果同时还用 Claude Code 或 Codex,同一批技能和 MCP 配置还要再维护一份。dsh-plugin-capabilities 解决的就是这两个问题:在 dsh 设置页里管理技能与 MCP 服务器,并支持从其他 agent 一键导入。下面按功能、安装、典型用法的顺序介绍。

这是什么

dsh-plugin-capabilities 是 qinyre 维护的 dsh 插件,MIT 许可,package.json 中版本号为 0.3.10。它在设置页新增一级分区「技能与 MCP」(与「通用设置」「模型」并列),内含「技能」「MCP」「市场」三个标签页,dsh web 与 DSH Desktop 均可使用。

核心功能

技能:目录、编辑与加载开关

「技能」标签页列出 dsh 当前发现的全部技能,包括名称、描述、来源与调用策略。用户级技能存放在 $DSH_HOME/skills,可以在页面里新建、编辑、删除;0.3.4 起,从市场或本地仓库安装的技能也能就地编辑。

每张技能卡片上的开关控制该技能是否加载:关闭时,插件在这个技能的 SKILL.md frontmatter 里写入:

disable-model-invocation: true
user-invocable: false

文件其余内容不动;重新打开则恢复默认策略。项目目录和内置包等来源的技能以只读方式展示,运行时注册、没有文件的技能没有开关。

从 Claude Code 与 Codex 同步技能

如果机器上存在 ~/.claude/skills 与 ~/.codex/skills,它们会作为额外的扫描根自动进入技能目录。文件不会被复制,改动留在原地,两边实时同步。

技能仓库:本地目录与 GitHub

技能仓库支持两类来源:

  • 本地目录:直接扫描;
  • GitHub 仓库:地址支持 https://github.com/owner/repo 与 owner/repo,可用 #分支 或 /tree/分支 锁定版本,经 GitHub tarball 接口下载解包,机器上不需要安装 git。

仓库记录持久化在 $DSH_HOME/dsh-plugin-capabilities/state.json,随时可以备份或手工修正。

自带的两条只读技能

插件自带两条只读技能,随插件装卸,不向 DSH_HOME 写入文件:

  • skill-creator:来自 anthropics/skills,Apache-2.0;
  • find-skills:来自 vercel-labs/skills,MIT。

MCP:两层服务器行的管理

「MCP」标签页管理两层中的 MCP 服务器行:当前 profile 的 patch,以及全局补丁 DSH_HOME/cordis.patch.yml,支持 stdio 与 streamable-http 两种传输。每行带两个动作:

  • 「检查」:不启动服务器——stdio 行在 PATH 里确认命令是否存在,http 行发一个短超时的 GET;
  • 「复制到另一层」:把整行配置搬去另一层,不必删掉重配。

从其他 agent 导入 MCP 配置

支持从 Claude Code、Codex、Cursor、Gemini CLI 一键扫描导入 MCP 配置;也可以把 JSON(mcpServers 形状)粘进输入框,点「解析并填充」。两个注意点:

  • Gemini 的 SSE 条目不支持,dsh 的客户端不认这种传输;
  • Claude 配置里的 ${VAR} 环境变量引用按字面值导入,导入后需要手动改回。

市场

「市场」标签页分技能市场与 MCP 市场两部分,条目均可一键安装/添加;0.3.0 起点开条目可看详情;已安装的条目可以直接卸载。

变更生效:页面内重启

MCP 行的变更需要重启 dsh 才会进入组合,MCP 页头部为此提供了常驻的「重启」按钮:在 DSH Desktop 中重启 sidecar 后自动刷新;直接运行 dsh web 时,插件会拉起一个替代进程再退出自身,页面恢复后自动刷新。重启会中断正在进行的回合,点击后会先弹确认。

安装与启用

DSH 的理念是「一切皆插件」,这个插件本身也通过 dsh 的插件机制安装:

dsh plugin --profile web add dsh-plugin-capabilities

安装后打开设置,即可在一级导航里看到「技能与 MCP」分区。开发时也可以直接安装本地源码检出:

dsh plugin --profile web add file:/path/to/dsh-plugin-capabilities

包内的 prepare 脚本会自动构建出 lib/。

典型用法

从 Claude Code 等工具迁移 MCP 服务器

1、打开设置,进入「技能与 MCP」的「MCP」标签页;
2、发起一键扫描导入,来源覆盖 Claude Code、Codex、Cursor、Gemini CLI;或者把含 mcpServers 的 JSON 粘进输入框,点「解析并填充」;
3、检查导入结果:Claude 配置里的 ${VAR} 引用需手动改回,Gemini 的 SSE 条目不支持;
4、点页面头部的「重启」按钮,等页面自动刷新后生效。

从 GitHub 添加技能仓库

1、在技能页添加 GitHub 仓库,地址写 https://github.com/owner/repo 或 owner/repo,需要锁版本时加 #分支 或使用 /tree/分支;
2、插件经 GitHub tarball 接口下载并解包,机器上不需要安装 git;
3、仓库里的技能进入技能目录,仓库记录持久化在 $DSH_HOME/dsh-plugin-capabilities/state.json。

临时停用一个技能

在技能页找到目标卡片,把开关拨到关闭即可,文件其余内容一字不动;需要时再打开,恢复默认策略。

安全与实现要点

  • 写操作设有同源(CSRF)栅栏与输入校验;
  • GitHub 仓库的下载解包由插件内置的纯 JS tar 读取器完成,sidecar 全程不 spawn 任何子进程。

开发与测试

npm install
npm run typecheck
npm test
npm run build

端到端 smoke 默认关闭,要求同级目录存在 deepseek-harness 源码检出,且 Node ≥ 22.19:

DSH_DESKTOP_PLUGIN_SMOKE=1 npm test

适用场景与注意

适合两类使用者:一是主要通过 dsh web 或 DSH Desktop 操作 dsh、希望在界面里维护技能与 MCP 配置的人;二是同时使用 Claude Code、Codex、Cursor、Gemini CLI,想把既有技能与 MCP 配置收拢到 dsh 的人。

安装前请注意:插件以当前 dsh 进程的权限运行,可以读写 $DSH_HOME 与技能文件,建议先检查源码与许可证(本项目为 MIT)。另外几点:MCP 行的变更需要重启 dsh 才生效,重启会中断正在进行的回合;项目目录与内置包来源的技能只读展示,运行时注册、没有文件的技能没有开关。

结尾

经过上面的步骤,原本散落在各个文件里的技能与 MCP 配置可以收进 dsh 设置页统一维护,从其他 agent 迁移的成本也降到了几次扫描和确认。插件目录页(社区维护的插件目录,与 DeepSeek 无官方从属关系)与 GitHub 仓库如下:

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

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

小夜