前言¶
在 DeepSeek Harness(DSH)里跑智能体,MCP 服务、Skills 和内置插件包会随使用不断增减。常见做法是直接编辑 ~/.dsh/profiles/web/cordis.patch.yml,或在文件系统里手动挪动 ~/.dsh/skills/ 下的目录。配置项一多,开关某个 MCP、确认传输方式、删掉不再用的 Skill,都要对着 YAML 和路径操作,改完通常还要重启 dsh web 才能看到效果。
dsh-plugin-manager(维护者 liqichen)把上述操作收进 DSH 设置面板里的图形界面:三个标签页分别对应 MCP 服务、Skills 和内置插件包,改动写入真实配置文件后热生效,无需重启 dsh web。项目在 GitHub 上开源(MIT,当前版本 0.1.0),支持 macOS 与 Linux,归类为客户端插件。
这是什么¶
dsh-plugin-manager 是标准 DSH 双端插件:浏览器端 client.js 在设置面板注入「插件管理」页,Node 端 index.js 内嵌在 dsh web 宿主里,注册 /plugin-manager/api/* 路由,读写 cordis.patch.yml 与 Skills 目录。不额外起进程,不占端口,API 与页面同源。
社区目录页:https://www.skillhub.cn/plugins/liqichen/dsh-plugin-manager
源码仓库:https://github.com/liqichen/dsh-plugin-manager
核心功能¶
| 能力 | 说明 | 生效方式 |
|---|---|---|
| MCP 开关 | 一键禁用/启用任意 MCP 服务(写入 disabled: true 或移除) |
实时热生效 |
| MCP 删除 | 从 cordis.patch.yml 删除整个 MCP 条目(上方注释保留) |
实时热生效 |
| Skills 管理 | 浏览全部 skill 及描述;删除时移入 .trash-* 目录,可恢复 |
立即生效 |
| 内置插件包浏览 | 只读查看 DSH 本体 160+ 内置插件包的名称、版本、说明 | 只读 |
| 自动备份 | 每次写操作前自动备份为 cordis.patch.yml.bak-<时间戳> |
— |
写操作涉及的主要路径:
~/.dsh/profiles/web/cordis.patch.yml— MCP 服务配置(补丁层)~/.dsh/skills/— Skill 目录~/.dsh/profiles/node_modules/@deepseek-ai/— DSH 本体插件包(只读)
安装与启用¶
前提:已安装 DeepSeek Harness(dsh web),并了解 ~/.dsh 目录结构。
下面是从仓库安装并注册的完整步骤(README 推荐方式):
# 1. 克隆并放入用户插件目录
git clone https://github.com/liqichen/dsh-plugin-manager.git
mkdir -p ~/.dsh/plugins/dsh-plugin-manager
cp -r dsh-plugin-manager/{index.js,client.js,package.json} ~/.dsh/plugins/dsh-plugin-manager/
# 2. 通过 dsh CLI 注册插件
dsh plugin --profile web add ~/.dsh/plugins/dsh-plugin-manager
接着手动完成依赖与插件声明:
# 3. 编辑 ~/.dsh/profiles/web/package.json,在 dependencies 加入:
# "dsh-plugin-manager": "file:../../plugins/dsh-plugin-manager"
# 4. 编辑 ~/.dsh/profiles/web/cordis.patch.yml,在 plugins 列表加入:
# - id: plugin-manager-ui
# name: dsh-plugin-manager
完成上述步骤后,重启 dsh web,打开「设置」→「插件管理」即可使用。
若插件机制不适用,仓库还提供早期独立版 Python 服务作为备用:
python3 legacy/server.py --port 17891
# 浏览器打开 http://127.0.0.1:17891/
典型用法¶
安装并重启后,进入 DSH 设置 → 插件管理。
MCP 服务标签页:每个 MCP 以卡片展示名称、传输方式(stdio / http)、运行状态与配置 id。右侧开关可禁用或启用;删除按钮会二次确认后移除条目。顶部显示配置文件路径与总数量。
Skills标签页:列出所有 skill、SKILL.md 中的描述及目录路径。删除操作将目录移入 ~/.dsh/skills/.trash-*,可手动恢复。
内置插件包标签页:表格只读展示 DSH 本体全部插件包。升级 DSH 本体请使用:
npm update -g @deepseek-ai/dsh
操作完成后,页面会提示改动已实时热生效。配置虽即时写入,当前已打开的会话仍持有旧工具列表,建议新开一个会话以刷新。
后端提供两个同源 API,供界面或脚本调用:
# 读取当前状态
GET /plugin-manager/api/state
# 执行操作(kind 区分:mcp-toggle / mcp-delete / skill-delete)
POST /plugin-manager/api/action
写操作示例:
{ "kind": "mcp-toggle", "id": "mcp-scrapling", "disable": true }
{ "kind": "mcp-delete", "id": "mcp-scrapling" }
{ "kind": "skill-delete", "name": "obsidian-cli" }
适用场景与注意¶
适合谁: 经常在 DSH 里增减 MCP 或 Skills、希望少碰 YAML 和路径、又需要确认传输方式与运行状态的用户。内置插件包页适合快速核对 DSH 自带模块名称与版本,不负责升级本体。
使用边界:
- 操作的是真实配置,改动直接写入
cordis.patch.yml与~/.dsh/skills/;虽有自动备份,重要环境改前仍建议自行留档。 - MCP 删除只移除配置条目,不会卸载 npm 包;可从
cordis.patch.yml.bak-*恢复,或手动加回条目。 - Skill 删除是移入
.trash-*,彻底删除需手动rm -rf对应目录。 - 默认作用于
~/.dsh/profiles/web/这一 profile;其他 profile 需调整路径。 - 插件后端跑在当前 dsh web 进程权限下,安装前请阅读源码与 MIT 许可证,确认可接受其读写本地配置的行为。
若页面提示「插件后端未响应」,检查安装步骤 3、4 是否完成,以及 ~/.dsh/profiles/node_modules/dsh-plugin-manager 是否正确指向插件目录,然后重启 dsh web。
结尾¶
dsh-plugin-manager 把 MCP、Skills 与内置插件包的日常维护收进 DSH 设置面板,配置改动热生效,减少手改 YAML 和反复重启。DSH 社区奉行「一切皆插件」;SkillHub 目录是独立社区站点,与 DeepSeek / 幻方无官方从属关系。