dsh-sidebar-entries: Make the DeepSeek Harness left sidebar behave like a proper long list

前言

DeepSeek Harness(DSH)左侧一列通常同时承担两件事:上方是一叠面板入口(插件、插件市场、自动化任务等),下方是工作区与会话树。插件装多了之后,面板图标会把会话列表挤成窄条;置顶会话分散在各个工作区里,归档会话又和进行中的行混在一起。宿主自带的 createPanelPins 只在内存里记面板顺序,刷新即丢,且会永久固定「插件」那一行。

下面介绍社区插件 dsh-sidebar-entries(维护者 FragrantLotus,分类为客户端)。它在不 patch 宿主应用的前提下,通过 DOM 与 localStorage 调整已渲染的侧边栏,把面板排序、折叠、高度上限、置顶区、视图标签、归档归拢和页脚入口提升串成一套可持久化的交互。

这是什么

dsh-sidebar-entries 是面向 DeepSeek Harness Web 客户端的侧边栏增强插件。npm 包名与仓库名均为 dsh-sidebar-entries,当前版本 0.7.16,许可证 MIT。可在社区目录 SkillHub 查看简介与安装指引;SkillHub 为独立社区站点,与 DeepSeek / 幻方无官方从属关系。

实现上分为 Host 半部(lib/index.js,诊断路由)与浏览器半部(lib/client.js,实际 UI 逻辑),通过 cordis.patch.yml 在 sidebar-entries 下挂载;包声明无运行时依赖,安装时不拉取额外构建产物。

核心功能

面板图标区

  1. 长按约 0.3 秒后拖拽排序。短按仍切换面板,避免误拖导航。松手后顺序写入 localStorage(键 dse.sidebar.order.v2),每次渲染后由 MutationObserver 重放;行以 aria-label 识别,「More」行固定为锚点且不可拖。
  2. 列表顶部的折叠箭头。展开时显示 v,折叠后显示 ^,一键隐藏全部面板图标;状态键 dse.sidebar.collapsed.v1,刷新后保留。箭头本身不可拖,始终可找回展开入口。
  3. 页脚入口提升到同一轨道。凡注册在侧边栏页脚(sidebar.footer.action 或注入页脚容器的按钮)的控件,会被复制为轨道内一行并隐藏原按钮(data-dse-lifted);点击转发到原控件,插件无需被本包硬编码。卸载或客户端重建时会清理占位行并清除标记。

面板图标栈高度上限为侧边栏总高度的 30%,按整行(36px)向下取整,窗口缩放时重算。

工作区会话列表

  1. 置顶(置顶)分区。各工作区里已置顶的 Session 归拢到列表最上方单独一组,原行 display:none 保留在 DOM 供 React 更新;副本点击通过子节点路径回放至原行,取消置顶直接调用 uiWorkspace.unpinSession(id)。状态圆点与「待回复 / 待批准」等文案从隐藏的原行镜像同步,而非静态复制标题。
  2. 分叉子会话跟进。新建 Session 的 parentId 指向已置顶会话时,在 ten 分钟内更新过的候选会被自动置顶并插在父会话之后;首次运行只种子化已知 id,避免升级时误置顶历史会话。取消父会话置顶不会连带取消子会话。
  3. 归档会话沉底。每组内按 updatedAt 新到旧排到组末,上方加细分隔线,活跃行顺序仍由宿主决定。

置顶区同样受 30% 整行高度上限约束;分区折叠状态键 dse.pin.closed.v1,置顶顺序键 dse.pin.order.v1。

对话视图标签栏

对话 / 轨迹 / 上下文 等标签可拖拽排序(与面板类似的 lift + FLIP),顺序键 dsh.sidebar-entries.viewtab.v1。对话 标签由宿主固定在首位,不可移动;可见标签数量由栏宽决定,本插件不改动该逻辑。

内置与容错

插件自带 文献 一行,用于打开文献插件面板(在页脚按钮、迁移后的 dock 或服务之间降级查找)。各子系统在独立 guard 下启动,单块失败不会阻止整包挂载;Host 提供 /sidebar-entries/* 诊断路由(如 GET /sidebar-entries/ping、GET/POST /sidebar-entries/log),开发时可配合 POST /sidebar-entries/reload 热重载客户端包。

安装与启用

推荐从 npm 安装预构建包:

dsh plugin --profile web add dsh-sidebar-entries

若需直接从 GitHub 源安装:

dsh plugin --profile web add https://github.com/FragrantLotus/dsh-sidebar-entries

package.json 要求 dsh 版本 >=0.2.0-rc.2 || >=0.2.1-rc.2,Node ^22.19.0 || >=24.0.0。无论哪种方式,安装后需 重启 Web 应用 以加载 bundle patch,再 刷新页面。

社区目录页亦可将「请安装 DSH 插件 FragrantLotus/dsh-sidebar-entries」一类指令发给 Harness 代理完成安装,具体文案以 SkillHub 插件页 为准。

典型用法

安装并重启、刷新后,行为主要来自手势与侧边栏 UI,无需额外配置文件。

整理面板图标:在左侧轨道对某一图标 按住约 0.3 秒 再拖动到目标位置,松手即持久化。需要把纵向空间还给会话列表时,点轨道顶部的 折叠箭头 收起全部面板图标。

集中跟进置顶会话:在宿主里照常置顶 Session;插件会在列表顶部生成 置顶 分区,运行中与待交互状态会随原行更新。从置顶区 fork 出的新子会话,在符合条件时会出现在父会话下方。

调整对话区标签顺序:在会话上方的视图标签栏拖拽除 对话 以外的标签;顺序保存在浏览器 localStorage。若要恢复默认,可在浏览器中清除该站点数据(会一并重置 dse.sidebar.order.v2 等键)。

开发调试(可选):Host 运行时可访问 GET /sidebar-entries/ping 查看存活与版本;设置 window.__dseDebug 后客户端会向 GET/POST /sidebar-entries/log 上报更多事件。

适用场景与注意

适合长期在 DSH Web 端并行多个插件、多个工作区与会话的用户:面板可排序与一键折叠,置顶与归档规则让列表可读性更接近日常 IDE 侧栏。

使用前请注意:

  • 插件在 当前 DSH 进程与 Web 客户端权限 下运行,会读写浏览器 localStorage 并操作 DOM;安装前应阅读 GitHub 仓库 源码与 MIT 许可证,确认符合你的安全策略。
  • 置顶区副本隐藏了 ⋯ 菜单按钮(为保持点击回放索引),复杂菜单操作仍可能需要到原工作区展开列表。
  • 页脚提升依赖页脚按钮仍在 DOM 中;文献等内置行在对应插件未安装时会安静降级。

清除站点本地存储会丢失自定义排序、折叠状态与标签顺序,属于预期行为。

结尾

dsh-sidebar-entries 把 DSH 左侧栏里「面板太多挤占会话树」「置顶分散」「归档穿插」「页脚与轨道分裂」等具体问题,收成可持久化的排序、折叠、分区与高度上限,并保留置顶会话的实时状态与子会话跟进。若你在 SkillHub 或 GitHub 检索侧边栏类 DSH 插件,可从下面链接进入详情与 Issue:

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

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

Xiaoye