Vai al contenuto principale
Y

dsh-session-folders

yinqisy/dsh-session-folders

File DeepSeek Harness conversations into folders inside the sidebar's own session tree — decorates the official list instead of replacing it.

Installazione

dsh plugin --profile web add github:yinqisy/dsh-session-folders

README

会话简单分类文件夹

简体中文 | English

给 DeepSeek Harness 的侧边栏加一层「文件夹」:把对话收纳进分类里,可折叠、可拖动排序,拖进拖出即可改变归属。它不替换官方会话列表,只是在官方那棵树上做装饰。

效果

会话                                  +
DSAI                    全选  ▣+  ⋯          ← 新建分类按钮就在工作区行里
  ⌄ MC                    4             ⋯     ← 分类,可折叠、可拖动排序
      对话 A
  ⌄ 插件                  1             ⋯
      对话 B
  ⌄ 未分类                                    ← 拖到这里即移出分类
  • 工作区行:官方原有的按钮全部保留;本插件在「全选」右侧插入一个文件夹+加号按钮,点它在行下方就地展开输入框,回车建分类。
  • 分类头:点标题折叠/展开,⋯ 可重命名或删除(删除两段式确认,不会误删);把对话拖到分类头上即归入;把一个分类头拖到另一个上即调整顺序。
  • 未分类头:可折叠,也是把对话「移出分类」的投放目标。
  • 对话行:完全是官方行,点击、⋯ 菜单、置顶、归档、拖拽排序、其它插件的行内按钮全部照常。

工作原理

不移动任何官方节点:

  1. 把每个工作区分组变成 flex 列,分类头作为自己的节点插入其中;
  2. 给官方行设置 CSS order,让它们落在各自分类的「波段」里;
  3. 折叠只是给对应行加 display:none,展开即恢复;
  4. 行的身份直接读官方已经打好的 data-row-key(workspace:<id> / session:<id>),不依赖 React 内部结构。

官方的「展开其余 N 个会话」截断控件会被隐藏并自动点开一次,所以所有对话默认全部展开,分类也总能看到完整列表。

整个同步过程由一个只关注会话树区域的 MutationObserver 驱动、按帧节流,且每一步都包在 try/catch 里:万一官方 DOM 结构变了,插件什么也不做,侧边栏保持原样。

与中文增强套件兼容

已验证与 deepseek-harness-zh_pro v0.11.1 共存无冲突:官方行与官方槽位都原样保留,所以它的归档视图、批量选择、删除会话的行清理等功能全部继续有效。

两者互不重叠:

面zh_pro本插件
槽位注册conversation.input.left、sidebar.right.pane.tab、settings.section无
语言命名空间自己的命名空间session-categories
行 iddsh-zhsession-categories
CSS哈希类名仅 dsh-scf-* + 主题 token
DOM读写官方行只插入 [data-dsh-scf] 节点、设置 order / display

分组波段的起始 order 特意定在 1000 而不是 0,这样外部插件以默认 order:0 注入的节点会落在「工作区行」与「分类夹」之间,而不是卡进两个分类中间。

数据位置

<DSH_PROFILE_DIR>/data/session-categories/state.json

插件不会在工作区目录里创建、移动或改名任何文件,也不会碰会话日志。删除分类只是解除归属,对话会回到「未分类」。

安装

dsh plugin --profile web add github:YinqiSY/dsh-session-folders

或者在插件管理里以本地目录方式安装(开发时更常用)。

Agent 工具

同一套操作也暴露为 session_categories 工具(list / create / rename / delete / assign / unassign),与 UI 调用完全相同的宿主函数。

护栏

在桌面端,只要有一个 profile 条目没激活,整个 web 启动就会失败,所以:

  • 宿主条目同步激活,只把注册延后到服务就绪(whenService);
  • 客户端 apply 永不抛异常,DOM 层会把每次行数变化(包括掉到 0)和任何失败写入 <数据目录>/client.log,日志超过 256 KB 自动清空。

更新记录

1.0.0

  • 首个版本:在侧边栏的工作区分组里用文件夹收纳对话,可折叠、可拖动排序、拖进拖出改变归属。
  • 分类与归属持久化在 DSH 配置目录,不触碰工作区文件与会话日志。
  • 自动隐藏并展开官方的「展开其余 N 个会话」截断,默认展示全部会话。
  • 修复:官方控件分批展开时只放出部分会话,现在最多重试三次直到全部展开。
  • 修复:归档视图里的归档会话无法拖动,现在可以直接拖进分类。

许可

MIT

Plugin correlati