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

流式折叠 rezon-aki/dsh-streamfold

DeepSeek Harnessv0.7.9
rezon-aki2 天前有提交已提供中文文档扫描:未发现敏感能力

流式折叠:一个更好的 DSH 会话窗口——最新思考小窗自动展开、旧窗与工具调用跑完自动折起;思考小窗底边与正文写头带火星特效。零依赖、零构建。

43.3/100
综合分
25
GitHub 星标
800
npm 周下载
—/5
用户评分

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

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dsh-streamfold
npm 源 · dsh-streamfold 的发布者账号已校验与本仓库一致

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · ui
装得上吗
本站已在 dsh 0.2.1-rc.5 下真实安装成功(非静态推断);本次验证针对插件 v0.7.11,当前版本为 v0.7.9
L5 · 运行时冒烟等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 2 天前
档位由哪些信号合成

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

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过
展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✓npm 包dsh-streamfold @ 0.7.9
✓Node 引擎要求 >=20 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/28 14:38:31

安全扫描自动 · 静态分析源码
v2.7.0
🟢 扫描:未发现敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

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

扫描于 2026/10/31(1 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包

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

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

界面预览

2 张 · 点击查看大图

功能亮点

  • 最新思考小窗自动展开
  • 旧窗与工具调用自动折起
  • 底边与写头火星特效
v0.7.112026-10-29
· 0.7.11 · 调整:README 双语首屏重写——一句话卖点、与官方「工作步骤展示」/ Friendly Steps 的差别表、安装段的兼容性表(engines.dsh 为唯一真源)。 · 调整:新增 20 秒演示 GIF(screenshots/03-demo.gif,640×564 / 8fps,右侧栏已裁掉),README 双语首屏展示折叠与「跑完回到提问」的完整过程。 · 调整:仓库 About 与精选列表条目描述压成一句(差异点前置);npm 检索词补 fold-thinking、tool-calls、long-session、折叠、思考链、长会话。 · 修复:GitHub Release 补传 dsh-streamfold.tgz 发布资产——精选目录的 releases/latest/download/ 之前因无资产而 404。 · 调整:无客户端代码变更(lib/client.js 仍为 229390 B / sha256 5e84ad5f…)。
v0.7.102026-10-29
· 0.7.10 · 调整:长会话的扫描与帧推进开销下降——去掉诊断用的写后强制布局、40ms 后回读与逐行折叠定时器(最重形态首扫 350 行 61→13 ms、700 行 192→21 ms;真机长会话流式扫描 p90 降约 20%,不新增长时间阻塞)。 · 修复:同一个运行回合里步骤越多、扫描越慢(热区正文判定对运行轮 + 最近两轮强制重算,且每次扫描重复多遍全树查询)——正文判定改为缓存 + MutationObserver 定向失效;文本流按节点去重、收尾/运行态改由属性事件驱动;轮收尾标记与提问卡查询改为缓存/一次合并查询;节流补扫只保留一个定时器。假 DOM 计数:运行轮 5→60 步的扫描增量斜率 −72%,稳态扫描节点访问 −23%,同文本节点批处理回调 −94%,流式期间补扫定时器 −94%。 · 调整:诊断面彻底移出本体——发布物不再有 __sfDiag() / probe / 逐帧轨迹 / 成本计数,也不再打常规日志(仅保留失败路径 console.error);逐帧与成本数据改由独立开发插件 dsh-streamfold-dev 在浏览器侧自采样(rAF 帧、长任务、MutationObserver 速率、内存),或直接用浏览器 DevTools/CDP 测量。公开面只剩 __dshStreamfold(state / set / scan / dispose / ...)。 · 调整:lib/client.js 247854 → 229390 B(诊断剥离与查询收敛),仍低于 262144 B 上限。 · 调整:文档对齐——README 双语与 FEATURES 的调试接口改为发布物里实际存在的 __dshStreamfold 公开面;FEATURES 诊断/残余/性能口径同步改为「诊断面已移出本体」。
v0.7.92026-10-17
· 修复:DSH 0.2.1 在「工作步骤展示」下方新增了官方「工作步骤收起时机」行;折叠模式下它与「工作步骤展示」行一起隐藏(该设置在折叠模式没有实际作用),切到官方档时恢复可见。 · 调整:兼容声明补上 DSH 0.2.1-rc.2(dshReleases 矩阵同留 0.2.0-rc.2),engines.dsh 提到包顶层(0.2.1 启动门读顶层字段),README 双语的实测版本与「收起时机」行说明同步更新。
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。

README

由 DeepSeek 最新模型翻译生成
dsh-streamfold · 流式折叠 运行中只保留最新那一个思考窗,其余过程行折成一条摘要;一轮跑完,滑回你的提问。折叠逐帧推进,折起的内容仍可 Ctrl+F 搜到。 演示(20 秒):运行中只留最新思考窗,其余过程收成摘要,跑完滑回你的提问 为什么需要它 长会话里,工具调用与思考过程会把正文淹掉;官方的「紧凑」档在会话还有未加载历史时会折叠失效,历史加载完之前帮不上忙。本插件在官方对话流上做展示增强,折叠按自己的规则走,不依赖历史是否加载完: - 过程不再淹没正文:非运行轮次收成一条「已折叠 N 行 · 点击展开」; - 想看的随时看得见:运行中只留最新那一个思考窗,限高、内部自滚; - 读完一轮不用往回翻:跑完自动回到你这轮的提问处。
展开完整文档(README 剩余 1 节)
dsh-streamfold · 流式折叠

运行中只保留最新那一个思考窗,其余过程行折成一条摘要;一轮跑完,滑回你的提问。折叠逐帧推进,折起的内容仍可 Ctrl+F 搜到。

演示(20 秒):运行中只留最新思考窗,其余过程收成摘要,跑完滑回你的提问

为什么需要它

长会话里,工具调用与思考过程会把正文淹掉;官方的「紧凑」档在会话还有未加载历史时会折叠失效,历史加载完之前帮不上忙。本插件在官方对话流上做展示增强,折叠按自己的规则走,不依赖历史是否加载完:

- 过程不再淹没正文:非运行轮次收成一条「已折叠 N 行 · 点击展开」;
- 想看的随时看得见:运行中只留最新那一个思考窗,限高、内部自滚;
- 读完一轮不用往回翻:跑完自动回到你这轮的提问处。

和官方折叠、Friendly Steps 的差别

| | 官方「工作步骤展示」 | 本插件「折叠」 |
| 什么时候折 | 历史加载完才开始折;还有未加载历史时折不动 | 自己管折叠,不依赖历史是否加载完 |
| 运行中的思考 | 过程行一并折起,只看得到摘要 | 只展开本轮最新那一个思考窗(限高、内部自滚) |
| 跑完一轮 | 停在底部,要自己往回找 | 平滑滑回你这轮的提问处 |
| 找折叠内容 | 折起后要再展开 | hidden=until-found,Ctrl+F 仍能命中 |
| 读到哪一轮 | 往上翻着找 | 那一轮的提问钉在会话顶端 |

和 「过程精简 Friendly Steps」(同属 ui/chat,都折 Think 与工具行)定位重叠,建议二选一;差别主要是上表后三行,以及折叠逐帧推进、3 行一组错峰的节奏。

装完是什么样

- 运行中看得到思考。 自动展开本轮最新的思考窗(限高可调),旧的按宽限折回一行摘要;被取代的、上一轮的窗不再抢滚动。
- 折叠有节奏,不闪。 收起从下往上、一组 3 行、组间 70ms;展开从最上面往下、同样一组 3 行。加载页面、切会话这类跨轮批量场景直接瞬时完成;单轮再长也逐组推进(只有单轮超过 84 行才走瞬时护栏)。
- 跑完回到提问处。 一轮结束,视图平滑滑回你这轮那句话的位置;开启「提问不入折叠」且这一轮里 LLM 问过你(ask_user_question)时,落点改在这一轮最后那张提问卡上并自动把它展开(要你答的是它)。你自己上滚过就不动你。到位后 2 秒内还会纠正图片/代码块迟到落版造成的偏移。
- 置顶显示提问。 读到哪一轮,那一轮的提问就钉在会话顶端(一行,超出省略);它自己在屏幕上时自动让位,点它滑回那句发言。
- 跟随够稳。 底部跟随按帧推进;上滚即停跟,离底出现「回到底部」;在思考小窗或工具正文里滚动不会误触发「停止跟随」。
- 搜索也照顾。 折叠的内容仍可被 Ctrl+F 搜到;搜索期间不抢滚动,滚回窗尾或点回底恢复。
- 小窗火花 / 正文锻打。 思考窗底部的火星随滚动速度变亮变密;正文流式写头每写一段砸出一扇火星。颜色、密度、速度、寿命都可调,关掉即完全不运行。

折叠后的会话:过程行收成一条摘要,穿插正文保留

运行中的思考窗口与底部火花

安装

方式一:DSH 插件面板(推荐) —— 侧栏 →「插件」→「添加插件」,粘贴下面这一行,装完点「立即启用」:

dsh-streamfold

面板装的就是本版(npm 上 latest 即本版,含 provenance)。方式二适合想跟仓库最新代码的人。

方式二:命令行(三种写法):

dsh plugin --profile web add dsh-streamfold # npm 包(推荐)
dsh plugin --profile web add github:rezon-aki/dsh-streamfold # 跟仓库最新
dsh plugin --profile web add https://github.com/rezon-aki/dsh-streamfold

装完重启 profile,然后刷新浏览器页面(客户端代码在页面加载时注入)。

兼容性(package.json 的 engines.dsh 是唯一真源,插件面板与市场也按它判断兼容):

| 插件版本 | 支持的 DSH |
| 0.7.x(本版) | >=0.2.1-rc.1 <0.3.0;实测 0.2.1-rc.2,0.2.0-rc.2 登记为兼容 |
| 0.5.0 | 0.1.7 系列 |
| 0.4.x | 0.1.5 及更早 |

官方「对话显示」档位由 configForms 服务托管;Node >= 20。

卸载:在插件面板里移除,或

dsh plugin --profile web remove dsh-streamfold

重启 profile 即恢复官方行为。

用法

设置 → 通用设置 → 工作步骤展示:这一行由本插件提供(官方那一行在本插件的设置行可用时隐藏,只改可见性、可逆;0.2.1 起官方新增的「工作步骤收起时机」行在折叠档下一并隐藏、切到官方档恢复),里面是官方四档 + 本插件的「折叠」:

| 选项 | 行为 |
| 简洁 / 标准 / 详细 / 完全展开 | 官方原本的四档,文案与行为都跟官方一致 |
| 折叠 | 本插件:运行中的一轮只留一个窗,其余过程收成一条摘要 |

选「折叠」时,官方那一档会被自动停在 完全展开——官方自己不折、不分组,折叠只由本插件做,避免两层折叠打架;档位名与官方设置页同源(取自官方词典),官方改了文案这边跟着变。

专属设置页:设置 → 流式折叠(本文所有开关都在这里,改动即时生效)。

运行中只会自动展开最新那一个思考窗;你自己点开的窗不会被自动收起,被取代的旧窗按「旧窗折叠宽限」(默认 2 秒)折回一行摘要;上滚即停跟,离底时出现回底按钮(小窗与主窗口是同一个按钮)。

安全边界

- 纯客户端展示增强:只读对话 DOM,不发网络请求、不接触凭据、不改官方源码。
- 宿主半区不落任何东西:不读写文件、不注册路由、不导出 Config;设置只存浏览器 localStorage(key dsh-streamfold,按页面源站隔离)。
- 对官方档位只做可逆改动:选「折叠」档时把官方 ui-chat 的 transcriptView 写成 verbose(避免两层折叠)并隐藏官方设置行(0.2.1 起含「工作步骤收起时机」行);从本插件切回官方档会写回所选档并恢复收起时机行,卸载后官方档停在「完全展开」(需要时到官方设置里改回)。
- 卸载即净:设置行、小窗标记、回底按钮与注入样式全部撤掉,不留行内 max-height 与隐藏属性。

配置(22 项)

| 设置项 | 键 | 默认 | 取值/范围 | 说明 |
| 工作步骤展示 | mode | 折叠 | 折叠 / 官方四档 | 选「折叠」时官方档自动停到「完全展开」,避免两层折叠 |
| 折叠历史轮次 | foldHistory | 开 | 开关 | 关掉后:加载页面不再自动折叠历史轮次(只在跑动时折前面的) |
| 保留穿插正文 | keepInterleavedText | 开 | 开关 | 折叠时保留带正文的行,用一条横线与正式回答分开(正文不套限高小窗) |
| 提问不入折叠 | keepUserQuestions | 开 | 开关 | LLM 的提问工具(ask_user_question)与其回复节点始终保留、不折进摘要,且「跑完回到提问处」改落到最后那张提问卡上;关掉则随其余内容一起折 |
| 跟随速度上限 | followMaxSpeed | 240 | 60~2000 px/s | 主动追赶时的速度上限;越小越柔、高速输出时落后越多。内容自身增长的速度不受它限制 |
| 跟随加速度上限 | followMaxAccel | 10000 | 2000~120000 px/s² | 速度变化的上限;调小起步/刹车更柔,调大更跟手 |
| 窗口高度 | windowHeight | 360 | 80~1200 px | 单个思考/穿插正文小窗的最大高度 |
| 运行中自动展开思考 | autoExpandReasoning | 开 | 开关 | 只自动展开本轮最新的那一个;被取代的旧窗按「旧窗折叠宽限」折回一行摘要 |
| 旧窗折叠宽限 | supersedeDelay | 2 | 0~60 秒 | 新的思考窗出现后,旧窗再等多久才自动折回(支持小数) |
| 运行中自动展开工具 | autoExpandTools | 关 | 开关 | 开:运行中最新的工具卡自动展开(用官方卡片自己的折叠/内滚,不套限高小窗) |
| 发消息回到尾部 | returnToTail | 开 | 开关 | 你停在中途(看过置顶、跳转过轮次)时,自己再发一条消息 ⇒ 视图滑回尾部;关掉后一律停在原地,只有滚到底或点「回到底部」才恢复跟随 |
| 平滑系数 | smoothGrow | 0.15 | 0.05~0.9 | 跟随时每帧吃掉多少差距,越小越柔 |
| 离底显示「回到底部」 | showJumpButton | 开 | 开关 | 离开底部时出现回底按钮(跟随中的轻微落后不显示,避免闪烁) |
| 跑完回到提问处 | settleToPrompt | 开 | 开关 | 一轮结束后平滑移到本轮你那句话的位置;开启「提问不入折叠」且本轮有 LLM 提问卡时改落到这一轮最后那张卡(并展开它);你已经自己上滚过就不动你(动效关掉时直接到位) |
| 置顶显示提问 | pinPrompt | 开 | 开关 | 把「你正在看的那一轮」的提问钉在会话顶端:往上滚会跟着换成那一轮,超过一行只显示一行;它自己在视口里时自动让位,点它滑回那句话 |
| 动效过渡 | animations | 开 | 开关 | 关掉则折叠/展开/回底全部瞬时 |
| 小窗火花 | sparks | 开 | 开关 | 运行中思考小窗底部的火星(关掉后不建画布、不排帧) |
| 火花颜色 | sparkColor | #4fa8ff | 颜色 | 火星颜色;核心自动提亮成白热 |
| 正文锻打火花 | forgeSparks | 开 | 开关 | 正文流式写头砸出的火星;写头不动就不砸,跑完自动收手 |
| 锻打火花速度 | forgeSpeed | 1 | 0.2~4 × | 火星飘出去的速度倍率 |
| 锻打火花寿命 | forgeLife | 1.3 | 0.2~5 秒 | 单颗火星活多久(实际在 ±30% 内随机) |
| 火花密度 | sparkDensity | 1 | 0.2~3 × | 火星数量倍率,两种火花共用;越高越密、绘制开销越大 |

设置存在浏览器 localStorage(按 DSH 页面源站隔离)。

诊断

浏览器控制台(__dshStreamfold 是本插件唯一公开的调试出口):

__dshStreamfold.state() // 当前设置 + 官方「工作步骤展示」取值快照
__dshStreamfold.set({ smoothGrow: 0.1, supersedeDelay: 3 })
__dshStreamfold.scan() // 立即按当前 DOM 重扫一次(不改设置)
__dshStreamfold.dispose() // 撤掉全部注入(幂等;卸载后刷新页面即恢复原生)

报问题时附上 DSH 版本与 __dshStreamfold.state() 的输出。逐帧追踪与成本聚合由维护者本地的开发探针插件提供,不在发布物里。

开发与验收

- 手写、无构建:lib/client.js(浏览器半区,包在 window.__ModuleLoader__ 里)、lib/index.js(宿主半区,12 行占位)。
- 改完 lib/.js 后重载插件,并刷新浏览器页面。
- 行锚点全部用官方语义属性:[data-chat-flow]、[data-chat-flow-kind]、[data-chat-turn]、[data-disclosure-row][aria-expanded]、[data-variant=think]、[data-tool]、[data-sample=bash]、[class=_thinkBody]、[class*=_bodyWrap]、[data-context-injection-body]——不用 CSS module 哈希。
- 测试:npm test(test/spark.mjs 28 断言 + test/contract.mjs + test/client-apply.mjs),当前 EXIT=0。

License

MIT
预览分享卡片长什么样 ↓rezon-aki/dsh-streamfold
分享 · DeepSeek Harness Hub
rezon-aki/dsh-streamfold

流式折叠:一个更好的 DSH 会话窗口——最新思考小窗自动展开、旧窗与工具调用跑完自动折起;思考小窗底边与正文写头带火星特效。零依赖、零构建。

回到顶部