READMESource: main@7b0e1c25
dsh-plugin-manager
DeepSeek Harness (dsh) 插件管理:在设置页列出已安装的第三方插件,并支持按行 id 在 profile 的 cordis.patch.yml 补丁层持久禁用 / 启用。
只改补丁层,不修改
dependencies与dsh.profile.bundles——插件始终装着,只是最后应用的加载器条目层按 id 把该行关掉/打开。
特性
- 设置 → 插件管理:列出所有已安装的第三方插件(过滤
@deepseek-ai/*内置 bundle 与自身)。 - 每个插件显示:包名、描述、行 id、已启用 / 已禁用 状态徽章。
- 一键 禁用 / 启用:向
cordis.patch.yml追加 / 移除- id: <行id>\n disabled: true。 - 行 id 自动从插件自身的
cordis.patch.yml(insert的id)提取。 - 纯手写 JS(Host = Node ESM,Client =
__ModuleLoader__bundle),无构建、无运行时依赖。
安装
在 profile 所在目录执行:
# 方式一:GitHub 安装(建好仓库后)
dsh plugin --profile web add github:yishengdaxiaonengjihui/dsh-plugin-manager
# 方式二:本地链接(开发/自用)
dsh plugin --profile web add link:D:/path/to/dsh-plugin-manager
安装后重启 dsh 生效,设置里出现「插件管理」。
使用
- 打开 设置 → 插件管理。
- 每个已安装插件有「禁用 / 启用」按钮。
- 改动写入
cordis.patch.yml,需重启 dsh 生效。
原理
DSH 的 profile 是层层 patch 组合的:bundle 层 → profile cordis.patch.yml → home 层。对同一行 id,后写的层覆盖先写的层。因此在 cordis.patch.yml 追加:
- id: <行id>
disabled: true
即可禁用 bundle 层插入的该插件行,而不触碰依赖与 bundles。移除该块即恢复默认(启用)。
Host 提供两个 HTTP 路由(GET /dsh-plugin-manager/installed、POST /dsh-plugin-manager/set-enabled),Client 通过 fetch 调用,与官方 dshmarket 同构。
目录结构
dsh-plugin-manager/
├── package.json # dsh bundle 声明(dsh.bundle.patch + dsh.client)
├── cordis.patch.yml # 插件自身的 bundle patch(insert 行 id: plugin-manager)
├── lib/index.js # Host:HTTP 路由 + 补丁层读写
└── client/client.js # Client:设置页「插件管理」UI
已知限制
- 禁用/启用需重启 dsh 才生效(补丁层在启动时组合)。
- 只有声明了
dsh.bundle.patch且含可识别行 id 的插件才能被禁用;纯 client-only(无 bundle patch)插件无法通过补丁层禁用。 - 不能禁用「插件管理」自身(防止把自己关掉)。
License
MIT
No comments yet. Be the first to write one.