dsh-entry-organizer:侧栏与标签的拖拽排序与跨区搬移

前言

DeepSeek Harness(DSH)左侧「全局面板」和会话顶部的「对话 / 阅读 / 轨迹」等标签,顺序通常由宿主默认布局决定。插件一多,常用入口沉在列表中间,想临时把某个面板顶到标签栏快速切换也不方便。官方没有提供侧栏与标签的自由排序,也没有把侧栏条目当成真实会话标签来用的能力。

dsh-entry-organizer(入口编排)是维护者 xishuai-zero 发布的客户端插件:在浏览器里用拖拽(或设置页按钮)调整侧栏条目与顶部标签顺序,并支持把侧栏行搬到标签区、再拖回侧栏。顺序与搬移状态写在本机 localStorage,重启后保留。包为零依赖、无构建步骤,MIT 许可;当前 npm 版本为 0.1.1,要求宿主 DSH >=0.2.1-rc.5。

这是什么

一句话:dsh-entry-organizer 只改「入口出现在哪、以什么顺序出现」,不替换官方面板组件,也不接管 pin 显隐。

名称里的 entry 指侧栏面板条目和会话视图标签,与入场动画类插件(如 dsh-entry-transition)或 payload 塑形类插件(如 dsh-entry-shaper)不是同一概念。

插件通过 dsh.bundle manifest 安装:浏览器半身由 dsh.client 声明,宿主侧用根目录 cordis.patch.yml 的一行 insert 挂进 profile。无服务端状态,index.js 仅为空壳声明。

核心功能

侧栏与标签拖拽排序

按住左侧栏「全局面板」列表中的插件行拖动即可重排;实现上只写各行 style.order,侧栏 nav 为 flex 布局,不移动、不重建官方 React 节点。

会话顶部标签可左右拖动重排;「对话」固定首位,不参与拖拽。标签容器同样用 flex order 生效。

跨区搬移

把侧栏行拖到顶部标签行:侧栏该行消失,顶部出现同名标签。点击标签走官方 layout.selectPanel() 打开对应面板,并显示左上角「← 返回对话」浮标。把标签拖回侧栏(或拖到侧栏空位)则还原为侧栏行,落点决定插在目标行上方还是下方。

搬移通过 ctx.slots.register({ name: 'conversation.view', ... }) 注册真实 View,启动器只负责回对话并打开面板,不手写渲染他人面板 Component。

溢出与无障碍

标签行宽度不足时,宿主会把部分标签截进右侧「…」菜单,菜单内没有可拖 DOM。插件在同一「…」菜单注册「把搬入的标签全部移回侧栏」,保证能一键恢复。

「设置 → 入口编排」提供带 ↑/↓ 的「侧栏顺序」「标签顺序」列表,无鼠标、触屏或拖拽被截断时仍可逐项调整。

持久化与设置页

状态存 localStorage 键 dsh.entry-organizer.v1(结构 v2:sidebarOrder、tabOrder、moved 等),全局一份,多窗口通过 storage 事件同步。设置页显示侧栏行数、可排序标签数、已搬入列表,支持逐项「移回侧栏」或「恢复默认」。界面文案在 client.js 的 DICT 中,跟随宿主语言。

从旧包名 dsh-entry-arrange 升级时会读取旧键并迁移到新键;升级到 0.1.1 时 v1 存储会自动迁到 v2(排序键改为稳定 panel/view id),无需手动清缓存。

安装与启用

不确定本机 profile 名称时,用 dsh plugin --help 或官方文档确认;下文以市场常用的 web 为例,桌面版常见为 desktop,把 --profile web 换成你的 profile 即可。

# 1) 从 npm(推荐,预构建、免 allowBuilds 构建授权)
dsh plugin --profile web add dsh-entry-organizer

# 2) 从 GitHub 源码(按 tag 固定版本)
dsh plugin --profile web add github:xishuai-zero/dsh-entry-organizer#v0.1.1

# 3) 从 GitHub Release 的预构建 tarball
dsh plugin --profile web add https://github.com/xishuai-zero/dsh-entry-organizer/releases/download/v0.1.1/dsh-entry-organizer-0.1.1.tgz

安装后重启 DSH(或等待宿主热加载)。验证:左侧栏条目可拖、设置里出现「入口编排」。卸载通过插件管理界面或官方文档从 profile 移除该包。

插件在 DSH 客户端进程内运行,与页面同源权限;安装前建议浏览 GitHub 仓库 源码与 MIT 许可证,确认符合你的使用习惯。

典型用法

1、侧栏排序:在「全局面板」列表按住某行拖动到目标位置,松手后顺序立即生效并写入本地存储。

2、标签排序:在会话顶部拖动除「对话」外的标签左右排列;仅对当前可见标签集合生效(可见数量由宿主宽度与 order 共同决定,见下文限制)。

3、搬到标签栏:把侧栏某行拖到顶部标签行,用新标签切换面板;需要还原时拖回侧栏,或在「设置 → 入口编排」点「移回侧栏」,或在「…」菜单使用「把搬入的标签全部移回侧栏」。

4、不用拖拽:打开「设置 → 入口编排」,用 ↑/↓ 调整「侧栏顺序」「标签顺序」。

适用场景与注意

适合:插件较多、希望固定侧栏顺序;希望把常用面板临时放到顶部标签切换;多窗口同时开 DSH 且希望顺序在本机各窗口一致(storage 同步)。

下列限制来自 README 中的「已知限制」,属于宿主契约边界:

  • 「…」菜单里的官方标签不能拖出,只能菜单内一键把本插件搬入的标签移回侧栏。
  • 标签重排只作用于可见标签;调小 order 只能让条目更容易进入可见集,插件不修改官方条目的排序逻辑。
  • 侧栏显隐仍由官方「更多 → 固定/取消」决定;本插件只管顺序与搬移。
  • 「插件管理」行未被硬编码排除,也可能被拖动;本版无锁定开关。
  • 状态仅存本机浏览器,不随账号跨设备;清站点数据会恢复默认。
  • 依赖宿主 DOM 标记(如 [data-slot="sidebar.panellist"]、[data-conversation-tabs]);宿主大改结构时需插件适配。
  • 切换界面语言后,已搬入标签的显示文案需重新搬移一次才会更新为新语言字符串;排序与 id 不会丢。

数据与隐私:不联网、不收集数据;只读写上述 localStorage 键,迁移时只读旧键 dsh.entry-arrange.v1 且不删除。

结尾

dsh-entry-organizer 用最小侵入方式(flex order + 动态 View 注册)解决侧栏与标签的顺序和跨区摆放,并给出溢出菜单与设置页兜底。社区目录与 DeepSeek / 幻方无官方从属关系,可按需从目录页或 GitHub 获取包信息与 issue 入口。

  • 目录页:https://www.skillhub.cn/plugins/xishuai-zero/dsh-entry-organizer
  • 仓库:https://github.com/xishuai-zero/dsh-entry-organizer
羽毛球分组比赛记分
小程序二维码

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

小夜