dsh-sidebar-focus:按运行状态整理 DSH 左侧工作区

前言

在 DeepSeek Harness(DSH)里同时开多个工作区和会话时,左侧栏很快会变成一长串名字:有的在跑、有的在等你点确认、有的已经跑完但提醒还没看,空闲的工作区也占着展开位置。宿主侧栏有基本展开逻辑,但不会按「最近谁在忙」重排,也不会系统性地把空闲组收起来。

下面介绍社区插件 dsh-sidebar-focus(维护者 wjingshan,分类:客户端)。它只做一件事:根据会话是否运行、是否选中、最近活动时间,调整工作区在侧栏里的顺序和展开状态;每条规则对应一个开关,可单独关掉,侧栏会回到原生行为。

这是什么

dsh-sidebar-focus 是纯 Web 客户端插件(dsh.client.platform: web),注入 @deepseek-ai/dsh-client-ui-workspace,不占用服务端逻辑。当前 package 版本为 0.3.2,许可证 MIT。

GitHub:https://github.com/wjingshan/dsh-sidebar-focus
社区目录:https://www.skillhub.cn/plugins/wjingshan/dsh-sidebar-focus

SkillHub 等社区目录与 DeepSeek / 幻方无官方从属关系;DSH 生态里能力多以插件形式挂载,安装前建议自行查看源码与许可证。

核心功能

配置入口在 插件页 → 点开 dsh-sidebar-focus 的详情页(描述与行列表之间):六个开关加一个 「只保留最近 N 个活跃工作区展开」 计数器(− / +,范围 0–20,0 表示关闭该条)。

设置 默认 作用
置顶最近有活动的工作区 开 有会话跑过的工作区排到最前,按最近一次活动排序;跑完后不掉回原位,只有更新的活动才把它往下挤一位。只影响显示,不改写你手动拖拽的顺序
置顶当前会话所在的工作区 开 当前选中会话(含刚新建、尚未开始跑的 blank 会话)所在工作区排到最前
自动展开正在运行的工作区 开 有会话在跑或等待你处理的工作区自动展开
置顶正在进行的会话 开 运行中与等待你处理的会话排在所属工作区内最前
收起没有运行的工作区 开 无运行中会话的工作区保持折叠;刚跑完会先留约 2.5 秒再收
保留未读完成提醒 开 含「已完成未查看」的工作区不自动折叠
只保留最近活跃的工作区展开 2 最近有活动的前 N 个工作区保持展开,其余空闲者在宽限期后收起

关闭任一开关时,对应 DOM 标记会被移除,CSS 规则失效,该条行为完全退回宿主默认,没有「半开」状态。

意图豁免与例外

为避免「刚点开就被立刻折回」,插件在本次页面会话内尊重手动操作:你亲手展开的空闲工作区会保持展开,直到该工作区再次变忙再变闲;亲手折叠的忙碌工作区 likewise 保持折叠,直到忙碌状态变化。刷新页面后规则重新生效。

另外:未分组(Ungrouped) 永不自动折叠;当前选中会话所在的工作区 保持展开,避免切换会话落到折叠组上。

实现要点(便于排查)

  • 工作区排序用 flex order 做纯展示,不移动 DOM,不写 Workspace.sessionIds。
  • 「有没有在跑」除读行上的状态点外,还读 useSessionStatus 快照与 useWorkspaces 成员表,避免组已折叠时看不见新启动的会话。
  • 子工作区(树形分组)不参与工作区级置顶(order 在嵌套 group 内无效);会话级排序仍生效。
  • 自动折叠通过宿主 ctx.get('uiWorkspace').view.setGroupExpanded(key, expanded) 写入视图 store;卸载后曾被自动折叠的工作区可能仍为折叠,需手动展开或在插件页禁用后刷新。

安装与启用

已发布到 npm 时:

dsh plugin --profile web add dsh-sidebar-focus

尚未上 npm 时使用 GitHub 源:

dsh plugin --profile web add github:wjingshan/dsh-sidebar-focus

装完后刷新 Web 页面即可;README 说明本插件宿主侧几乎为空,不需要重启 dsh web。

插件以当前 DSH 进程权限在浏览器端运行,安装前请自行审阅 仓库源码 与 MIT 许可证条款。

典型用法与自检

  1. 安装并刷新页面,在插件详情页按需开关六项规则、调整「最近 N 个展开」。
  2. 打开一个正在跑会话的工作区:应自动展开并浮到列表前部(在相关开关开启时)。
  3. 保持一个空闲工作区:默认应折叠;手动展开后在本页会话内应保持展开。
  4. 会话跑完后:工作区不应立刻掉回原始顺序或瞬间收起(宽限期与未读提醒规则生效时)。
  5. 浏览器控制台不应出现以 [dsh-sidebar-focus] 开头的报错。

若宿主 UI 结构升级导致契约不匹配,插件可能静默不生效(标记无处挂载);若缺少 setGroupExpanded,折叠功能会关闭并在详情页告警。

适用场景与注意

适合:日常在多工作区并行跑 agent、需要「正在忙的浮在上面、闲着的收起来」、又不想改宿主源码的 DSH Web 用户。

注意:

  • 状态判定使用运行中(ongoing)与等待你(warning);error 不参与忙碌判定。
  • 自动折叠会持久化 groupExpansion;卸载插件后折叠状态可能保留。
  • 依赖内置 dsh-client-ui-workspace 的 DOM 与 store 契约;大版本宿主变更后需关注插件更新。

结尾

dsh-sidebar-focus 把侧栏顺序和展开交给「实际在跑什么、你正在看哪条会话」,规则拆成可逆开关,忙闲切换时少用手动拖和点折叠。更多信息见社区目录 skillhub.cn/plugins/wjingshan/dsh-sidebar-focus 与 GitHub wjingshan/dsh-sidebar-focus。

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

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

Xiaoye