前言¶
DeepSeek Harness (DSH) 采用“一切皆插件”的架构,这意味着运行时的核心能力往往由各类插件提供。在管理这些插件时,传统做法通常需要重启应用或手动编辑配置文件,操作不够直观且容易出错。dsh-plugin-manager 旨在解决这个问题,它通过一个 Web 界面,让你能在设置页直接控制已安装插件的启停,并自动处理底层配置文件的写入。
功能概览¶
该插件运行时条目 ID 为 dsh-plugin-manager,核心功能包括:
- Web 设置页管理:在 Web 设置页提供插件列表,支持搜索与筛选(官方/第三方)。每个插件一行开关,切换后立即生效。
- 配置持久化:启停操作会自动写入用户层的
cordis.patch.yml文件,确保重启后状态保持。 - 热更新支持:利用 Cordis loader 的热更新机制,启停操作无需重启进程。
- 信息展示:显示插件运行状态(运行中/已停用/挂载失败等)、官方徽标(
@deepseek-ai/*)与受保护标记。 - 安全防护:内置可信请求栅栏,防止跨站请求伪造与 DNS 重绑定攻击,将配置平面限制在回环地址。
- 核心保护:内置保护列表,禁止停用
webserver、ui-settings、ui-sidebar等核心条目,防止 UI 自锁。
安装与启用¶
安装该插件需要通过 DSH 的插件命令行工具。
dsh plugin --profile web add @wsgsety/dsh-plugin-manager
安装完成后,需要重启 DeepSeek Harness 的 Web profile(可通过命令行或桌面应用重启)以使插件生效。
使用方式¶
安装成功后,在 Web 界面的设置页面中导航至“插件 > 插件管理”。
- 搜索与筛选:在搜索框输入关键词可快速定位插件,支持按“官方”或“第三方”标签筛选。
- 启停插件:点击插件行右侧的开关即可启用或停用。开启操作会写入
disabled: false,关闭操作会写入disabled: true,并自动保存到用户 patch 层。
架构与安全¶
插件通过自定义路由与 DSH 后端交互。
路由设计¶
| 路由 | 方法 | 说明 |
|---|---|---|
/dsh-plugin-manager/entries |
GET | 获取 loader 条目投影与 patch 停用列表 |
/dsh-plugin-manager/set-enabled |
POST | 执行启停操作,写入 patch 持久化 |
/dsh-plugin-manager/ping |
GET | 健康检查 |
可信请求栅栏¶
所有接口均走官方 dsh-client-connection 同款可信请求栅栏:
* Host 验证:必须是回环权威地址(localhost / 127.0.0.0/8 / [::1])。
* 请求来源:拒绝 Sec-Fetch-Site: cross-site 请求。
* Origin 一致性:请求携带的 Origin 必须与 Host 完全一致。
* 写接口限制:写接口额外要求 TCP 对端可见地址为回环地址,将配置平面限制在本地。
保护机制¶
插件自身与 DSH 核心条目受到保护,禁止被停用。受保护列表包含但不限于:
webserver、web-runtime、modules、connection、client-runtime、locale、ui-layout、ui-sidebar、ui-settings、ui-settings-plugins(本插件所在页面 slot 的所有者)、settings、typert*、api-remotes、dsh-plugin-manager。
注意事项¶
- Patch 层语义:
cordis.patch.yml层叠规则要求显式写入disabled字段。禁用插件必须写入disabled: true,启用插件必须写入disabled: false。删除该字段或写入非布尔值会导致插件在重启后重新停用或解析失败。 - 请求体积限制:写请求的 JSON body 体积受限(16 KiB),这限制了同时修改大量插件的并发操作。
- 网络限制:插件仅支持回环地址访问,无法通过局域网 IP 或公网 IP 访问管理界面。
- 依赖项:该插件依赖
@deepseek-ai/cordis作为 peer dependency。