dsh-workspace-session-filter: Add session status filter to sidebar

前言

DSH 的会话都排在侧边栏列表里。跑久了列表会很长,想找一条还在跑的、或点着等确认的会话,只能靠滚动和肉眼扫标题。这个插件解决这个问题:它在侧边栏底部加一条固定的筛选条,把运行中、待确认、未读三种状态直接摊开。插件由 shijiewang 维护,分类是客户端,MIT 协议。

下面介绍它提供什么、怎么装、怎么用。需要说明的是,社区目录是独立站点,与 DeepSeek / 幻方没有官方从属关系。

这是什么

一句话定位:给 DSH 侧边栏添加会议状态筛选入口的客户端插件。仓库在 https://github.com/shijiewang/dsh-workspace-session-filter,维护者 shijiewang,当前版本 1.0.9,仓库目前 0 star。它的目标是在长会话列表里快速定位仍在运行、等待确认或有未读内容的会话,而不是替换侧边栏原有列表。

核心功能

只列 README 里已核实的能力。

  • 底部筛选条有三个 chip:运行中(含子智能体仍在跑)、待确认(审批、计划审阅、待回答)、未读(跑完但没看,或最近有新内容没打开过),各自带当前命中数。
  • 点 chip 向上弹出按工作区分组的会话列表,点行直接进会话,再点同一个 chip 收起。侧边栏收成窄条时换成带合计角标的圆形按钮,展开后同样能筛。
  • 筛选条占满侧边栏那一行,不和成本计等其他底部条目挤在一起。
  • 完整面板顶部有 全部 / 运行中 / 等待确认 / 未读 / 更多 筛选器;更多 里是 最近一天 / 最近三天 / 最近一周 / 最近一个月,外加 不限时间,基于会话的 updatedAt 判断。选中后 更多 按钮直接显示时间窗名称,再点一次可改回 不限时间。
  • 状态与时间可叠加,右侧出现 清除筛选,一次复位。
  • 列表按工作区分组,组标题是工作区名(没有名字时退化成目录名),组内按最近活动倒序;不属于任何工作区的会话归到末尾的「未分组」。
  • 每行左侧状态点复刻内置 StateDot,运行中是旋转描边环,其余是 10px 圆点并按状态着色,右侧显示状态文案与相对时间。
  • 整行是按钮,点击调用 uiWorkspace.openSession(sessionId) 切到会话面板。
  • 与内置列表同源:跳过 origin: 'subagent' 的子智能体会话,默认隐藏归档会话,空白新会话只保留当前打开的那一条,标题为空时显示「未命名会话」。

安装与启用

这是一个 DSH 插件包,两种装法:插件管理器,或 dsh CLI。

插件管理器的 install_bundle 指向目录的绝对路径:

plugin_manager({ action: "install_bundle", target: "/绝对路径/dsh-workspace-session-filter" })

装完后 profile 会以 link: 依赖指向该目录(~/.dsh_desktop/profiles/desktop/package.json),改本目录文件后刷新页面(⌘R)就会生效;只有改到 package.json 的 dsh.client.inject、cordis.patch.yml 或 index.js 时才需要重新安装。

用 dsh CLI 装进某个 profile:

# 从 npm registry 装(1.0.1 起可用)
dsh plugin --profile desktop add dsh-workspace-session-filter

# 从 GitHub 装(pnpm 会锁定解析到的 commit)
dsh plugin --profile desktop add github:shijiewang/dsh-workspace-session-filter

# 固定到某个标签
dsh plugin --profile desktop add github:shijiewang/dsh-workspace-session-filter#v1.0.1

# 或本仓库绝对路径(装成 link: 依赖,改文件后刷新即生效)
dsh plugin --profile desktop add /absolute/path/to/dsh-workspace-session-filter

# 卸载
dsh plugin --profile desktop remove dsh-workspace-session-filter

几点前提:

  • 桌面应用自带这条命令:/Applications/DeepSeek Harness.app/Contents/Resources/runtime/cli/bin/dsh。它自带 pnpm,不依赖你 shell 里的 pnpm 版本。
  • desktop profile 需要先启动过一次桌面应用(命令会检查 profiles/desktop/package.json),建议在应用完全退出后再执行装包,避免和运行中的实例抢 profile 锁。
  • add github:... 会把依赖锁在解析到的 commit 上;想跟进更新就再 add 一次,想回到改文件即时生效的开发状态,用绝对路径再 add 一次覆盖即可。

截至 1.0.9,npm registry、GitHub、release tarball、本地目录四种来源都能装;registry 上是 npm publish 发出的正式版本,repository 字段指回本仓库。

卸载用:

plugin_manager({ action: "remove_bundle", target: "dsh-workspace-session-filter" })

典型用法

装好后,侧边栏底部(设置按钮上方、单独一行)出现 运行中 N / 待确认 N / 未读 N 筛选条,这是日常主入口:看命中数,点 chip 看对应会话,点行进会话。

面板列表里不会自动多出图标。需要完整视图时,到 设置 → 会话筛选(或 设置 → 插件 → 会话筛选,或底部弹层的页脚)打开「在左侧导航显示」,图标才出现,开关状态存本地、刷新后保留;同一页还有「打开面板」按钮,不装图标也能直接进完整视图。

在完整面板里,可以先用状态筛,再用 更多 叠加时间窗;右侧出现 清除筛选 后点一下即可复位。列表按工作区分组,组内按最近活动倒序,直接点行进会话。

适用场景与注意

  • 适合会话数量多、需要按状态或时间定位会话的 DSH 使用者;只做筛选和入口,不改会话数据。
  • 插件以当前 dsh 进程权限运行,安装前应检查源码与许可证。本插件是 MIT License,见仓库 LICENSE。
  • 状态点、时间窗、分组、未读判定都依赖插件自己维护的数据,与内置列表同源,行为可能随 DSH 版本变化。
  • 底部筛选条与完整面板分别有错误边界,渲染异常时分别退化成空状态或什么都不渲染,不会让中间栏变白或拖坏侧边栏。
  • DSH 的检查工具没有渲染和截图能力,像素级外观需要在正在运行的窗口里目视确认。

小结

这个插件的价值是把会话筛选从滚动列表变成侧边栏底部一个固定入口,并保留一个可选的完整面板。目录页在 https://www.skillhub.cn/plugins/shijiewang/dsh-workspace-session-filter,源码在 https://github.com/shijiewang/dsh-workspace-session-filter。

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

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

Xiaoye