前言¶
用 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