dsh-panel-folders
为 DeepSeek Harness 0.2.2-rc.1 左侧栏的全局面板入口添加可折叠分组。例如把音乐、小游戏等已安装工具收进「摸鱼工具」,平时只显示一个文件夹。
使用
- 点击左侧栏的 管理分组。
- 输入「摸鱼工具」等名称,点击 创建分组。
- 在 入口归属 中为各工具选择分组;选择 不分组 可还原入口。
- 点击侧栏的文件夹展开或折叠,点击其中的工具打开原面板。
新分组默认折叠。支持重命名、删除分组;删除只解除归属,不卸载工具,不关闭当前面板。插件管理入口始终保留在原位置。侧栏收成图标栏时,点击文件夹会展开侧栏及该分组。
分组名称、归属和折叠状态保存到当前浏览器/桌面窗口所在 origin 的 localStorage(dsh-finder:groups:v1),刷新后恢复,同 origin 的窗口之间同步;不上传服务器,不跨设备同步。清除站点数据会清除分组。存储不可用时显示提醒,并只在当前页面保留修改。
工具暂时停用时保留归属,重新加载后回到原分组;管理窗口中可以移除未加载入口的归属。新安装的工具默认不分组。
构建与安装
需要 Node.js 24.9+ 和 DSH 0.2.2-rc.1。其他 DSH 版本未验证,不应强制豁免版本检查。
在 DSH 插件管理器的第三方插件安装入口输入 dsh-panel-folders 即可安装。若已安装过本地测试版 dsh-finder,请先将其禁用或卸载,避免两个侧栏插件同时运行;同一 origin 下的分组数据会保留。
npm install
npm run build
npm test
npm pack
Web profile 可安装生成的包(将路径替换为实际绝对路径):
dsh plugin --profile web add /absolute/path/dsh-panel-folders-0.1.1.tgz
安装后启用 dsh-panel-folders bundle,重启对应 DSH Host 并刷新界面。Desktop 可在 插件 → 添加插件 → 安装第三方插件 输入生成的 .tgz 的本机绝对路径,安装后启用;npm 安装的 dsh 不支持修改 Desktop profile。远程 Host 的路径应指向 Host 上的文件,不是浏览器所在电脑。
本目录的构建和测试不会修改当前用户的 DSH profile。安装会影响所选 profile 的整个侧栏,而不只是一个会话。
实现与边界
- 管理的是注册到
sidebar.panellist的左侧全局面板入口,不包含会话树、右侧栏标签、聊天工具调用,也不创建工具本身。 - 复用固定版本的 DSH 原生侧栏组件及其未经修改的样式,仅在注册时组合入口过滤与分组导航,保留品牌、新建会话、工作区、设置、原生布局和焦点处理;不搬动 DOM、不依赖混淆后的 CSS 类名。内嵌样式使用本插件的独立标识,避免原生侧栏停用时被清除。
- 分组管理使用原生
dialog并接入 DSHuseModalLayer,使窄屏侧栏抽屉中的 Tab / Shift+Tab 只在管理窗口内循环;Escape 先关闭管理窗口并恢复焦点,不会关闭后面的侧栏。 - bundle patch 停用原生
ui-sidebar条目并插入dsh-finder,避免两个组件争用同一 slot。不要同时安装另一套侧栏替换插件;禁用/移除本 bundle 后,原生侧栏随配置重组恢复。分组数据保留但不再影响原入口。 - 单层分组;每个入口仅属于一个分组。文件夹按创建顺序、内部入口按加入顺序排列。未分组入口继续遵循 DSH 原有顺序和 Pin 状态。
- 原生侧栏被打包进浏览器产物;升级 DSH 时必须匹配更新构建依赖和宿主版本约束,而不是仅修改版本号。上游许可见
THIRD_PARTY_NOTICES.md。
验证
npm test 覆盖跨组移动、重复归属清理、删除还原、持久化、存储失败和窗口间同步。
已在隔离的 DSH 0.2.2-rc.1 Web profile 中运行实际浏览器验证:插件加载、多个面板入口分组且无重复、原面板交互、折叠后刷新恢复、图标栏展开、重命名、删除后恢复原入口及保留当前页面。另在 600px 宽度的侧栏抽屉中验证 Tab / Shift+Tab 焦点循环、Escape 关闭管理窗口并还原焦点、再次 Escape 关闭侧栏。Desktop 原生窗口未实测。
No comments yet. Be the first to write one.