dsh-plugin-sidebar-manager: Category Management and Plugin Start/Stop in DSH Web Sidebar

前言

DSH 走「一切皆插件」的路线,系统自带的插件加上自己陆续安装的插件会越积越多。而在 Web UI 里,查看和管理这些插件的入口在「设置 → 插件」,每次都要翻进设置页才能确认装了什么、哪些在运行。

dsh-plugin-sidebar-manager 解决的就是这个操作路径问题:把「插件」按钮直接放进 Web UI 左侧栏,点开即可分类浏览、搜索,并对用户新增的插件做运行时启停。下面介绍它的功能、安装方法和背后的机制。

这是什么

一句话定位:为 DSH Web UI 左侧栏添加「插件」按钮,将系统自带插件和用户新增插件分类展示,并支持搜索与运行时启停。

  • 维护者是 rain02333z-spec,源码托管在 GitHub,许可证 MIT,当前版本 0.1.1。
  • 它是一个运行在 DSH Web 客户端的界面插件,package.jsondsh.client.platformweb

核心功能

入口与面板

  • 左侧栏展开时显示「插件」与插件总数,收起时显示与「设置 → 插件」一致的图标按钮。
  • 点击按钮后,在侧栏上方打开插件面板。
  • 支持 Escape、点击面板外部和再次点击入口三种方式关闭面板。

浏览与搜索

  • @deepseek-ai/*cordis:* 归为「系统插件」,其他模块归为「用户新增」,两个分组可独立展开或收起。
  • 支持按完整模块名、短名称或 Loader entryId 搜索,不区分大小写。
  • 界面跟随 DSH 全局语言,完整支持简体中文和英文。

启停与状态处理

  • 用户新增插件支持运行时启用和停用,操作后重新读取 Host 真实状态。
  • DSH 与 Cordis 系统插件保持只读,插件管理器自身也不可修改。
  • 针对加载中、空列表、搜索无结果、加载失败和单项操作失败都有对应状态,加载失败可重试。

安装与启用

需要 DSH 0.1.0-rc.7 和 pnpm。按顺序执行下面四步:

# 1. 克隆仓库
git clone https://github.com/rain02333z-spec/dsh-plugin-sidebar-manager.git
cd dsh-plugin-sidebar-manager

# 2. 准备本地安装包
node scripts/prepare-checkout.mjs

# 3. 安装到 web profile
dsh plugin --profile web add ./packages/dsh-plugin-sidebar-manager

# 4. 重启 DSH Web
dsh web

先克隆仓库并准备本地安装包,再通过 dsh plugin 把它装进 web profile,最后重启 DSH Web 使其加载。重启后,左侧栏底部出现「插件」入口即表示安装成功。

卸载同样通过 dsh plugin 完成:

dsh plugin --profile web remove dsh-plugin-sidebar-manager

运行机制

插件分为 Host 与 Client 两部分:

  • Host 端挂载 pluginManager.setEnabled Remote,通过 Cordis Loader 的 Entry.update({ disabled }) 修改当前运行状态。
  • Client 端复用 DSH 内置只读 pluginInventory.list() Remote,并注册到 sidebar.footer.action 列表 slot。

这些能力依赖 DSH 0.1.0-rc.7 提供的 pluginInventory Remote、sidebar.footer.action 列表 slot、DSH Client Module Loader,以及 Typert Remote 生成与加载机制。

有一点需要明确:启停只修改当前 Loader 的运行状态,不写回 profile 的 cordis.patch.yml。重启 DSH 后,插件状态会按原 profile 配置恢复。

开发与验证

源码使用 DSH monorepo 的双端插件构建约定。将本仓库同步到 packages/extensions/plugin-manager,并确保根 tsconfig.host.jsontsconfig.client.json 引用对应项目后运行:

Set-Location <DSH monorepo root>
pnpm exec vitest run packages/extensions/plugin-manager/tests
pnpm exec tsc -b packages/extensions/plugin-manager/tsconfig.host.json packages/extensions/plugin-manager/tsconfig.client.json
pnpm --filter dsh-plugin-sidebar-manager bundle
pnpm --filter dsh-plugin-sidebar-manager pack

面板属于可见 Web 行为,合入 DSH 仓库前还应运行 pnpm run test:gui 和 Web replay 测试。

适用场景与注意

适合两类使用者:一是经常需要在 Web UI 里查看、检索已装插件的人;二是需要临时停用某个用户新增插件来观察行为的开发者。对系统插件只读、不改动内置行为的边界,也适合希望保持环境稳定的人。

安装前注意以下几点:

  • 当前源码和安装包面向 DSH 0.1.0-rc.7,安装前先确认你的 DSH 版本。
  • 插件以当前 dsh 进程的权限运行,安装前应检查源码与许可证(本项目为 MIT)。
  • 启停操作不持久化,重启 DSH 后插件状态按原 profile 配置恢复,这一点不要误当作配置修改手段。

小结

dsh-plugin-sidebar-manager 把插件管理从「设置 → 插件」搬到侧栏入口,分类、搜索、运行时启停都在一个面板里完成,系统插件保持只读,行为边界清晰。仓库与目录页如下:

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye