前言¶
在 DeepSeek Harness(DSH)里同时维护多个工作区和大量会话时,侧边栏往往只能按工作区平铺列表。若还要把会话再分类,社区里常见做法是分别安装 dsh-workspace-hub 与 dsh-session-categories 两个插件,功能有重叠,槽位也可能冲突。下面介绍维护者 a1137261060 发布的客户端插件 dsh-session-organizer:用单一插件在 Web 侧边栏实现「工作区分组 + 工作区内会话文件夹」两级组织,并附带状态点、待处理概览与搜索。
这是什么¶
dsh-session-organizer 面向 DSH web profile 的侧边栏,通过替换 sidebar.workspaces 槽位(priority -100)提供两级结构:
- 第一级:自定义工作区分组,支持颜色、拖拽、折叠;
- 第二级:每个工作区独立的会话文件夹,支持嵌套、拖拽与折叠。
README 写明其替代「dsh-workspace-hub + dsh-session-categories」的组合方案;插件分类为客户端,当前 package 版本 0.2.2,在 DSH 0.2.1-rc.2(web profile)下测试,MIT 许可,engines.dsh 要求 >=0.2.1-rc.1。
社区目录页:SkillHub - dsh-session-organizer。源码与说明:GitHub - a1137261060/dsh-session-organizer。
核心功能¶
工作区分组(第一级)¶
- 新建、重命名、删除分组(带颜色标识,自动分配配色);
- 拖拽工作区进出分组,或在分组内排序;拖拽分组卡片调整分组顺序;
- 全部分组一键展开或折叠;
- 删除分组时,其中工作区变为「未分组」,工作区及其会话不删除;
- 未分组工作区归入「未分组」卡片。
会话文件夹(第二级)¶
- 每个工作区独立文件夹体系,支持嵌套子文件夹;
- 拖拽会话进出文件夹、在文件夹内排序;跨文件夹拖拽会自动移动;
- 新建、重命名、删除文件夹(删除时会话变为「未分类」,会话不删除);
- 文件夹内可直接「新建会话」(自动归入该文件夹)与「新建子文件夹」;
- 未分类会话列在文件夹之后,不再单独占分区标题。
会话行与状态¶
会话行对齐 DSH 0.2.1 原生语义的状态点:等待交互/阻塞(黄)、运行中(蓝·脉动)、手动未处理(橙·光环)、已完成未读(绿)、空闲(灰),实时更新。无标题会话优先显示首条提问文本,其次「未命名 · 最近活动时间」。
⋯ 菜单支持:标记为未处理、移动到文件夹(含嵌套树)、重命名、分叉(子会话继承源会话文件夹)、归档、复制会话 ID。
待处理会话概览¶
搜索框下方实时展示「哪个工作区的哪个文件夹有待处理」:
- 待处理包括:等待交互(审批、方案确认、提问等 agent 阻塞场景)、手动「未处理」标记、已完成未读,按优先级排列;
- 按 工作区 → 文件夹(或未分类) 分组,组头显示位置与数量,可折叠;
- 点击会话行直接打开;无待处理时区域隐藏;
- 数据来自 DSH 0.2.1 全局会话状态 hook。
手动「未处理」标记通过 ⋯ 菜单操作,不会因打开会话自动清除;持久化到 ~/.dsh/dshorg-manual-unread.json。被标记会话出现在待处理区域,状态点为橙色带光环。
搜索与保留的原生操作¶
- 标题搜索开箱即用;消息全文搜索依赖 host 侧
@deepseek-ai/dsh-session-query-sqlite(见下文配置)。 - 搜索时隐藏分组视图,按标题/消息分组展示结果。
- 仍保留:打开/重命名/分叉/归档会话,各入口新建会话,工作区的添加/重命名/删除等。
安装与启用¶
插件以当前 dsh 进程权限运行;安装前建议在 GitHub 查看源码与 MIT 许可证。
从 GitHub 安装(README 推荐):
dsh plugin --profile web add https://github.com/a1137261060/dsh-session-organizer/archive/refs/heads/main.tar.gz
本地开发可用 link 方式(改代码后重启 dsh web 加载):
dsh plugin --profile web add link:<插件绝对路径>
安装后重启 dsh web 服务并刷新页面,侧边栏即变为分组视图。
消息全文搜索的前提¶
DSH 组合默认对 session-query-sqlite 为 openAt: never(关闭)。若需消息全文搜索,在 profile 的 cordis.patch.yml 中覆盖:
- id: session-query-sqlite
config:
path: 'C:/Users/<你>/.dsh/session-search.db' # 持久化索引路径(POSIX 同理)
openAt: first-search
未开启时消息搜索会提示失败,标题搜索不受影响。
典型用法¶
README 中的操作路径可概括为:
- 顶部:
会话(新建)、工作区(添加)、分组(新建分组); - 工作区行
⋯:移动到分组、新建会话、新建文件夹、重命名、删除; - 文件夹行悬停:新建会话、新建子文件夹、重命名、删除;
- 会话行
⋯:标记为未处理、移动到文件夹、重命名、分叉、归档、复制会话 ID; - 利用搜索框下方待处理区域跨工作区跳转需处理的会话;
- 工作区名、文件夹名、会话名完整显示(自动换行);整行可点击,拖拽时使用独立 MIME
application/x-dshorg。
数据持久化与结构¶
- 分组与文件夹:
localStorage(快速渲染)+ host 磁盘~/.dsh/dshorg-groups.json、~/.dsh/dshorg-session-folders.json; - 换浏览器、清缓存、重启 dsh web 后配置不丢;工作区删除或会话归档/删除时会自动清理相关归属;
- 工作区列表未加载完成时不会误清数据。
包内结构(摘自 README):
dsh-session-organizer/
├── package.json
├── cordis.patch.yml
├── lib/
│ ├── index.js # host:/api/dshorg/* 磁盘持久化
│ └── client.js # client:替换 sidebar.workspaces
├── LICENSE
└── README.md
实现为自包含模式:client 经 window.__ModuleLoader__.load 加载(仅依赖 react),host 为 ESM(node:fs / node:path),无第三方运行时依赖。
适用场景与注意¶
适合:在 DSH Web 侧栏同时管理多工作区、多会话,需要分组/文件夹、待处理一览和拖拽整理的用户。
务必注意:
- 与同样替换
sidebar.workspaces的插件(如dsh-workspace-hub、dsh-session-categories)互斥,请勿同时安装; - 针对 DSH 0.2.1 系 API 适配,升级 DSH 后若槽位或服务变更可能需要插件更新;
- 插件属社区生态(SkillHub 等为独立目录站,与 DeepSeek / 幻方无官方从属关系),星标与维护节奏以 GitHub 为准。
结尾¶
dsh-session-organizer 把工作区分组与会话文件夹合并进一个 Web 侧栏插件,并补上状态点、待处理概览与搜索,减少「双插件」组合带来的冗余与冲突。需要安装命令与配置细节时,以 README 为准:
- 目录页:https://www.skillhub.cn/plugins/a1137261060/dsh-session-organizer
- GitHub:https://github.com/a1137261060/dsh-session-organizer