前言¶
DeepSeek Harness(DSH)采用插件化架构,这要求开发者具备管理众多插件的能力。现有的插件管理方式在身份识别和开关控制上较为模糊。dsh-workshop 是一个轻量级的插件管理面板,由 Zlyraz 维护,旨在解决插件来源不明、缺乏直观开关以及风险控制不足的问题。
安装与启用¶
安装该插件需要使用 DSH 的插件管理器。在终端执行以下命令:
dsh plugin --profile web add github:Zlyraz/dsh-workshop
安装完成后,重启 DSH Web 界面,进入“设置” -> “插件” -> “轻量插件开关” tab 即可使用。
身份判定¶
该插件通过分析 ctx.loader.entries() 枚举的条目,结合 pnpm-lock.yaml 来判定插件的来源。判定逻辑如下:
* 官方内置:在 lockfile 中找不到来源的条目,视为随 DSH 发行。
* NPM 包:来源为 npm 语义版本。
* GitHub 仓库:来源为 codeload.github.com(锁定 commit)。
* 本地开发:来源为 file:(本地目录)。
* Scope 警告:如果 GitHub 仓库冒用 @deepseek-ai/ scope(如 dsh-plugin-hub),会打上警告标。
发声式开关¶
插件开关不涉及卸载,而是通过修改配置层实现。通过 POST /api/workshop/v1/toggle 接口,插件会向 $DSH_HOME/profiles/<profile>/cordis.patch.yml 追加或移除配置块(例如 - id: X / disabled: true)。
修改后,HMR 会在约 1-3 秒内自动重组,无需重启 DSH。但需注意,基础设施行(loader、webserver、ui、storage 等共 44 个模式)与开关自身处于锁定状态,无法关闭。
风险标签¶
插件内置了一个手工维护的 risk-list.json 清单。该清单修改后即时生效,无需重启。对于未收录的第三方插件,显示“未评级”;对于官方内置插件,显示“官方维护”。
安全校验¶
插件在实现安全校验时做了以下限制:
* 路由仅限环回(loopback)访问。
* 请求必须同源(same-origin)并经过 Origin 校验。
* 文件写入操作经过串行队列处理,并使用临时文件原子替换,防止并发写入导致配置损坏。
注意事项与二次开发¶
- 模块 ID 约束:
client bundle的模块 id 必须等于包名,否则可能导致渲染异常。 - 属性访问:使用
IDENTITY_LABEL或RISK_LABEL时,应使用属性访问(L) => L.key,而非函数调用。 - 权限风险:该插件以当前 DSH 进程权限运行,安装前应检查源码与许可证。
结语¶
dsh-workshop 通过轻量化的方式提供了插件身份溯源与发声式开关能力,适合需要在 DSH 中精细化管理插件的开发者。