前言¶
DSH 走「一切皆插件」的路线,系统自带的插件加上自己陆续安装的插件会越积越多。而在 Web UI 里,查看和管理这些插件的入口在「设置 → 插件」,每次都要翻进设置页才能确认装了什么、哪些在运行。
dsh-plugin-sidebar-manager 解决的就是这个操作路径问题:把「插件」按钮直接放进 Web UI 左侧栏,点开即可分类浏览、搜索,并对用户新增的插件做运行时启停。下面介绍它的功能、安装方法和背后的机制。
这是什么¶
一句话定位:为 DSH Web UI 左侧栏添加「插件」按钮,将系统自带插件和用户新增插件分类展示,并支持搜索与运行时启停。
- 维护者是 rain02333z-spec,源码托管在 GitHub,许可证 MIT,当前版本 0.1.1。
- 它是一个运行在 DSH Web 客户端的界面插件,
package.json中dsh.client.platform为web。
核心功能¶
入口与面板
- 左侧栏展开时显示「插件」与插件总数,收起时显示与「设置 → 插件」一致的图标按钮。
- 点击按钮后,在侧栏上方打开插件面板。
- 支持 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.setEnabledRemote,通过 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.json、tsconfig.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 把插件管理从「设置 → 插件」搬到侧栏入口,分类、搜索、运行时启停都在一个面板里完成,系统插件保持只读,行为边界清晰。仓库与目录页如下: