zhu1090093659/dsh-web--packages-dsh-plugin-manager ↗★ 5.8k
@linxin666/dsh-client-ui-plugin-manager
Plugin manager tab for the dsh web GUI Plugins settings section: installs plugins from npm or git through the official host channels, lists installed plugins with next-start enablement switches, surfaces install-time conflict actions with undo, and hands failures off to repair conversations.
安装
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:zhu1090093659/dsh-web#8d02146df032e6de8d54b7a0aba2c9da039d47e4&path:packages/dsh-plugin-manager说明文档
阅读完整 README ↗@linxin666/dsh-client-ui-plugin-manager
English | 中文
面向 dsh web GUI「插件」设置分区的插件管理器 Tab:从 npm 或 git 安装插件,列出已装插件并提供下次启动生效的启用开关,如实呈现安装时冲突动作并支持撤销,失败一键转交修复会话。
功能
- 在官方「插件」设置分区注册「插件管理」Tab(
settings.plugins.tab槽位,order 20,与官方安装器 Tab 并列)。 - 双通道传输:带官方安装器服务的运行时(DSHCode 与 1.0.4 checkout 版 web)走官方
/plugin-installer、/plugin-controlloopback RPC 通道;npm 发布的官方 web 没有这些通道,本包的 host 半区挂载 loopback 门禁的 HTTP 网关——安装/卸载 spawn 官方dsh pluginCLI(唯一写入器),启停写入disabled覆盖行。 - 从 npm 包名或 git 仓库 URL 安装插件,带进度。
- 列出已装用户插件:下次启动生效的启用开关、更新检查(npm 源走 registry)、已核验的 npm 更新与卸载。
- 检测旧聚合包
@linxin666/dsh-web-ui-all,把更新动作转换为到@linxin666/dsh-web-all的事务迁移;网关先移除旧包、安装精确版本的新包、恢复旧聚合包的层顺序,并在--dump-config通过后才报告成功。 - 更新前校验 DSH 运行时兼容(issue #754):更新检查读取最新版本清单声明的 DSH 最低版本(
dsh.engines.dsh,兼容回退读顶层engines.dsh),在更新按钮旁显示要求,运行 DSH 低于要求时禁用按钮;host 更新路由在启动任何 CLI 任务前若无法核实时也会返回 412 并拒绝。 - 官方 plugin-control 面存在时展示内置产品开关。
- 安装时冲突对账:官方模式对产品快照前后 diff;网关模式对每次 CLI 运行前后的 profile 层 diff,可撤销的动作给一键撤销,每条冲突都给「让 Agent 修复」转交。
- 按插件渲染启动失败环:「让 Agent 修复」(以插件安装根为工作区的修复会话)与「复制错误」;npm web 运行时没有失败环,只有安装错误提供修复转交。
- 显示宿主安全模式横幅与「恢复正常模式」操作(web 端在下次手动重启时生效)。
- npm 运行时保护下次启动:安装后网关校验依赖真实落盘、拒绝重复入口 id 认领与引用不可解析包的 insert 行,并用 CLI 的
--dump-config做组合预检;冲突或失败的安装会经官方 remove 路径自动回滚(绝不触碰现有插件),错误行带修复转交。
安装
从 npm 安装(推荐)
dsh plugin --profile web add @linxin666/dsh-client-ui-plugin-manager
从仓库安装(开发调试)
git clone https://github.com/zhu1090093659/dsh-web.git
cd dsh-web
pnpm install && pnpm -r build
dsh plugin --profile web add link:$(pwd)/packages/dsh-plugin-manager
重启 dsh web 后,设置页「插件」分区出现该 Tab。
配置
本 Tab 不携带配置命名空间。开关与安装在下次重启后生效。
cordis 服务
浏览器半区把共享的双通道 face 以 cordis 服务名 pluginManager 提供,兄弟客户端插件无需重复实现通道探测即可驱动与观察插件管理。用 ctx.inject(['pluginManager'], cb) 注入并读取 ctx.pluginManager: