dsh-sidebar-sessions:以最近优先重构 DSH Web 会话侧边栏

前言

在 DeepSeek Harness(DSH)Web 端,默认侧边栏会按工作区平铺会话。工作区多、会话一多,要找「刚才还在聊的那条」往往得先回忆工作区,再在列表里翻。社区插件 dsh-sidebar-sessions(维护者 sss-1012,客户端分类)接管 sidebar.workspaces 插槽,把列表改成「最近活跃优先」,并叠加分组、工作区树、归档、状态点与拖动排序,数据主要来自浏览器 localStorage 与宿主 API 调用。

下面按定位、能力、安装与用法、限制说明;事实以 GitHub 仓库 README 与 package.json(当前版本 0.1.6,许可证 MIT)为准。

这是什么

dsh-sidebar-sessions 是 DSH Web 客户端插件:在 sidebar.workspaces 独占插槽中替换官方 WorkspaceBrowser 的展示方式,会话仍以宿主为最终数据源,插件负责渲染、分组视图顺序与调用 openWorkspace、insertSessionBefore 等接口。

README 建议在暗黑模式下使用:配色取自 DSH 主题变量(--dsw-alias-*),状态点与拖动落点线在深色主题下对比更清晰;浅色主题可用,侧栏与主区域明度差会小一些。

核心功能

最近优先与分页

顶部「最近」区按最近活跃时间排序,首屏 20 条;滚到底部附近自动加载下一批 20 条,也可点底部「显示更多(还有 N 条)」。到底后显示「已经是最早的对话了 · 共 N 条」。「最近」标题上的 ↺ 可恢复按活跃时间排序。

置顶、自定义分组与分组优先(v0.1.6)

手动置顶的会话单独成组。可新建、重命名、删除分组,任意会话可移入分组;分组数据存 localStorage(key dsh-session-groups.v1)。分组优先:已分组的会话只出现在所属分组,不在工作区树重复;移出分组后回到工作区树。

工作区树

工作区节点可折叠,展开后列出各工作区;当前工作区有标记,点击工作区名切换(调用宿主 openWorkspace)。

自动分组(v0.1.6)

命中规则的新会话自动进入指定分组;分组不存在则创建。默认规则示例:标题含「新闻简报 / 每日简报」→「每日简报」;含「项目数据雷达 / 数据雷达」→「个人开发工具」。判定优先看该会话是否为定时任务在 12 小时内刚创建的新会话(lastDelivery.targetSessionId),其次看会话标题;自动分过一次会记入 autoDone,手动移走后不会被拉回。

规则可在同一 localStorage key 的 autoRules 字段修改,形如:

[{ "groupName": "分组名", "any": ["关键词…"], "none": ["排除词…"] }]

归档、搜索

已归档会话进入「已归档」分组,可展开查看或取消归档。顶部搜索框按标题过滤,Esc 清空;匹配结果多时同样分批,底部提示「还有 N 条匹配」。

状态点

与官方 StateDot 同源数据,含义包括:待审批(琥珀圆点)、运行中(蓝色转圈)、已完成未读(绿色圆点)、空闲但设置了定时任务(线性时钟图标)、空闲(灰点)。

拖动排序与行内操作

会话行可拖动:落点在目标行上半插入前面、下半插入后面(蓝线标示),松手生效。工作区树内拖动写入宿主 insertSessionBefore(宿主拒绝时退回本地视图顺序);「最近 / 置顶 / 分组 / 未分组 / 已归档」区的顺序记在 localStorage 的 order 字段,刷新保持。跨工作区在工作区树内拖动会被忽略。

悬停「⋯」可进行:置顶、重命名、分叉、复制 Session ID、复制工作目录、移动到分组、归档。

安装与启用

插件以当前 dsh 进程权限在 Web 客户端运行;安装前宜浏览源码与 MIT 许可证。SkillHub 为社区目录,与 DeepSeek / 幻方无官方从属关系。

官方 npm 式安装(README 原文):

dsh plugin --profile web add dsh-sidebar-sessions

装完后重启 dsh web;若页面已打开,可按 Ctrl+R 刷新。

不使用 npm 时,可安装 GitHub Release 中的 tarball(README 示例为 v0.1.3 包):

dsh plugin --profile web add https://github.com/sss-1012/dsh-sidebar-sessions/releases/download/v0.1.3/dsh-sidebar-sessions-0.1.3.tgz

同样需重启或刷新 Web 端。本地开发可用符号链接(路径按本机修改):

dsh plugin --profile web add link:E:\Work\tools\dsh-sidebar-sessions

典型用法

  1. 安装并刷新 Web 侧栏,确认「最近」区是否按活跃时间列出常开会话。
  2. 为长期课题建分组,把相关会话「移动到分组」;需要时展开工作区树切换 openWorkspace。
  3. 若定时任务会生成固定标题模式的会话,在 dsh-session-groups.v1 的 autoRules 中增改规则,避免手工归类。
  4. 用搜索框快速按标题定位;用状态点分辨待审批、运行中与未读完成会话。
  5. 工作区内需要固定顺序时,在同一工作区树内拖动;仅需个人视图顺序时在「最近」或分组区内拖动。

数据存储与限制

  • 分组、折叠状态、隐藏工作区、当前工作区及各区拖动顺序保存在浏览器 localStorage(dsh-session-groups.v1,兼容早期版本)。
  • 接管式:安装后官方 WorkspaceBrowser 不再渲染,相关能力由本插件实现。
  • 宿主拥有会话、置顶、归档、工作区与宿主顺序的最终状态;插件只做展示与写入调用。
  • 工作区「隐藏」是本地显示开关(DSH 0.2.1 客户端未暴露工作区归档 API),不是官方归档。
  • 平铺区拖动只改本视图顺序,不会把会话搬进别的分组或工作区。

维护者提供的本地校验命令(无构建步骤,lib/client.js 为浏览器 bundle):

node --check lib/client.js
node test/order.test.mjs

结尾

若你主要在 DSH Web 端维护多工作区、多会话,并希望侧栏以「最近用过」为先、再辅以分组与状态一眼可读,dsh-sidebar-sessions 是一条可核对源码的安装路径。详情见 SkillHub 目录页 与 GitHub:sss-1012/dsh-sidebar-sessions。

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

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

小夜