前言¶
DeepSeek Harness(DSH)采用「一切皆插件」的架构:profile 里的 bundle、挂载行、技能与 agent 预设,往往分散在 cordis.patch.yml、终端命令和多个目录中。装一个新插件通常要跑 dsh plugin add、改 patch、重启 profile,再手动排查依赖冲突或启动失败。
dsh-web-plugin-manager 把上述操作收拢到 Web UI:查看已装插件、实时启停、安装与卸载、更新检测、健康检查、环境(profile)管理,以及内置插件市场。它同时覆盖 bundle 与非 bundle 插件,并附带 dshpm CLI,让命令行变更也走同一套质量门与回滚链路。
这是什么¶
- 插件名称:
dsh-web-plugin-manager(仓库 LX2000WASD/dsh-web-plugin-manager) - 维护者:LX2000WASD
- 分类:客户端
- 许可证:MIT
- 目录页:SkillHub 插件条目
一句话定位:在 DSH Web UI 中一键管理插件全生命周期,并内置市场索引与安装质量门。
核心功能¶
查看与实时启停¶
合并展示层栈、依赖、挂载行与运行条目。手动安装但未挂载的依赖会标为「未挂载」,可一键挂载。启停通过编辑 managed 块并经由 loader 直接应用,实时生效且重启后持久;卸载 bundle 插件时同步清除运行条目与遗留 managed 块。
安装与卸载¶
走官方 dsh plugin CLI,叠加质量门与自动回滚:安装期全链依赖扫描、bundle patch 行校验,失败即回滚。非 bundle 插件自动写挂载行并实时加载。支持 npm 包名、GitHub 仓库、git URL、tarball 与本地路径;git 源安装前会扫描所需环境变量(TOKEN/KEY/SECRET 形态),缺失时暂停询问。
除常规插件外,还支持 skill(SKILL.md → ~/.dsh/skills)与 agent 预设(agent.cordis.yml → ~/.dsh/.agent-presets)直装并记录。
更新检测¶
支持 npm dist-tag、git HEAD 与安装 commit 比对。更新带质量门,失败自动装回旧版本;管理器自身也可在 UI 中自更新。注意:dsh plugin add 不带 @latest 时不会跨版本升级,需用 dshpm update 或 add ...@latest。
健康检查¶
离线分析依赖图:缺失依赖、循环依赖、重复行 id、同名注册冲突(服务/工具/section/路由)、peer 版本与官方包重复。运行中追加 pending 与失败诊断。A 级问题可一键修复,B 级建议确认后修复。
环境管理¶
在 UI 中启停、复制或转移插件;创建、重命名、删除 profile(官方 profile 只读);备份导出与导入恢复,差异对比后逐项受保护恢复。
插件市场¶
静态索引覆盖 topic:dsh-plugin 全量条目(约 3100 条),多源兜底、gzip、磁盘缓存与新鲜度门控;叠加 awesome 精选与 dsh.so 独立验证/安全扫描徽标(L1–L5)。支持已安装判定、更新检测与同名包冲突消解。
Agent 工具与 CLI¶
向 agent 注入 plugin_status / plugin_search / plugin_install / plugin_uninstall / plugin_toggle 工具,并拦截裸 dsh plugin / npm / pnpm 变更命令,引导走受保护链路。dshpm bin 复用与 Web UI 相同的 installProtected 流程,无宿主进程时跳过 live 应用,文件级操作一致。
安装与启用¶
官方推荐先装管理器,再装其他插件,以便后续每次安装都经过质量门检测。
# 方式一(推荐):从 npm 安装(务必带 @latest)
dsh plugin --profile <name> add dsh-web-plugin-manager@latest
从源码构建:
cd /path/to/dsh-web-plugin-manager
pnpm install && pnpm run build
dsh plugin --profile <name> add .
重启 profile 后,Web UI 的「设置」会出现「插件管理」标签页,以及「技能与预设」与「市场」一级菜单。
若 profile 因未经验证的插件无法启动,可先用 dsh --profile <name> --patch <empty.yml> 排查,或手动清理对应依赖与 cordis.patch.yml 行,再安装管理器接管。
典型用法¶
在 Web UI 中管理插件¶
- 打开「设置 → 插件管理」,查看已装插件卡片与层栈。
- 需要新版本时点「检查更新」,对目标卡片点「更新」;更新后需重启 profile 生效。
- 在「市场」浏览条目,按提示安装;git 源若缺环境变量,按 UI 行内表单填写后继续。
用 dshpm 在终端操作¶
dshpm 随插件安装进入 profile 的 node_modules,也可直接调用 node <profile>/node_modules/dsh-web-plugin-manager/dist/cli.js。
dshpm install <source> [--env KEY=value ...] --profile <name>
dshpm remove <name> --profile <name>
dshpm update <name> --profile <name>
dshpm mount <name> --profile <name>
dshpm list --profile <name>
dshpm analyze --profile <name>
<source> 可为 npm 包名、github:user/repo、git URL、tarball 或本地路径。analyze 有问题时退出码为 1,适合纳入脚本或 CI 检查。
升级管理器自身¶
dshpm update dsh-web-plugin-manager --profile NAME
# 等价于
dsh plugin --profile NAME add dsh-web-plugin-manager@latest
pnpm 11 用户若当天发版无法解析到最新版,可在 profile 的 pnpm-workspace.yaml 中设置 minimumReleaseAge: 0;镜像源 dist-tag 滞后时,可用 --registry=https://registry.npmjs.org 强制走官方源。
适用场景与注意¶
适合谁
- 经常在 Web UI 与多个 profile 之间切换,希望统一查看插件状态的用户。
- 需要批量安装社区插件、又不想每次手动改 patch 与排查依赖冲突的开发者。
- 希望 agent 安装插件时走质量门,而不是裸跑
dsh plugin add的团队。
使用前须知
- 插件以当前 dsh 进程权限运行;从市场或 git 源安装前,应自行查看源码与许可证。
- 禁用被其他条目依赖的插件可能导致 profile 启动失败(官方 fail-loud 设计);恢复需手动编辑该 profile 的
cordis.patch.yml。 - 来自 git 的 bundle 安装可能需在终端执行
pnpm allowBuilds(命令输出会提示)。 - 无显式 id 的随机挂载行无法经此启停;手动安装的插件显示「未挂载」,需用「挂载」或
dshpm mount,管理器不会擅自改动 profile。 - 安装守卫只拦截 agent 工具调用,拦不住用户在终端手工执行裸
dsh plugin。 - 市场索引由第三方维护(DSH-Plugins-Marketplace),个别仓库可能已删除或变为私有;Node 进程读取
HTTP_PROXY/HTTPS_PROXY,系统代理规则对 undici 无效。
更完整的功能与限制说明见仓库内 docs/feature-reference.md。
结尾¶
dsh-web-plugin-manager 把 DSH 插件的查看、启停、安装、更新、健康检查与环境管理集中到 Web UI,并用质量门与 dshpm 统一安装链路,降低「装上就炸、重启起不来」的概率。建议作为 profile 上的第一个插件安装,再据此管理其余社区插件。