dsh-plugins-folders — DSH 插件栏分组管理
给 DeepSeek Harness 的「插件」页加一层文件夹:把装了一堆的插件按用途收进分组,按组开关,一键搜索、拖动排序,卸载了还能从记录里重新装回来。
装了几十个插件之后,插件列表就变成一条越来越长的传送带。这个插件不改变任何插件的实际行为,只在插件页上多一层你自己定义的收纳结构——像给抽屉装隔板。
核心功能
- 文件夹分组:新建 / 重命名 / 删除文件夹,把任意已装插件移进分组;未分组的自动落在「未分类」里,随时可再挪。
- 单条开关 + 整组开关:每行自带开关,直接调用
remote.pluginManager.setBundleEnabled,改的是真实插件状态;分组开关一次拨动整组。被上级配置接管(只读)的插件会明确标出,不会假装能改。 - 批量操作:多选后一次性「移动到…」另一组,或批量启停;每次改动都能撤销,切错了按一下就回去。
- 搜索:按插件名称或简介实时过滤,跨分组命中,不用一层层展开找。
- 长按拖动排序:按住约 320ms 进入拖动,把插件或整个分组拖到你想要的位置;顺序与分组一起存本地,重开浏览器还在。
- 右键卸载 + 卸载记录:右键任意插件即弹出「卸载插件」,确认后真卸载(不会误删分组插件自己)。卸掉的插件自动记入「已卸载」,按卸载前的安装地址一键重装,也可以移除这条记录。
- 跟随界面语言:中文 / English 两套文案随宿主语言切换。
安装
从插件市场
市场索引收录后,在 插件 → 发现 里搜索「插件分组 / Plugin folders」一键安装,或直接执行:
dsh plugin --profile web add github:awaYFawa/dsh-plugins-folders
从源码
git clone https://github.com/awaYFawa/dsh-plugins-folders.git
cd dsh-plugins-folders
dsh plugin --profile web add .
装完重启 dsh web 生效。插件是纯 ESM、零运行时依赖,不需要构建、不需要 npm install。
卸载
dsh plugin --profile web rm @dsh-user/dsh-plugins-folders
分组数据存在浏览器 localStorage 里,卸载插件不会自动清掉;想清干净就在浏览器控制台删掉下面两节列出的两个键。
使用说明
打开插件页,右下角(shell.overlay,order 20)会出现「插件分组」浮标,点开就是分组面板:
| 想做的事 | 怎么做 |
|---|---|
| 建分组 | 顶部「新建文件夹」,输入名字后「创建」 |
| 把插件放进分组 | 行内的「所在分组」下拉,或选中多条后「移动到…」 |
| 改分组名 / 删分组 | 分组标题右侧的铅笔 / 垃圾桶;删除只删分组,插件本身不动 |
| 开关插件 | 行尾开关;分组标题右侧的整组开关 |
| 调整顺序 | 长按约 320ms 后拖动,插件和分组都能拖 |
| 卸载 | 右键该行 →「卸载插件」→ 确认 |
| 重装回来 | 展开「已卸载」→「重新安装」(按卸载前的安装地址装) |
| 找插件 | 顶部搜索框,按名称或简介过滤 |
关于开关的诚实说明
- 分组只影响这一页的展示,不改变插件之间的加载顺序或依赖关系。
- 有的插件由上层配置统一接管,页面改不了它的开关,行上会显示为只读并给出原因——这是如实反映,不是面板失灵。
- 改动即时写入真实插件状态;若某插件需要重启 Harness 才生效,面板会提示「改动已保存,需要重启 Harness 才生效」。
数据与隐私
全部数据只存在你本机浏览器的 localStorage,不外传、不联网、不写宿主配置目录:
| 键 | 内容 |
|---|---|
dsh.plugins-folders.v1 |
分组结构(名称、顺序、成员、折叠状态) |
dsh.plugins-folders.uninstalled.v1 |
卸载记录(最多 60 条:插件名、标题、安装地址、时间) |
卸载记录里含插件原本的安装地址(例如 github:owner/repo 或包名),只为「重新安装」用;介意的话可以随时在面板里移除记录。
目录结构
dsh-plugins-folders/
├── package.json # dsh.bundle manifest + client 入口声明
├── cordis.patch.yml # 插入 plugins-folders 这个 bundle
├── index.js # Host 端:把插件清单注入前端
├── client.js # 前端:分组面板全部逻辑与样式
├── locale/
│ ├── zh.json
│ └── en.json
├── icon.svg # 插件图标(矢量)
└── assets/
└── icon-180.png # 市场卡片用的位图图标
兼容与要求
- DeepSeek Harness,Web 端(
platform: web);shell.overlay插槽存在即可用。 - 依赖宿主提供的
slots、locale、remote.pluginManager服务,不额外安装任何 npm 包。 - 需要 DSH 具备插件开关能力(
remote.pluginManager.setBundleEnabled);没有时面板会给出明确报错,而不是静默失败。
常见问题
装完在插件页找不到入口?
确认已经重启 dsh web;再看浏览器控制台有没有 dsh-plugins-folders 开头的警告(插槽未就绪时它只警告、不打断页面)。
分组丢了?
分组存在当前浏览器的 localStorage 里,换浏览器 / 换 profile / 清了站点数据都会看不到旧分组。插件本身不动,重新分组即可。
卸载别的插件会不会把它一起弄没? 面板里明确禁止卸载分组插件自己(会提示「不能卸载分组插件自己」)。
开关点了没反应? 该插件可能由上级配置接管(只读),或者正处于上一次操作的处理中(显示「处理中…」)。
No comments yet. Be the first to write one.