dsh-workspace-recent-sort: Sidebar workspace sorted by recent updates with simple display

前言

在 DeepSeek Harness(DSH)里用「按工作区」分组时,视图选项里的「最近更新」只会对每个工作区内部的 Session 排序。工作区这一层在 Host 里仍按拖拽文件夹得到的 workspaceIds 顺序展示——某个工作区里刚开了新对话,分组位置不会跟着往上走。工作区一多,侧边栏就要靠记忆或滚动去找「刚动过的那个文件夹」。

dsh-workspace-recent-sort 是维护者 easychen 发布的 Web 客户端侧边栏插件(npm 包名 dsh-workspace-recent-sort,MIT 许可证)。它在不改动 Host 持久化顺序的前提下,在浏览器里对工作区分组做「最近更新」投影,并附带对话行简约显示、重排后滚回当前选中项等行为。插件已发布到 npm,GitHub 仓库当前约 9 stars。

这是什么

一句话:DeepSeek Harness sidebar plugin——工作区分组按组内最新对话的 updatedAt 排序、展开工作区时默认只露最新一行并在悬停时展开更多、重排后把当前选中的对话滚回视口。

实现上通过 Cordis patch 包装侧边栏注册的 WorkspaceBrowser,不写入 Host 状态、不发网络请求;工作区选择器、搜索、Session 行、归档筛选、固定与 Session 拖拽等仍走原生逻辑。

生效条件与要解决的问题

DSH 原生 Order by → Last updated(最近更新) 不改变工作区分组顺序。本插件只在同时满足下面两项时改变侧边栏里的分组顺序投影:

  • Group by = WorkSpace(按工作区)
  • Order by = Last updated(最近更新)

切换到 Manual(手动排序)、Workspace Tree(按工作区树) 或扁平列表时,会立刻恢复原生顺序。持久化的工作区顺序不变;在 Last updated 生效期间会抑制工作区拖拽提交(否则 durable 重排在投影下不可见),需要改文件夹顺序时应先切到 Manual。

核心功能

按最近更新排序工作区分组

  • 各工作区分组按组内真实对话中最新的 updatedAt 排序,新的在上。
  • 已归档但仍可见的行仍算真实对话;临时的「New Session」占位、隐藏的 subagent 子 Session 不计入活动。
  • 没有已加载对话的工作区沉底;updatedAt 相同则保持 Host 相对顺序,结果确定。
  • 仅包装 WorkspaceBrowser;其他 UI 保持原生。

工作区对话简约显示

在 Group by → WorkSpace 下,展开的工作区默认只显示最新一条对话,以及必须保持可操作的行。

  • 悬停工作区标题或可见行时,用动画再露出后续三条(最新一条再加三条;若有 New Session 占位行会保留可见)。
  • 当前选中的对话即使不是最新,也会一直显示。
  • 正在跑 turn、正在跑的 subagent 子任务、或待审批 / 计划审阅 / 提问等 pending 交互的行,简约模式下不会被藏,多条并行时亦然。
  • 展开其余 xx 个会话 / Show remaining … conversations 按钮默认隐藏,悬停或键盘聚焦工作区后才出现;键盘焦点在工作区内会展开该工作区已渲染的全部行;点击「展开其余…」会拉起该工作区的原生 watermark,渲染超过六行后悬停可看到全部。
  • 折叠的工作区、工作区树模式、扁平列表仍为原生行为。

重排后滚回选中对话

工作区分组顺序因自动最近排序、排序模式切换或手动拖拽工作区而改变后,插件会把侧边栏滚到当前选中的对话;若该行已在视口内,使用 block: "nearest",不强行改滚动位置。

设置

路径:Settings → 工作区 / Workspaces。两项开关默认均为开启,存在浏览器本地 localStorage 键 dsh.workspace-recent-sort.settings.v1,换浏览器可各用各的配置,切换后立即生效,无需刷新页面。

开关 默认 作用
按最近更新排序工作区 开 启用工作区按最近更新的投影排序
工作区对话简约显示 开 启用单行简约与悬停展开

安装与启用

面向 Web profile 安装已发布的 npm 包:

dsh plugin --profile web add dsh-workspace-recent-sort

也可从 GitHub 直接安装:

dsh plugin --profile web add https://github.com/easychen/dsh-workspace-recent-sort.git

包声明了 dsh.bundle.patch,会作为 profile 的 active bundle 安装。若提示需要重启,请重启 dsh web 并刷新 Web 页面。

本地开发时可在 profile 目录链接 checkout(路径换成你的绝对路径):

cd ~/.dsh/profiles/web
pnpm add link:/absolute/path/to/dsh-workspace-recent-sort

并确认 profile 的 package.json 里 dsh.profile.bundles 包含 dsh-workspace-recent-sort。

卸载:

dsh plugin --profile web remove dsh-workspace-recent-sort

DSH 插件页 / bundle 安装器提供等价的安装与移除操作。

典型用法

  1. 安装并刷新 Web 客户端后,侧边栏 Group by 选 WorkSpace,Order by 选 Last updated。
  2. 在某个工作区里更新或新建对话,该工作区分组应随组内最新活动时间上移(开关「按最近更新排序工作区」为开时)。
  3. 展开工作区时默认只见最新一行;鼠标悬停标题或行可临时看到后续几条;有任务在跑或待交互的 Session 会一直露在外面。
  4. 若分组顺序变化导致当前选中行被挤出视口,侧边栏会自动滚回该行。
  5. 需要长期调整工作区文件夹顺序时,先把 Order by 切到 Manual,再拖拽;不需要简约显示时在设置里关闭「工作区对话简约显示」。

适用场景与注意

适合谁: 经常在多个 WorkSpace 之间切换、依赖「最近更新」找活跃项目,但又希望工作区这一层也跟着「谁刚动过」排序的 DSH Web 用户;工作区里 Session 很多、希望侧边栏默认更短、用悬停按需展开的人。

兼容性: README 写明针对 DSH 0.2.1-rc.2 构建;package.json 中 engines.dsh 为 >=0.2.0-0,当前发布版本为 0.2.1。原生视图选项菜单没有公开的分组排序扩展点,插件走 sidebar 注册组件接缝;若识别不了侧边栏结构,会保留原生组件以免应用无法启动。

安全与权限: 插件随当前 DSH Web 客户端在浏览器中运行,设置仅存本地 localStorage。安装前建议阅读 GitHub 仓库 源码与 MIT 许可证,确认符合你的使用环境。

结尾

dsh-workspace-recent-sort 补的是 DSH 在「按工作区 + 最近更新」视图下分组层不跟最近活动走的空档,并用简约行与滚回选中项减少长列表里的来回找。社区插件目录见 SkillHub 条目;源码、Issue 与 npm 说明见 GitHub:easychen/dsh-workspace-recent-sort。

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

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

Xiaoye