dsh-session-topics:DeepSeek Harness 侧边栏会话话题分组插件

前言

DeepSeek Harness (DSH) 官方侧边栏仅支持按工作区分组会话。当同一工作区内存在多个主题时,所有会话会挤在一组,难以按主题拆分。

dsh-session-topics 插件在展示层引入了“话题”轴,将侧边栏渲染为“工作区 → [话题 → 子话题 → 会话] + 未归话题”的结构。它是一个纯客户端插件,不依赖任何 Host 服务,不修改官方数据模型。

核心功能

1. 侧边栏层级结构

侧边栏展示顺序为:工作区 → 话题 → 子话题 → 会话 → 未归话题。
* 新建话题:每个工作区行右侧有 + 按钮,用于在该工作区内新建话题。
* 话题操作:话题行悬停时显示 +(新建子话题)、✎(重命名)、×(删除)。
* 会话时间:会话行右侧显示相对时间(如“刚刚”、“5 分钟前”),每分钟自动刷新。
* 会话打开:点击会话行可正常打开会话。

2. 拖拽交互

本插件接管了官方的拖拽手势,但将排序与归档逻辑分开:
* 调整顺序:将会话拖到另一会话的上/下半,显示插入指示线,用于调整顺序。
* 归入话题:将会话拖到话题标题(含子话题)上,会话归入该话题。
* 移出话题:将会话拖到“未归话题”标题上,会话移出话题回到未归类状态。
* 拒绝跨工作区:跨工作区的拖拽会被直接拒绝。

3. 右键菜单

  • 会话右键菜单:重命名(内联编辑)、分叉会话、归档会话、移出话题。
  • 工作区右键菜单:新建话题、重命名工作区、删除工作区(删除前确认)。

4. 数据持久化

展开/折叠状态、话题归属关系全部持久化到浏览器本地存储,刷新页面或重启 DeepSeek Harness 后均会保留。

安装与操作

安装

在命令行中执行以下命令安装:

dsh plugin --profile web add github:WangXuexin24/dsh-session-topics

临时关闭

在插件市场 → 已安装列表中,关闭本插件卡片的“启用中”开关,然后按提示重启 DeepSeek Harness。

再打开

在同一开关位置将其打开,并重启 DeepSeek Harness。

卸载

在插件市场卡片的“卸载”按钮点击卸载;或使用命令:

dsh plugin --profile web remove dsh-session-topics

升级与验证

  • 升级本地代码:直接修改项目文件,刷新浏览器页面即可(客户端 bundle 每次加载都重新获取)。
  • 验证运行:侧边栏显示“话题”分组结构而非官方纯工作区分组,或运行 node test/smoke.mjs,输出 RESULT: all checks passed。

技术实现与限制

设计原则

  • 零依赖:不依赖 Host 的任何服务,不调用子进程,不生成脚本,不修改 host 文件,不注册工具,零 token 成本。
  • 接管槽位:插件接管了 sidebar.workspaces 槽位(priority: -1),必须实现被替换方的全部操作能力(如会话右键菜单)。
  • 数据存储:话题归属存储在浏览器本地(dsh.session.topics.v2),每次变更会自动备份到 dsh.session.topics.v2.bak。若主存储为空而备份存在,侧边栏顶部会出现恢复条。
  • 滚动契约:必须遵循官方 ui-workspace 的 flex 布局契约(flex:1; min-height:0; flex-direction:column),否则会导致内容无法滚动。

已知限制

  • 话题层级:当前限制为两层(话题 → 子话题)。虽然可修改 MAX_TOPIC_DEPTH 放开限制,但侧边栏宽度可能无法容纳更深嵌套。
  • 数据同步:话题归属数据仅存储在当前浏览器本地,不跨设备同步,也不随 Host 进程持久化。
  • npm 发布:目前未发布至 npm(可选),仅支持从 GitHub 安装。

参考资源

  • GitHub 仓库:https://github.com/WangXuexin24/dsh-session-topics
  • 社区目录:https://www.skillhub.cn/plugins/WangXuexin24/dsh-session-topics
  • 许可证:MIT
羽毛球分组比赛记分
小程序二维码

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

小夜