前言¶
DSH(DeepSeek Harness)的插件体系中,动态插件(Dynamic Cordis Plugins)通常有两条加载通道:runner 通道按会话加载,loader 通道通过持久挂载生效。对于需要人工安装、挂载、停用和移除插件的使用者来说,相关操作分散在命令、目录和配置项中,不够直接。
dsh-dynplugin-manager 是一个面向 DSH dynamic plugins 的管理插件,提供设置页、安装对话框、内置发现、slash commands 和生命周期操作。
这是什么¶
dsh-dynplugin-manager 是仓库 Thomas-key/dsh-dynplugin-manager 中的插件,包名为 dsh-dynplugin-manager,许可证为 MIT。
它管理的是 DSH dynamic plugins,包括 runner 会话级加载和 loader 持久挂载两类对象。仓库材料中的维护信息存在不一致:README 提到 authored by deepseek-v4-flash,并说明若相关维护说明未移除则作者不积极维护;package.json 的 author 字段为 illusion。使用前应自行审查源码、依赖和维护状态。
核心功能¶
内置插件发现¶
插件从两个位置发现候选:
- runner managed dir:
~/.dsh/dynplugin-manager/plugins/ - profile node_modules:
~/.dsh/profiles/<profile>/node_modules/
不需要额外配置目录,设置页会基于这些位置展示可管理对象。
Settings 页面¶
启用后,进入 Settings → Dynamic Plugins 可以看到动态插件状态。
页面提供:
- 内置发现结果
- live state badges
- loader 插件的 disable / uninstall 操作
- install dialog 入口
安装对话框¶
安装对话框支持以下来源:
- local dir
- GitHub repo
- npm package
流程为:选择来源、扫描、按候选插件选择 link / copy 安装模式、查看即时结果、one-click mount。
其中 GitHub repo 来源会将 zip 解压到:
~/.dsh/dynplugin-manager/cache/
并支持 monorepo。
自动路由¶
/dynload <name> 会根据插件形态自动路由:
- self-contained 插件走 runner session-scoped load
- import-using 插件走 loader persistent insert-row mount
质量检查¶
插件使用 verify-before-persist 机制:在写入持久配置前执行验证;验证失败不写入内容。
安装与启用¶
先确认来源¶
README 中给出了 name collision warning:可能存在同名 npm 包。安装时建议明确从该仓库安装:
dsh plugin --profile web add -w Thomas-key/dsh-dynplugin-manager
如果从本地 checkout 安装:
dsh plugin --profile web add -w ./dsh-dynplugin-manager
安装运行时依赖¶
插件以 link 方式安装,Node 会从目录本身解析 import。@deepseek-ai/dsh-tools 不提交到仓库,需要先在 checkout 中安装,否则 dsh web 可能启动失败:
cd dsh-dynplugin-manager
npm install
cd ..
peerDependencies 中的 @deepseek-ai/cordis 和 react 由 DSH host 提供,不应本地安装。
启用¶
经过上面的步骤后,重启 dsh web,然后进入:
Settings → Dynamic Plugins
即可看到动态插件列表和安装对话框。
典型用法¶
加载插件¶
/dynload <name>
该命令会自动路由:
- self-contained 插件进入 runner session-scoped 模式
- import-using 插件进入 loader persistent mount 模式
停用插件¶
/dynunmount <name>
行为按通道区分:
- loader:移除 insert row,相当于 disable,包本身保留
- runner:删除 managed copy
完全移除插件¶
/dynuninstall <name>
完全移除包括:
- insert row
dsh plugin remove- managed copy
- 相关 records
手动清理 .pnpm 残留¶
完全移除后,如需手动回收 .pnpm 物理残留,可以执行:
dsh plugin --profile web prune
注意:dsh plugin --profile web prune 可能删除用户安装的包,因此插件不会自动执行 prune。
适用场景与注意¶
适合需要人工管理 DSH 动态插件的使用者和开发者,尤其是需要统一查看插件状态、从本地目录 / GitHub / npm 安装、挂载、停用和移除动态插件的场景。
使用前建议注意:
- 插件会以当前 DSH 进程权限运行,安装前应检查源码、依赖和许可证。
- 该插件许可证为 MIT。
- 同名 npm 包可能冲突,应从
Thomas-key/dsh-dynplugin-manager仓库明确安装。 - 维护状态在仓库材料中不一致,使用前应自行判断维护活跃度。
- npm 上已有
dsh-plugin-manager(author hrhgit),它管理 bundle plugins,与本插件管理的 dynamic plugins 不是同一对象。
链接¶
- 社区目录页:https://www.skillhub.cn/plugins/Thomas-key/dsh-dynplugin-manager
- GitHub 仓库:https://github.com/Thomas-key/dsh-dynplugin-manager
社区目录页是插件目录页面,不等同于官方应用商店。