🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

会话折叠 ayuanxx-max/dsh-session-accordion

DeepSeek Harness
ayuanxx-max1 天前有提交已提供中文文档扫描:未发现敏感能力

DSH 会话交互折叠功能 · DSH Session Turn Accordion

31.5/100
综合分
2
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/11/3 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add ayuanxx-max/dsh-session-accordion
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么
dsh 原生插件 · ui
装得上吗
本站尚未做安装检查
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 1 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🟢 扫描:未发现敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。

扫描于 2026/11/2(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

DSH 会话交互折叠:把 DSH 对话轮次折叠成一行(时间标签 + 问题摘要),只保留最新一条展开。客户端插件,无需改动核心代码。

README

由 DeepSeek 最新模型翻译生成
DSH 会话交互折叠功能 · DSH Session Turn Accordion 30 秒理解:把 DSH 会话里每一轮对话折叠成一行(时间胶囊 + 问题摘要),只保留最新一条展开。纯客户端插件,不改核心。 兼容 DSH Desktop / Web;安装见下方「安装」,卸载见「卸载」。 会话管理示意 会话折叠 会话折叠演示 分叉树排列 分叉树演示 📖 会话管理指南(折叠 + 分叉树组合用法) 平台支持与路线图 | 平台 | 状态 | | Windows 11(DSH Desktop) | ✅ 稳定运行(当前版本) | | Ubuntu | 🧪 测试中,尚未承诺稳定 | | macOS | 📋 计划中 | 修复与功能调整的优先级按评论 / 留言的反馈量排序——遇到问题请直接开 issue 或留言,同类反馈越多越先修。欢迎提交你所在平台的环境信息。 相关插件 - dsh-session-fork-tree —— 分叉会话以树状排列在侧边栏 - awesome-dsh-plugin —— DSH 插件精选列表 把 DSH Web 会话里的每一次交互压成一行,只保留最近一次展开;点提问行展开,执行过程另行单独点开。
展开完整文档(README 剩余 1 节)
DSH 会话交互折叠功能 · DSH Session Turn Accordion

30 秒理解:把 DSH 会话里每一轮对话折叠成一行(时间胶囊 + 问题摘要),只保留最新一条展开。纯客户端插件,不改核心。

兼容 DSH Desktop / Web;安装见下方「安装」,卸载见「卸载」。

会话管理示意

会话折叠

会话折叠演示

分叉树排列

分叉树演示

📖 会话管理指南(折叠 + 分叉树组合用法)

平台支持与路线图

| 平台 | 状态 |
| Windows 11(DSH Desktop) | ✅ 稳定运行(当前版本) |
| Ubuntu | 🧪 测试中,尚未承诺稳定 |
| macOS | 📋 计划中 |

修复与功能调整的优先级按评论 / 留言的反馈量排序——遇到问题请直接开 issue 或留言,同类反馈越多越先修。欢迎提交你所在平台的环境信息。

相关插件

- dsh-session-fork-tree —— 分叉会话以树状排列在侧边栏
- awesome-dsh-plugin —— DSH 插件精选列表

把 DSH Web 会话里的每一次交互压成一行,只保留最近一次展开;点提问行展开,执行过程另行单独点开。

Fold every interaction in a DSH Web chat into a single line and keep only the latest one open. Click a question row to expand it; the execution process opens only when you click its own header.

中文 · English

这是什么

一个 DSH(DeepSeek Harness)客户端插件。它不修改 app.asar、不碰核心 UI 源码,只在渲染层做三件事:

1. 每个历史交互整轮收起,折叠成固定一行:左侧时间胶囊 MM-DD HH:mm + 单行提问摘要(超出省略)。
2. 只保留最近一次交互展开;打开任何会话、切换工作区/会话、产生新交互,都会把展开态重置到最近一条(之前手动展开的也会被收起)。
3. 点折叠行 → 该轮展开,同时把其它已展开的轮收起;再点提问 → 收回去。

执行过程(思考、工具调用、步骤)不跟着展开:核心本身在回答结束时会收起过程,只有你单独点「过程摘要」那一行才会展开。

效果

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

安装

npm(推荐)

桌面版(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 再启动;卸载:

dsh plugin --profile desktop remove dsh-session-accordion
以下为源码方式(开发 / 离线环境):

前置:能跑 DSH Web UI 的宿主 —— Windows / macOS 桌面版,或 Linux 上的 dsh web。profile 名随宿主不同:桌面版默认 desktop,dsh web 默认 web,自定义 profile 用你自己的名字。

Windows(PowerShell) powershell
git clone https://github.com/ayuanxx-max/dsh-session-accordion.git
$repo = (Resolve-Path .\dsh-session-accordion).Path
$nm = "$env:USERPROFILE\.dsh\profiles\desktop\node_modules"
New-Item -ItemType Junction -Path "$nm\dsh-session-accordion" -Target $repo

Linux / macOS(bash) bash
git clone https://github.com/ayuanxx-max/dsh-session-accordion.git
repo="$(cd dsh-session-accordion && pwd)"
profile="${DSH_PROFILE:-web}" # 桌面版改成 desktop
mkdir -p "$HOME/.dsh/profiles/$profile/node_modules"
ln -sfn "$repo" "$HOME/.dsh/profiles/$profile/node_modules/dsh-session-accordion"

符号链接必须是绝对路径:相对路径在 profile 目录变化后会失效。
也可以一条命令完成(含 package.json 备份与合并):bash scripts/install.sh --profile web --apply。
Windows 对应:powershell -ExecutionPolicy Bypass -File scripts\install.ps1 -Profile desktop -Apply。

方式 B:直接装 Release 包(无符号链接,Linux 下最省事) bash

pnpm 会把这枚 tarball 复制进 profile,不依赖符号链接 / junction

dsh plugin --profile web add /path/to/dsh-session-accordion-2.5.3.tgz

再把 "dsh-session-accordion" 加进 dsh.profile.bundles,重启 DSH

升级时下载新 tarball 再执行一次即可,不需要 git pull。

登记到 profile(三种系统相同) jsonc // ~/.dsh/profiles/<profile>/package.json {
"dependencies": {
"dsh-session-accordion": "link:/absolute/path/to/dsh-session-accordion"
},
"dsh": {
"profile": {
"bundles": ["dsh-session-accordion"]
}
}
}

4. 完全退出 DSH 再启动(profile 层改动,刷新网页无效)。
5. 设置 → 对话 → 工作步骤收起时机 = 回答结束后(插件依赖这个前置,过程才会自动收起)。

复制进 node_modules 也能用,但链接方式升级最省事:git pull 后重启即可。

卸载

1. 从 package.json 的 dependencies 与 dsh.profile.bundles 中删掉 dsh-session-accordion。
2. 删掉链接:Windows Remove-Item node_modules\dsh-session-accordion;Linux/macOS rm ~/.dsh/profiles/<profile>/node_modules/dsh-session-accordion(只删链接,不动源码)。
3. 重启 DSH。

工作原理

| 关键点 | 说明 |
| 挂载点 | 客户端插件(dsh.client,platform: web,immediately: true),随 Web 应用加载一次,天然覆盖所有工作区与会话 |
| 轮次分组 | 聊天流容器 [data-slot="conversation.chat.flow"] 下,每个渲染节点带 [data-chat-turn="<turnId>"];同 turnId 归为一轮 |
| 提问识别 | 轮内包含 class 以 _bubble 结尾的元素(用户/steering 气泡共用)的节点 |
| 过程识别 | data-chat-flow-kind="turn-process" 的节点,其内部 button[aria-expanded] 是核心原生折叠开关 |
| 折叠方式 | 给整轮除提问外的节点打 data-ac-hidden(display:none),提问行用伪元素画时间胶囊与摘要,原内容 visibility:hidden |
| 状态 | 按 turnId 存在内存 Map;未知轮次默认「最后一轮展开」,因此切换会话、历史回看都自动收敛 |
| 时间 | 优先读 React fiber 上的 props.node.data.time(不受悬停影响),退回原生时钟文本,都没有就不显示 |
| 自愈 | MutationObserver + 1.5 秒兜底巡检,React 重渲染后重新贴状态 |

设计取向:只叠加,不侵入。核心的折叠状态、流式输出、滚动锚定都不接管;结构认不出时插件什么都不做,只在 console 打一条 warn。

诊断

页面 DevTools Console: js
__acReport()

输出每一轮的 id / expanded / stamp / summary / items。结构变化(DSH 升级后 DOM 改名)时,看这个能立刻定位是「分组失败」还是「时间取不到」。

兼容性

| 平台 / 引擎 | 状态 | 说明 |
| Windows(DSH 桌面版,Electron/Chromium) | ✅ 主力验证 | 本轮开发基准 |
| macOS(桌面版;Tauri/WebView 需较新内核) | ✅ 设计兼容 | 只用标准 mask-image + 内联 SVG,无平台 API |
| Ubuntu / Debian 等 Linux(Chrome / Edge / Chromium) | ✅ CI 验证安装链路 | 安装脚本、打包、安装冒烟测试跑在 ubuntu-latest 上 |
| Linux 上的 Firefox | ⚠️ 未实测 | 用到 mask-image(Firefox 支持无前缀写法);最坏情况只失去渐隐,不影响折叠 |

- 时区:时间胶囊用浏览器时区。Linux 服务器多为 UTC,此时显示的是 UTC;在 Console 执行
window.__dshAccordion = { timeZone: 'Asia/Shanghai' } 后刷新页面即可覆盖。
- 动态效果:尊重系统「减少动态效果」(prefers-reduced-motion),开启后不播放展开淡入。
- 字体:时间胶囊与摘要列按像素定宽,Ubuntu / SF 字体下宽度略有差异,不影响布局。

已知限制

- 依赖 DSH 聊天面板的内部 DOM 属性(data-chat-turn 等),属非公开契约,上游改版可能失效;失效时插件静默不动作,不会破坏界面。
- 折叠行是自绘的一行,行内链接需先展开再点。
- 时间取自提问节点的事件时间;极少数节点没有 time 时不显示时间,只显示摘要。
- 未发布到 npm,按上面的本地 link 方式安装。

同类项目

DSH 生态里已有若干「回合折叠」插件,取舍不同:

| 项目 | 形态 | 与本项目的差别 |
| a179-sanae/dsh-auto-collapse | 把正文之间的思考/工具/上下文合成二级折叠,保留原生回合摘要 | 答案始终可见;不限制同时展开的轮数 |
| leon-zym/dsh-fold-turns | 完成回合折成一行 Worked for …,保留用户消息与回答 | 已标记弃用(DSH 0.1.5+ 原生支持过程折叠) |
| tntcannon5000/dsh-chat-fold | 在最终回答上方插入 disclosure | 回答不隐藏;不是手风琴 |
| 本项目 | 整轮(提问 + 回答 + 过程)压成一行,只允许一条展开 | 空间优先:点开才看该轮内容 |

选择建议:想「一眼扫完所有答案」用上面那类;想「一屏看完整个会话骨架、按需展开」用本项目。

许可证

MIT,见 LICENSE。

这是什么

DSH(DeepSeek Harness)的客户端插件。它从不改动 app.asar 或任何核心 UI 源码,只在渲染出的对话记录上叠加三种行为:

1. 每个已完成的交互折叠成一行固定内容:一个时间胶囊(MM-DD HH:mm),加上你提问的单行摘要,过长时省略。
2. 只有最新一次交互保持展开;打开任意会话、切换工作区/会话、或开始新一轮,展开状态都会重置到最新一轮(手动展开的也会折叠)。
3. 点击折叠行会展开该轮,并折叠其他已展开的轮;再次点击提问则折回。

执行过程(思考、工具调用、步骤)不随该轮展开:回答完成时 DSH 会折叠它,只有点击它自己的摘要行才会打开。

界面效果

┌──────────────────────────────────────────────────────────┐
│ 10-28 13:12 Sort these logs by time, dedupe, then… › │ ← folded (one line) ├──────────────────────────────────────────────────────────┤ │ 10-28 12:58 Check the ESP32 pin conflicts › │ ├──────────────────────────────────────────────────────────┤ │ Your full question │ ← expanded (latest) │ …answer body… │ │ ▸ 12 steps · 8s thinking · 4 tool calls (click to open) │ └──────────────────────────────────────────────────────────┘

安装前提:需要能运行 DSH Web UI 的宿主环境,可以是 Windows/macOS 桌面应用,也可以是 Linux 上的 dsh web。配置档名称取决于宿主:桌面应用用 desktop,dsh web 用 web,自定义配置档则用你自己的名字。

Windows(PowerShell) powershell
git clone https://github.com/ayuanxx-max/dsh-session-accordion.git
$repo = (Resolve-Path .\dsh-session-accordion).Path
$nm = "$env:USERPROFILE\.dsh\profiles\desktop\node_modules"
New-Item -ItemType Junction -Path "$nm\dsh-session-accordion" -Target $repo

Linux / macOS(bash) bash
git clone https://github.com/ayuanxx-max/dsh-session-accordion.git
repo="$(cd dsh-session-accordion && pwd)"
profile="${DSH_PROFILE:-web}" # use desktop for the desktop app
mkdir -p "$HOME/.dsh/profiles/$profile/node_modules"
ln -sfn "$repo" "$HOME/.dsh/profiles/$profile/node_modules/dsh-session-accordion"

符号链接必须用绝对路径;用相对路径的话,配置档目录一挪就断。
也可以一条命令搞定(会先备份再合并 package.json):bash scripts/install.sh --profile web --apply。
Windows 上对应:powershell -ExecutionPolicy Bypass -File scripts\install.ps1 -Profile desktop -Apply。

方案 B:安装发布包 tarball(不用符号链接 / junction) bash

pnpm copies the tarball into the profile; no symlink or junction involved

dsh plugin --profile web add /path/to/dsh-session-accordion-2.5.3.tgz

then add "dsh-session-accordion" to dsh.profile.bundles and restart DSH

升级时下载新 tarball,再跑一遍命令即可,不用 git pull。

在配置档里注册(各系统都一样) jsonc // ~/.dsh/profiles/<profile>/package.json {
"dependencies": {
"dsh-session-accordion": "link:/absolute/path/to/dsh-session-accordion"
},
"dsh": {
"profile": {
"bundles": ["dsh-session-accordion"]
}
}
}

4. 完全退出 DSH,再重新启动(这是配置档层的改动,刷新页面不够)。
5. 设置 → 聊天 → 何时折叠工作详情 = 完成时。插件依赖这一项,让过程自己折起来。

把仓库直接复制进 node_modules 也能用,但用符号链接的话,升级只需 git pull 再重启。

卸载

1. 从 dependencies 和 dsh.profile.bundles 里删掉 dsh-session-accordion。
2. 删掉链接:Windows 用 Remove-Item node_modules\dsh-session-accordion;Linux/macOS 用 rm ~/.dsh/profiles/<profile>/node_modules/dsh-session-accordion(只删链接,源目录保留)。
3. 重启 DSH。

工作原理

| 要点 | 细节 |
| 挂载 | 客户端插件(dsh.client、platform: web、immediately: true),随 Web 应用一起加载一次,因此覆盖所有工作区和会话 |
| 轮次分组 | 在 [data-slot="conversation.chat.flow"] 内,每个渲染节点都带 [data-chat-turn="<turnId>"];轮次 id 相同的节点归为同一轮 |
| User node | 子树中包含 class 以 _bubble 结尾元素的节点(用户气泡和 steering 气泡共用这个 class) |
| Process node | 带 data-chat-flow-kind="turn-process" 的节点;它的 button[aria-expanded] 是内置折叠控件 |
| Folding | 给该轮所有非用户节点打上 data-ac-hidden(display:none);用户行用伪元素绘制胶囊和摘要,真实气泡则设为 visibility:hidden |
| State | 内存中的 Map,以 turnId 为键;未知轮次默认「最后一条展开」,所以切换会话和重载历史会自行收敛 |
| Timestamp | 先读 React fiber(props.node.data.time),再读原生时钟文本;两者都没有就不编造 |
| Self-healing | MutationObserver 加 1.5 s 安全扫描,在 React 重新渲染后重新应用状态 |

设计立场:分层,绝不侵入。核心折叠、流式输出和滚动锚定保持原样;结构无法识别时插件什么都不做,只记一条 warn。

诊断

在页面 DevTools 控制台里: js
__acReport()

它会按轮次打印 id / expanded / stamp / summary / items。上游 UI 改动后,这能立刻告诉你分组失败还是时间戳丢了。

兼容性

| 平台 / 引擎 | 状态 | 说明 |
| Windows(DSH 桌面端,Electron/Chromium) | ✅ 主要目标 | 开发基线 |
| macOS(桌面应用;Tauri/WebView 需要较新的引擎) | ✅ 设计上可用 | 只用标准 mask-image 加内联 SVG,不碰平台 API |
| Ubuntu / Debian 及其他 Linux(Chrome / Edge / Chromium) | ✅ 安装路径已在 CI 验证 | installer、打包和安装冒烟测试跑在 ubuntu-latest 上 |
| Linux 上的 Firefox | ⚠️ 未实测 | 用到 mask-image(Firefox 提供无前缀属性);最坏情况是淡出效果丢失,折叠仍可用 |

- 时区:时间胶囊用浏览器时区。Linux 服务器常是 UTC,所以行内显示 UTC;在控制台执行 window.__dshAccordion = { timeZone: 'Asia/Shanghai' } 再刷新即可覆盖。
- 动效:遵循 prefers-reduced-motion;开启时跳过展开淡出。
- 字体:胶囊和摘要列按像素定宽,Ubuntu/SF 字体会让宽度略有偏移,但不会破坏布局。

已知限制

- 依赖 DSH 聊天面板的内部 DOM 属性(data-chat-turn 等)。这是私有约定,上游重设计可能失效;届时插件会安全失败,什么都不做。
- 折叠行是自绘的,问题里的链接需要先点一下展开。
- 时间戳取自问题节点的事件时间;极少数没有 time 的节点只显示摘要。
- 未发布到 npm;请用上面给出的本地链接安装。

类似项目

DSH 生态里已有几个轮次折叠插件。它们做了不同的取舍:
| 项目 | 形态 | 与本文项目的区别 |
| a179-sanae/dsh-auto-collapse | 把正文之间的推理、工具、上下文块合并进次级折叠区,保留原生轮次摘要 | 答案始终可见;可以同时展开多个轮次 |
| leon-zym/dsh-fold-turns | 把已完成的轮次折叠成一行 Worked for …,保留用户消息和答案 | 已标记为废弃(DSH 0.1.5+ 原生折叠过程) |
| tntcannon5000/dsh-chat-fold | 在最终答案上方插入折叠区 | 答案保持可见;不是手风琴式 |
| 本文项目 | 把整个轮次(问题 + 答案 + 过程)折叠成一行,且只允许一个轮次展开 | 空间优先:点击某一行即可阅读该轮次 |

想一眼扫完所有答案,选前者;想把整个会话骨架放在一屏里、按需展开轮次,选本文项目。

许可证

MIT,见 LICENSE。
预览分享卡片长什么样 ↓ayuanxx-max/dsh-session-accordion
分享 · DeepSeek Harness Hub
ayuanxx-max/dsh-session-accordion

DSH 会话交互折叠功能 · DSH Session Turn Accordion

这是你的仓库?认领条目

回到顶部