dsh-session-accordion:把 DSH 会话每轮压成一行,只保留最新展开

前言

在 DSH(DeepSeek Harness)里做长会话时,聊天流会按轮次堆叠:提问、回答、思考与工具步骤各占一块区域。想快速回顾「这一会话问过什么、顺序如何」,需要反复滚动;若多轮同时展开,一屏能扫到的信息更少。核心 UI 不会替你把「整轮交互」收成摘要行,也不会强制「同一时间只展开一轮」。

下面介绍社区客户端插件 dsh-session-accordion(维护者 ayuanxx-max):在渲染层把每一轮对话折叠成固定一行(时间胶囊 + 提问摘要),默认只展开最近一次交互;不修改 app.asar、不碰核心源码。插件已收录 awesome-dsh-plugin 与 dshbase,GitHub 仓库见 ayuanxx-max/dsh-session-accordion。

这是什么

dsh-session-accordion 是 DSH 的 客户端插件(dsh.client,platform: web,随 Web 应用加载)。它在聊天 transcript 上叠加三种行为:

  1. 每个历史交互整轮收起,折叠成一行:左侧时间 MM-DD HH:mm(浏览器时区)+ 单行提问摘要,过长省略。
  2. 只保留最近一次交互展开;打开会话、切换工作区/会话、产生新交互时,展开态重置到最新一条(此前手动展开的也会被收起)。
  3. 点击折叠行展开该轮并收起其它轮;再点提问行可收回去。

执行过程(思考、工具调用、步骤)不随「展开该轮」一起打开:需在核心设置里让过程在回答结束后收起,只有你单独点「过程摘要」行才会展开过程。这与「只把正文之间的步骤合成二级折叠、答案始终可见」类插件的取向不同;本插件优先 一屏看清会话骨架,按需展开整轮内容。

兼容 DSH Desktop / Web。README 中的平台路线图:Windows 11(DSH Desktop)为当前稳定验证环境;Ubuntu 测试中;macOS 计划中。修复优先级按 issue/留言反馈量排序。

核心功能

会话折叠(手风琴)

折叠行示意(来自 README):

┌──────────────────────────────────────────────────────────┐
│ 10-28 13:12   把这批日志按时间排序、去重,然后…        › │   ← 折叠(一行)
├──────────────────────────────────────────────────────────┤
│ 10-28 12:58   帮我看下 esp32 的引脚冲突                  › │
├──────────────────────────────────────────────────────────┤
│ 你的提问(全文)                                          │   ← 展开(最近一次)
│ …回答正文…                                                │
│ ▸ 12 步 · 思考 8s · 工具 4 次(点开才展开)               │
└──────────────────────────────────────────────────────────┘

与分叉树插件组合

同作者提供 dsh-session-fork-tree,在侧边栏以树状排列分叉会话。仓库内另有 会话管理指南(折叠 + 分叉树组合用法),需要分叉与会话折叠一起用时可直接查阅。

实现要点(便于排查)

插件通过聊天流容器 [data-slot="conversation.chat.flow"] 与 [data-chat-turn="<turnId>"] 分组轮次;折叠状态按 turnId 存在内存,并用 MutationObserver 与定时巡检在 React 重渲染后恢复。若 DSH 升级导致 DOM 契约变化,插件会静默不动作并在 console 打出 warn,不会破坏界面——属已知限制。

安装与启用

插件以当前 DSH 进程权限在客户端运行;安装前建议浏览仓库源码与 MIT 许可证。

npm(README 推荐) 示例版本为 2.5.5(与仓库 package.json 中当前版本号可能不一致,安装时以你选用的 tag/版本为准):

# 桌面版(profile=desktop)
dsh plugin --profile desktop add dsh-session-accordion@2.5.5

# 或免全局安装
npx -y @deepseek-ai/dsh plugin --profile desktop add dsh-session-accordion@2.5.5

# Web UI(profile=web)
dsh plugin --profile web add dsh-session-accordion@2.5.5

安装后完全退出 DSH 再启动(profile 层改动,仅刷新网页无效)。

启用前置(README 明确要求):

  1. 打开 DSH 设置 → 对话。
  2. 将 工作步骤收起时机 设为 回答结束后,过程才会在回答结束时收起,与插件的展开逻辑一致。

卸载示例(桌面 profile):

dsh plugin --profile desktop remove dsh-session-accordion

源码目录安装、Release tarball、符号链接等方式见 GitHub README「安装」;离线或开发环境可按文档中的 scripts/install.sh / install.ps1 操作。

典型用法

  1. 安装并重启 DSH,确认「工作步骤收起时机」已设为回答结束后。
  2. 在同一会话中连续多轮提问;较早轮次应显示为单行(时间 + 摘要),最新一轮保持展开。
  3. 点击某一折叠行:该轮展开,其它已展开轮收起;再点该轮提问区域可折叠回去。
  4. 需要看某轮的工具/思考过程时,在该轮展开后,单独点击过程摘要行(与展开整轮无关)。
  5. 切换会话或工作区后,展开态应回到该会话的最新一轮。

诊断:在页面 DevTools Console 执行:

__acReport()

可查看每轮的 id / expanded / stamp / summary / items,用于区分「轮次分组失败」还是「时间取不到」。Linux 服务器时区多为 UTC 时,可在刷新前设置:

window.__dshAccordion = { timeZone: 'Asia/Shanghai' }

适用场景与注意

适合:长会话、多轮试错、需要纵向扫一遍「问过什么、何时问」而不必同时阅读所有回答全文;与分叉树插件组合管理复杂会话树。

注意:

  • 依赖 DSH 聊天面板内部 DOM 属性(如 data-chat-turn),非公开契约,上游改版可能导致插件失效。
  • 折叠行是自绘一行,行内链接需先展开该轮再点击。
  • README 说明 package 尚未发布到 npm 时,需按文档的本地 link / tarball 等方式安装;若你使用的 DSH 渠道已提供上述 dsh plugin add 命令,则以实际环境为准。
  • 插件分类为客户端,不改核心;社区目录 skillhub.cn 为独立生态站点,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-session-accordion 把 DSH Web/Desktop 会话里每一轮交互收成一行摘要,并限制同时只展开一轮,便于在长 transcript 里保持可读骨架。需要安装命令、卸载、兼容性与同类插件对比时,以仓库 README 为准。

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

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

小夜