dsh-cap-manager
一个面板统一管理全局 / Profile / 项目三个作用域的 MCP 服务与技能:实时状态与工具数、导入导出、回收站与备份,并可安装/更新/卸载 Anthropic 官方 claude-plugins-official 市场的 Claude Code 插件。
安装
dsh plugin --profile web add dsh-cap-manager
沙箱测试
这个插件还没测过。提交测试 →
README
<div align="center">
dsh-cap-manager
**在 DeepSeek Harness Web UI 中
一个面板统一管理 MCP 服务、技能与 Claude Code 插件。**

[English](./README.md) | 简体中文
</div>
一款 DeepSeek Harness(dsh)插件:在
Web UI 侧边栏增加 MCP 与技能 面板:
- 🔌 MCP 服务 —— 按全局 / Profile / 项目三作用域分组的卡片,实时显示连接状态
与工具数。新增、编辑、开关、删除即时生效;支持从 Claude / Cursor / Cline / Roo /
VS Code 导入 mcpServers JSON,也支持导出。
- 🧠 技能 —— 项目与用户全部可写技能根汇成一份可搜索列表。就地编辑、导入
.zip 压缩包或 URL、一键导出、回收站恢复、.cap-bak 备份历史。
- 🧩 Claude Code 插件 —— 在 dsh 里浏览 Anthropic 官方
claude-plugins-official
市场(315+ 个插件):安装、更新、卸载、开关。插件技能经原生 skill provider 实时
供给;manifest 里的 mcpServers 挂载为实时 MCP 连接。
完整设计与兼容性说明见 [DESIGN.md](./DESIGN.md)。当前版本:v1.2.0
(MCP 页新增只读的 Claude Code 插件服务分组)。
🖼️ 截图
面板以 MCP 与技能 出现在侧边栏。下图是 MCP 页 —— 项目 / 全局 / Profile 三个
作用域分组,每张卡片带实时状态、工具数与启停开关(已停用的行保留配置但不挂载)。
<div align="center">
<img src="docs/images/mcp-light.png" alt="MCP 页 —— 项目 / 全局 / Profile 作用域分组卡片,实时连接状态与工具数" width="880">
</div>
<table>
<tr>
<td width="50%"><img src="docs/images/skills-light.png" alt="技能页 —— 项目、全局与只读插件技能分组"></td>
<td width="50%"><img src="docs/images/plugins-light.png" alt="插件页 —— 已安装插件卡片与官方 claude-plugins-official 市场网格"></td>
</tr>
<tr>
<td align="center"><sub>技能页 —— 项目 / 全局分组 + 只读插件提供分组</sub></td>
<td align="center"><sub>插件页 —— 已安装卡片 + 官方市场(315+)</sub></td>
</tr>
</table>
<div align="center">
<img src="docs/images/mcp-dark.png" alt="MCP 页深色模式" width="880">
<p><sub>深色模式自动跟随宿主主题</sub></p>
</div>
📦 安装
前置:DeepSeek Harness ≥
0.2.1-rc.2(全局安装 dsh,或全部通过 npx -y @deepseek-ai/dsh 运行)。
免编译 —— 从 npm 安装:
dsh plugin --profile web add dsh-cap-manager
若 pnpm 的发布冷却期拒绝解析刚发的版本,可显式固定版本:
dsh plugin --profile web add dsh-cap-manager@1.2.0。
或安装 Release tarball(效果相同,不依赖 npm):
# 浏览器 Web UI dsh plugin --profile web add https://github.com/easun-zhu/dsh-cap-manager/releases/download/v1.2.0/dsh-cap-manager-1.2.0.tgz # 桌面客户端 dsh plugin --profile desktop add https://github.com/easun-zhu/dsh-cap-manager/releases/download/v1.2.0/dsh-cap-manager-1.2.0.tgz
web / desktop 换成你自己的 profile 名即可;重启 dsh,然后在左侧边栏打开
MCP 与技能。(github: git 简写等于从源码装 —— 仓库不含编译产物 lib/,
优先用 npm 或 tarball。)
从本地目录安装:
pnpm install && pnpm build # 产出 lib/index.js + lib/client.js dsh plugin --profile web add /absolute/path/to/dsh-cap-manager dsh --profile web # 重启以加载插件
可选:通过插件市场安装
把下面这个已托管的索引 URL 添加到 dsh 的发现页(或 plugin-market 的 indexes
配置),即可一键安装:
https://easun-zhu.github.io/dsh-cap-manager/market/index.json
索引声明了 engines.dsh >= 0.2.1-rc.2,安装源为 npm。自托管:把
[market/index.json](./market/index.json) 复制到任意 http(s) 位置即可。可随时用上游
校验器验证:
node --experimental-strip-types test/m5-smoke.ts # 含 market/index.json 校验
🔌 MCP 服务
每个项目可携带 .dsh/mcp.yml(手改或面板管理):
mcpServers:
projmini:
enabled: true # false = 保留配置,不挂载
transport: stdio
command: node
args: [./scripts/mcp.mjs]
env:
TOKEN: !!js process.env.MY_TOKEN # 挂载期求值
- 文件是唯一事实源:项目存在活动会话(或被面板项目选择器选中)时,其 enabled 的
服务被挂载;外部修改即时生效(watcher + 差异挂载)。
serverName跨所有层唯一 —— 冲突在挂载前即被拒绝。- URL 导入(⇩):按 URL 直接抓取
mcpServersJSON 文档或技能.zip。抓取由
浏览器执行,目标需发送 CORS 头(GitHub raw 与多数静态托管都支持);载荷随后进入
与粘贴文本 / 本地文件完全相同的预览 / 解包管线。
- 新增表单内置模板下拉(filesystem、memory、sequential-thinking、fetch、github、
puppeteer),一键填充起步配置。
🔁 导入与导出
- 导入(MCP 页 → ⇩):粘贴、选文件或 URL 抓取
mcpServersJSON —— 容忍 VS Code
的 JSONC 方言(注释、尾逗号),sse 条目映射为 streamable-http 并警告,非法键
自动 slug 化并标记。${VAR} / ${env:VAR} 引用转为 !!js process.env.VAR 表达式
(嵌入时为反引号模板);VS Code 的 ${input:…} 占位渲染凭据表单,应用时替换。
预览列出每条转换、改名与失败;应用复用常规写入路径(共享校验、HMR 实时生效)。
- 导出(MCP 页 → ⇧):全部受管行 + 选中项目文件合并为标准
{"mcpServers": …} 文档;!!js 表达式还原为 ${VAR}。已停用行跳过(标准格式无
停用位)。密钥以明文导出 —— UI 明示。
- 技能导入(技能页 → ⇩):
.zip(允许多一层包装目录 —— 按SKILL.md位置识别
技能根)、文件夹、散 .md 或 zip URL;上限 10 MB / 200 文件,拒绝 zip-slip 路径,
丢弃 macOS 垃圾文件。文件逐字节原样落盘;同名默认跳过,勾选覆盖才替换。
- 技能导出(卡片上的 ⇧):目录技能下载为
.zip(含资源),文件技能为.md。 - 回收站与备份(♻):已删技能列出原路径并可一键恢复;受管文件旁的每份
.cap-bak-*(patch、项目 mcp.yml、SKILL.md —— 每文件保留 5 份)可恢复到目标
或删除。
🧠 技能
技能页扫描四个可写根(<project>/.dsh/skills、<project>/.agents/skills、
~/.dsh/skills、~/.agents/skills),按 provider 自身规则处理,同名冲突按 rank
顺序裁决(项目胜过用户);被遮蔽条目与无法解析的文件以角标显式呈现而不是消失。
编辑原子写 SKILL.md(保留未知 frontmatter 键与注释,开关统一为 true/false);删除
把目录移入 ~/.dsh/cap-manager/trash/(trash-meta.json 记录来源),同名遮蔽浮出时
给出警告。
🧩 Claude Code 插件
面板第三个 tab 管理来自 Anthropic 官方 claude-plugins-official 市场的 Claude Code
插件 —— 唯一内置源。
市场 · 315+ 个插件,宿主 10 分钟缓存,刷新按钮强制重拉,支持搜索
安装 · 下载 pin 住的 GitHub tarball(codeload),严格 tar 解包器落盘(逃逸路径拒绝、符号链接跳过),存入 ~/.dsh/cap-manager/plugins/store/<名称>/<版本>/
技能 · 插件的 skills/*/SKILL.md 经 ctx.skills provider 实时供给 —— 启用即出现在技能页的只读插件组(rank 排在你自己的技能之后,同名时用户技能优先)
MCP 服务 · manifest 声明的 mcpServers 挂载为实时连接 —— 与项目级服务同一套转换与 diff/挂载纪律,含跨层 serverName 预检;同时出现在 MCP 服务页的只读「Claude Code 插件」分组(实时状态、工具数、来源插件),随插件开关启停
开关 · 技能 + MCP 一起即时启停
精确更新 · 点「刷新市场」顺带取 marketplace 仓库的 HEAD commit sha,每个已装插件(外部 git 源比对条目 sha,仓库内源比对 HEAD sha)都得到精确的"有更新"判定;sha-pin 源显示更新角标。点「更新」先下载并逐字节内容比对:相同只采纳新 pin 不重装,不同才重装
卸载 · 卸挂载、删 store 目录、清登记(registry.json 原子写 + .cap-bak 历史)
超时 · 所有网络调用限时(索引 20 s / tarball 120 s);刷新失败自动回退缓存
dsh 没有对应机制的内容(commands/、agents/、hooks/)保留在磁盘,并在已安装
卡片上如实标注"未接入"。
🛠️ 开发
pnpm typecheck—— 对src/跑 tsc- `
…(truncated)
以上内容来自 npm 上的 README,我们只做格式化,不改内容。
版本
npm 上共发布:3,最后更新 2026-11-02