dsh-session-multiselect:DSH Desktop 对话多选与批量管理

前言

在 DeepSeek Harness(DSH)里做智能体或长周期开发时,侧边栏会话会按工作区不断累积。原生会话列表面向「点开一条继续聊」,缺少一次勾选多条、再统一删除、归档或置顶的路径。若只靠逐条操作,清理历史对话或整理置顶/归档状态会占用不少时间。dsh-session-multiselect 是面向 DSH Web 客户端的插件,用可搜索、可按工作区分组的多选面板,把删除、归档、置顶做成批量动作,并尽量走官方 sessions / workspaces 契约,而不是改 DSH 原生代码。

这是什么

dsh-session-multiselect 由维护者 xlxs123 发布,分类为客户端插件,当前 package 版本 0.10.2,许可证 MIT。它定位是:在 DSH Desktop 的会话列表旁提供入口,打开面板后多选对话,再批量删除、归档或置顶。

官方会话列表由 @deepseek-ai/dsh-client-ui-workspace 以 single slot 独占渲染,没有逐行扩展 slot,因此入口通过 DOM 注入实现:在会话列表工具栏、搜索放大镜左侧放置 28px 按钮;定位失败时,入口会退到侧边栏底部 sidebar.footer.action slot,功能不丢。面板与批量逻辑使用官方扩展面:sessions 服务、workspaces 服务(归档/置顶)、locale 与客户端 store。

兼容性方面,README 写明在 DSH Desktop 0.9.0 / 0.10.0(Harness 0.1.x / 0.1.7-rc.2)与 DeepSeek Harness nightly(Harness 0.2.0-rc.2)的 Web 客户端上开发并实测(Windows)。插件不声明 @deepseek-ai/dsh* 的 peerDependency,0.2 起的安装期/启动期 peer 校验一般不会拦它。需要 Node ≥ 20 仅针对开发;安装 bundle 本身 README 说明无需 build。

核心功能

面板多选

点入口按钮打开面板,支持:

  • 复选框列表:只列真实对话,自动隐藏空白会话与子智能体(origin === "subagent")会话。
  • 按工作区分组:每组标题显示完整路径(过长时省略号在左侧、保留尾部目录名),标题带「已选/总数」,点标题可整组勾选或取消;也可关闭分组,改为按时间平铺。
  • 三种分组模式:按工作区 / 按日期(今天、昨天、最近 7 天、更早)/ 不分组,选择会记住。
  • 快捷筛选:全部 / 运行中 / 置顶,可与「显示归档」叠加。
  • 搜索:按标题、工作目录、会话 ID 过滤。
  • 选择:全选、清空、反选;Shift + 点击按当前显示顺序范围选择;Ctrl/Cmd + 点击追加选择。
  • 键盘:方向键移动焦点,空格/回车 勾选,Ctrl/Cmd+A 全选,Delete 打开删除确认;回收站视图同样支持。
  • 复制清单:将当前可见对话复制为 Markdown 表格(标题 / 工作区 / 更新时间 / 状态标签),便于贴进 issue 或交接。
  • 已置顶行排在最前并带「已置顶」标签;已选计数实时显示。

批量删除与回收站

删除走官方 session.delete 契约,但不是直接 rm -rf:会话目录(含投影缓存)移入 $DSH_HOME/trash/session-multiselect/,保留 7 天,可在面板工具栏「回收站」中查看标题、工作区、删除时间与「还剩 N 天」,支持单条恢复、永久删除、清空回收站(均有二次确认)。回收站内可多选后「恢复选中」或「永久删除选中」,并带搜索与工作区下拉筛选。

  • 正在运行的对话拒绝删除,状态行会说明原因。
  • 仅被打开、当前空闲的对话会进回收站;状态行会提示其中若干仍被打开,重启 DSH 后列表行消失,文件已在回收站可恢复。
  • 删除确认框最多列出 3 个将被删除的标题,而非只显示数量。

归档与置顶

操作 说明
归档 / 取消归档 选中项全为已归档时按钮为「取消归档」,否则为「归档」。调用 workspaces 的 archiveSession / unarchiveSession,原生列表归档分组同步变化;运行中的对话会被服务拒绝并逐条报因。服务不存在时退回插件本地标记,状态行注明「仅本插件内隐藏」。
置顶 / 取消置顶 调用 pinSession / unpinSession;无 workspaces 服务时会明确报错,不假装成功。已归档与置顶互斥,违规操作会逐行列失败原因。

三个批量动作均逐 id 执行并逐个报告失败原因。

版本说明(避免与旧简介混淆)

插件线索里曾出现 fork、导出、汇总等字样;以 README 为准:0.2.0 起已移除 Fork、导出 MD/JSON、汇总给 AI 等;0.3.0 将归档升级为工作区控制器命令并恢复置顶;0.4.0 起移除内联勾选模式,仅保留面板模式。当前描述的能力是:批量删除(含回收站)、归档、置顶。

安装与启用

README 给出的标准 DSH bundle 安装方式为在插件目录执行:

dsh plugin --profile desktop add .

说明:无需 build,MIT 许可。安装前建议阅读仓库源码与 LICENSE,插件在当前 DSH 进程权限下运行,批量删除会移动会话目录到回收站或调用官方删除契约,权限与数据范围与宿主一致。

典型用法

  1. 启动 DSH Desktop(README 实测环境为 0.9.0 / 0.10.0 或 nightly 对应客户端)。
  2. 在侧边栏会话列表工具栏,点击搜索放大镜左侧的多选入口(若头部注入失败,使用侧边栏底部兜底入口)。
  3. 在面板中搜索或按工作区/日期分组,勾选目标对话;需要时用 Shift 范围选或点工作区标题整组勾选。
  4. 根据需求点击 删除(二次确认)、归档 或 置顶;删除后可从工具栏 回收站 恢复或永久清理。
  5. 需要交接列表时,使用 复制清单 得到 Markdown 表格。

适用场景与注意

适合:同一机器上多工作区、多会话并行,需要定期清理、归档冷对话,或批量调整置顶状态的用户。

注意:

  • 子智能体会话不在面板中列出;清理其日志属于文件系统维护,非本面板职责。
  • 插件依赖官方 slots / locale / sessions,可选 workspaces;跨版本对装饰性契约(图标名、Button variant 等)采用多候选名与兜底策略。
  • 社区目录 SkillHub 与 DeepSeek / 幻方无官方从属关系,安装来源以你信任的仓库与目录页为准。

结尾

dsh-session-multiselect 用「面板 + 官方服务契约」补上了 DSH Desktop 会话列表缺少的批量管理能力:分组、搜索、回收站式删除,以及与工作区控制器一致的归档与置顶。若你要在本地启用,按 README 使用 dsh plugin --profile desktop add . 安装 bundle,并从目录页或 GitHub 跟踪更新。

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

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

小夜