工作区内会话分类,支持拖拽排序、分组折叠、任务状态提示及路径添加工作区。
安装
# Release 预构建包
dsh plugin --profile web add "https://github.com/nuet9/dsh-session-categories/releases/download/v1.0.1/local-session-categories-1.0.1.tgz"
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:nuet9/dsh-session-categories
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
对话分组收纳,拖拽调整顺序
新对话按创建时间排列,旧对话不因继续聊天而跳位;运行与待回答状态集中显示,减少翻找和来回切换。
为 Harness 左侧工作区提供独立的会话分类:工作区 → 分类 → 会话。分类属于显示与整理信息,不改变工作区成员、会话 cwd、日志或文件。
功能亮点
- 添加工作区:顶部“+ 添加工作区”输入 Host 上已有文件夹的完整路径即可注册,无需切回原始列表。当前版本不提供目录选择弹窗,也不自动创建文件夹。
- 拖拽排序:对话可拖入同工作区分类,通过细线落点插入排序;工作区也可拖动调整当前浏览器内的显示顺序。
- 稳定时间顺序:未手动排序的对话按创建时间倒序,继续聊天不会改变位置;已手动排列的顺序保留。
- 未分类可收起:普通分类、未分类和工作区均可折叠;未分类按工作区记住折叠状态,搜索时临时展开。
- 状态一眼可见:运行转圈、等待回答/授权/计划确认、完成未读提示;刷新不保证保留完成未读状态。
使用
- 顶部“进行中”列出正在运行的对话及数量;运行行用Harness原生StateDot同款转圈替代文字徽标(14px、1.5秒动画,支持减弱动态效果)。点击标题直接打开,不受工作区/分类折叠、搜索和归档开关影响。
- 后台生成结束且未查看的对话进入顶部“生成完成”列表,普通分类行显示绿色完成圆点及“生成完成”。打开对话或再次运行后消除提示。订阅原生
useSessionStatus的completionUnread,遵循原生当前客户端语义,不新增完成持久化或系统通知;刷新不保证保留此前未读状态。 - 工作区行
+新建分类;↗新建该工作区的会话,新会话默认未分类。 - 会话行
⋯→ 移动到分类;选择“未分类”解除归类。 - 分类名称前的箭头折叠/展开;
✎重命名;×删除分类,确认后其中会话回到未分类。 - 可将分类内的会话行拖到同工作区的目标分类或“未分类”,通过行间细线指示插入位置,松开保存;不跨工作区移动。也可继续使用会话菜单下拉移动。
- 搜索按会话标题过滤,搜索时展开匹配列表;可勾选显示已归档会话。
- 顶部“原始列表”临时恢复原版管理界面,保留新增工作区、归档、置顶、分支、改会话名等操作。左下细线文件夹SVG按钮再切回分类视图;每次刷新/重新打开默认使用插件分类侧栏,忽略旧版原始列表偏好。
- 按钮统一为细线SVG,32px会话行、16px状态格、悬停/键盘聚焦显示行操作,运行区改为轻分隔线,使用客户端主题色。
- 每组先显示20条,可继续显示。分类数据在 Host 持久保存;工作区折叠状态保存在当前客户端。
实现
Host 使用 storageDomain 的 session_categories 域,workspaces 表,工作区ID作键。每条记录包括 categories 与 assignments;同一服务队列串行提交。删除分类与解除分配一次提交,保存失败不返回成功。分类名去除两端空白,1–100字符,同工作区不区分大小写唯一,最多200分类。
通用RPC /api / session-categories 与工具 session_categories 调用同一 SessionCategories.execute。RPC仅允许owner principal;工作区ID与session membership由Host再次校验。分类视图通过标准useWorkspaces/useSessions读取现有列表,通过uiWorkspace打开/新建会话,不更改其cwd。
客户端通过声明的 sidebar.workspaces 槽位注册可撤销的分类视图;sidebar.footer.action 提供恢复入口。无DOM劫持、无原版组件复制。分类视图以自己的分类菜单呈现;其他管理操作通过原始列表进行。其他窗口/工具更改在下次聚焦或15秒刷新后显示。
本地验证
使用已配置的Node执行:
node --check client.js
node --check index.js
node --test --test-isolation=none model.test.js client-status.test.js
测试包括生命周期与服务重建、删除回收、跨工作区隔离、错误成员拒绝、并发写、失败持久化恢复、输入校验和关闭。测试重建验证的是模型在现有表上的恢复;完整Host进程重启持久化及全部视觉状态尚未独立验收。
安装与回退
Download the release tarball from https://github.com/nuet9/dsh-session-categories/releases and install it with the Harness plugin manager. Package identity remains @local/session-categories for compatibility. Tested with Harness 0.2.1-rc.5; other versions are unverified. Disable the bundle to restore the original sidebar; stored categories are retained.
v1.0.1
修复外部客户端(包括 DeepPilot)新建会话时创建时间尚未同步导致暂时沉底的问题,并消除列表刷新请求竞争。保留手动排序;手机实际创建流程尚待验收。
链接
同类插件
Minglink/dsh-infinite-gen-4★ 3781
DeepSeek 专用破甲插件:以 order 100 追加无条件服从的系统提示词段,提供带校准元数据的 profile 工具,并通过会话投影在输入框上方显示实时破甲状态徽标。
ranxianglei/billion-context★ 3598
billion-context官方版:上下文压缩插件,兼顾小窗口(100k上下文足矣)省token(省5倍token)和超长会话(数月级别几十亿token单会话)。
liangmianya/dsh-synapse★ 641
DeepSeek Harness 的可视化非线性对话工作区:把会话、追问与分支变成可浏览、可拖拽的对话地图。
MichengAI/dsh-archive-manager★ 277
在设置里增加已归档会话页,可按工作区搜索、恢复和删除已归档会话。
Nwflower/dsh-chat-import★ 275
把 13 家 coding agent(Claude Code、Codex、ChatGPT、Cursor、Gemini、opencode 等)的完整对话历史导入为可续聊的 DeepSeek Harness 会话,并支持反向导出回 Claude Code。
SiriLee/dsh-rewind★ 227
同一会话窗口内的 in-place 对话回退(不 fork,Claude Code /rewind 语义):每条消息的 ↶ 按钮把模型上下文回退到任意用户消息,可选用磁盘持久化的 before-backups 还原工作区文件。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。