用 dsh-plugin-manager 在设置面板里热管理 MCP 和 Skills

前言

DeepSeek Harness(命令名 dsh)把智能体运行时拆成插件:MCP 服务、Skill、内置包,都可以往当前 profile 里叠。用久了之后,常见情况是 ~/.dsh/profiles/web/cordis.patch.yml 越写越长,~/.dsh/skills/ 里也堆了不少目录。要临时关掉某个 MCP、删掉用不上的 Skill,往往得手改 YAML 或挪文件夹,再确认宿主有没有把改动吃进去。改错一行缩进,工具列表就不对;改对了,已打开的会话也不一定立刻刷新。

dsh-plugin-manager 把这件事收进 dsh web 的设置面板。打开「设置 → 插件管理」,用开关和删除按钮操作 MCP 与 Skills,写配置前自动备份,宿主走 HMR,不必重启 dsh web。本文按社区目录详情页、仓库 README、package.json / index.js 原文,以及 DeepSeek Harness 官方仓库 核对后整理。

社区插件目录 deepseek-harness-plugin.com 是独立站点,和 DeepSeek / 幻方没有官方从属关系,不能当成官方应用商店。GitHub 上还有若干同名或相近的「插件管理器」,能力边界不一样;下面只介绍目录页收录、由 liqichen 维护的这一份。

这是什么

dsh-plugin-manager 是一款开发与运行时类的 DSH 双端 Web 插件:浏览器半在设置面板注入「插件管理」页,Node 半把后端接口挂在 dsh web 宿主上。维护者是 liqichen,源码在 liqichen/dsh-plugin-manager,许可证 MIT,package.json 版本为 0.1.0。目录页记录主要语言为 JavaScript,dsh.client.platform 声明为 web。README 的平台徽章写的是 macOS | Linux。截至 2026-08-18,目录页与 GitHub 仓库均显示 10 星。

它解决的是「已经装进当前 web profile 的 MCP / Skill / 内置包,怎么用图形界面看清、开关、删掉」,而不是再做一个插件市场。三个标签页对应三类对象:

  • MCP 服务:读、改 ~/.dsh/profiles/web/cordis.patch.yml
  • Skills:浏览 ~/.dsh/skills/,删除时移入可恢复的 .trash-* 目录
  • 内置插件包:只读列出 ~/.dsh/profiles/node_modules/@deepseek-ai/ 下的包名、版本和说明

改动由宿主监听 patch 文件后热生效。官方仓库的口号是「Everything is a Plugin」;这个插件自己也是标准 DSH 插件,装回去管理 DSH 的配置。

核心功能

仓库 README 把能力写成一张表,和 index.js 里的实现一致。

MCP 开关与删除

每个 MCP 一张卡片,展示名称、传输方式(stdio / http 徽章)、运行状态和配置 id。页面顶部还有 patch 文件路径和条目总数。

  • 开关:禁用时在对应条目下写入 disabled: true,启用时删掉这一行。
  • 删除:从 cordis.patch.yml 去掉整段 MCP 配置,条目上方的注释行会保留。界面有二次确认。

两种写操作都会先把文件备份成 cordis.patch.yml.bak-<时间戳>,再改原文。README 写明:删除的是配置条目,不会卸载 npm 包;包还在,把条目加回去或从备份恢复即可。

Skills 浏览与回收站

Skills 页列出全部 skill 名称、SKILL.md 里的 description,以及目录路径。删除不是 rm -rf,而是把目录重命名为 ~/.dsh/skills/.trash-<时间戳>-<名称>。源码里对名称做了 ^[\w.\-]+$ 校验,并以 .trash- 前缀的目录不出现在列表中。要恢复,把对应 .trash-* 目录改回原名;要彻底删掉,需要自己处理回收站目录。

内置插件包只读浏览

第三页表格展示 DSH 本体插件包的名称、版本、说明。README 用「160+」描述规模,实际条数取决于本机 ~/.dsh/profiles/node_modules/@deepseek-ai/ 里有什么。这一页不能升级、不能卸载。仓库 FAQ 写明:升级本体请使用 npm update -g @deepseek-ai/dsh

内嵌后端,不另开端口

package.json 声明了 dsh.bundle.patch 和客户端注入(@deepseek-ai/dsh-client-runtimedsh-client-localedsh-client-ui-settings)。Node 半 inject: ["webServer"],在宿主上注册 /plugin-manager 前缀:

  • GET /plugin-manager/api/state:返回当前 MCP、Skills、内置包,以及 patch 文件、skills 目录路径
  • POST /plugin-manager/api/actionkindmcp-togglemcp-deleteskill-delete

浏览器同源 fetch,不额外占端口,也没有单独暴露的 CORS 服务。早期仓库里还有 legacy/server.py 独立网页版,那是插件机制不可用时的备用路径,和设置面板内嵌版不是同一条安装线。

安装与启用

目录页给出的安装命令如下,在 DeepSeek Harness 终端运行即可:

dsh plugin add github:liqichen/dsh-plugin-manager

dsh CLI 会从 GitHub 解析插件并装进当前配置。需要可复现安装时,按目录页说明固定 commit 哈希:

dsh plugin add github:liqichen/dsh-plugin-manager#commit

commit 换成仓库里实际的提交哈希。目录页同时提醒:插件以当前 dsh 进程的权限运行,安装时可能执行代码;装之前检查源码仓库和许可证。

README 还提供了一条「从本仓库安装」的本地路径,前提是已经装好 dsh web,并了解 ~/.dsh 目录:把 index.jsclient.jspackage.json 拷到 ~/.dsh/plugins/dsh-plugin-manager/,再执行 dsh plugin --profile web add ~/.dsh/plugins/dsh-plugin-manager,并在 web profile 的 package.jsoncordis.patch.yml 里声明依赖和插件 id。本地安装完成后需要重启一次 dsh web,之后打开「设置 → 插件管理」。若页面提示「插件后端未响应」,README 要求回头检查依赖声明、patch 里的插件条目,以及 ~/.dsh/profiles/node_modules/dsh-plugin-manager 是否指向插件目录。

典型用法

打开 DSH 设置 → 插件管理,按三个标签页操作。

临时关掉一个 MCP。 在「MCP 服务」里找到对应卡片,拨开关即可。配置写入后,页面会提示改动已热生效。已打开的会话仍持有旧工具列表,需要新开一个会话才会看到刷新后的 MCP。

删掉配置里的 MCP 条目。 点删除并确认。条目从 cordis.patch.yml 消失,但 npm 包还在。误删时用最近的 cordis.patch.yml.bak-* 覆盖回去,或把 YAML 片段手工贴回。

清掉用不上的 Skill。 在 Skills 页删除后,到 ~/.dsh/skills/ 下找 .trash-<时间戳>-<名称>,需要时再改回原名。

核对本机装了哪些 DSH 本体包。 打开「内置插件包」页查看名称和版本;这里只能看,不能点升级。

README 给出的动作请求形状如下,便于对照界面在做什么(一般不用自己 curl):

{ "kind": "mcp-toggle",  "id": "mcp-scrapling", "disable": true }
{ "kind": "mcp-delete",  "id": "mcp-scrapling" }
{ "kind": "skill-delete", "name": "obsidian-cli" }

成功时响应类似 { "ok": true, "message": "已禁用 mcp-scrapling(热生效)" }

适用场景与注意事项

比较适合已经在用 dsh web、MCP 和 Skill 数量开始变多、又不想每次都手改 YAML 的人。它默认只管理 web profile:MCP 路径写死为 ~/.dsh/profiles/web/cordis.patch.yml,Skills 路径为 ~/.dsh/skills/。其他 profile 要自己改路径,README 写明了这条边界。

使用前注意这几件事:

  1. 改的是真实配置。 开关和删除直接写磁盘。写前有 .bak-* 备份,出问题先找最近一份备份。
  2. 热生效有边界。 patch 文件的改动由宿主 HMR 应用,但当前会话的工具列表不会自动刷新,需要开新会话。
  3. 删除 MCP ≠ 卸载包;删除 Skill ≠ 彻底消失。 前者只去配置,后者进回收站。
  4. 不能从这里升级 DSH。 内置插件包页只读。
  5. 权限与来源。 插件跑在当前 dsh 进程里,能读你的 home 下 .dsh 目录并改配置。安装前看 源码 和 MIT 许可证,不要把目录页当成官方背书。
  6. 同名项目。 检索 dsh-plugin-manager 时会碰到其他维护者的仓库,有的管 Cordis 插件启停,有的做市场或扩展中心。装之前核对 owner 是否为 liqichen,安装命令是否为目录页原文。

小结

MCP 和 Skill 一多,瓶颈往往不在「会不会装」,而在「能不能看清、敢不敢改」。dsh-plugin-manager 把这三件事收进设置面板:MCP 可开关可删且热生效,Skill 进回收站可恢复,内置包只读可查,写配置前自动备份。它是社区 MIT 插件,不是 DeepSeek 官方组件;装之前核对仓库,固定 commit 更稳妥。

  • 目录页:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-plugin-manager/
  • GitHub:https://github.com/liqichen/dsh-plugin-manager
  • DeepSeek Harness:https://github.com/deepseek-ai/deepseek-harness
羽毛球分组比赛记分
小程序二维码

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

小夜