← Back to home@a179-sanae

dsh-auto-collapse

No description

Stars
63
Language
JavaScript
Created
Aug 14, 2026
Updated
Sep 14, 2026
GitHub repo

Introduction

dsh-auto-collapse

DSH Web 工作段折叠:保留原生一级,把正文之间的思考、工具和上下文合成一个二级;展开后显示原生三级。

English · 插件市场

展示方式

正文 A
▸ 已思考 · 使用了浏览器 · 已注入上下文 · 编辑了文件
正文 B
▸ 正在运行 npm run check
正文 C

每段只有一个二级入口。思考变成工具调用、工具后追加上下文,都继续归入当前段;新正文出现后,后续工作另起一段。只有思考、只有上下文或单条工具也可以成段。

  • 一级:DSH 原生回合摘要。 完成判断、计数、过程正文与最终回答由宿主负责。
  • 二级:插件工作段。 工作中可见,展开原生一级后也保留;默认收起,流式追加保持手动展开意图。
  • 三级:原生工作行。 二级展开后按原顺序展示思考、工具、上下文;每行自己的详情开合保持原样。

混合工作段示例

预览来自浏览器验收场景,使用 DSH 0.1.2-rc.1 原生 disclosure、思考和回合摘要组件。

行为

正文是分组边界,同一 assistant-step 内的“思考—正文—思考”也会切开;Markdown 换行不拆组。纯图片、SVG 和其他正文内容保持原生展示。用户消息、steering、不同 turn 和未知语义节点不会被跨越。

原生一级收起时,受它控制的二级入口一起隐藏,但二级状态保留。若上下文位于原生折叠范围之外,仍保留可访问的二级入口;点击展开会按需打开原生一级。Normal 模式没有原生一级时,二级仍生效。

系统提示词也归入相邻的上下文工作段。有明确回合归属时,它跟随原生一级收起;一级展开后先显示二级,展开二级才显示系统提示词的原生行,详情开关保持原样。

工作摘要显示已发生的动作类型和当前运行信息,不复制推理全文。查找隐藏内容时通过 hidden="until-found" / beforematch 展开所属层级。选中、焦点和需要用户输入的工作保持可达。HMR、切换会话或异常恢复会释放插件控制。

设置 → 插件 → 插件配置仍可编辑“状态提示词”,默认 Deep sleeping...。保存空值恢复官方文字;用时后缀保留。该功能独立于分组,服务晚到或重连不会影响二级。

兼容性与升级

插件验证的 DSH
0.2.x0.1.2-rc.1;0.1.5-rc.2(当前浏览器组件测试夹具)
0.1.80.1.2-rc.1,旧折叠实现
≤ 0.1.60.1.1.x

0.2.0 完全重写了折叠核心。升级后保留并统一二级,删除自建“已处理 X秒”一级行和三级推理全文副本;上下文不再单独拆成二级。旧 statusText 配置继续使用。未知 DOM 节点保留原生展示,其他宿主版本需要另行验证。

安装

已发布版本可用:

dsh plugin --profile web add dsh-auto-collapse

从源码安装时,先生成完整安装包,再安装命令输出的 tgz:

npm ci
npm run package
dsh plugin --profile web add <生成的-tgz-绝对路径>

安装后按宿主方式重载插件或重启 Web,再刷新页面。回退时安装完整旧版包,例如 dsh-auto-collapse@0.1.8。

npm run package 与兼容别名 npm run deploy 只构建 tgz,不再逐文件覆盖安装目录、读取凭据或自动停止/启动 DSH。

开发与验证

Node.js 22+。首次浏览器验证需要 Playwright Chromium;Windows 可自动使用已安装的 Chrome/Edge,也可通过 DSH_TEST_BROWSER 指定可执行文件。

npm ci
npx playwright install chromium
npm run check

Linux CI 使用 npx playwright install --with-deps chromium 安装浏览器依赖。

npm run test:unit       # 纯分组、身份、状态摘要
npm run test:browser    # 当前构建的真实浏览器验收
npm run preview        # 本地合成场景:http://127.0.0.1:43190
npm run package        # artifacts/ 下完整 tgz

修改源码后先 npm run build 再单独运行浏览器测试或刷新预览。npm run check 自动执行 typecheck、构建、单元测试、浏览器测试和安装包检查。

浏览器测试使用真实 React、DSH 0.1.5-rc.2 原生组件快照和当前发布 bundle,覆盖混合分组、同消息正文边界、原生一级、详情状态、搜索、焦点、SVG、异常恢复、设置生命周期及 100/1,000/5,000 个历史节点。pwsh 场景使用官方工具渲染 bundle 和终端组件,覆盖失败重试、错误正文切换及缺失调用头等情况。完整测试还包含 30 秒无轮询检查。fixture 不依赖用户会话或凭据;完整后端部署不在隔离 fixture 的验证范围内,详见 夹具说明。

代码结构

文件职责
src/work-model.ts / host-contract.ts识别正文边界和原生工作项,缓存宿主结构
src/work-groups.ts / summary.ts纯分组规则、稳定身份、二级展开意图和动作摘要
src/dom-view.ts / styles.css唯一二级入口、受限显隐、恢复和样式
src/controller.ts / scheduler.ts脏工作段协调、原生一级联动、生命周期
src/status-text.ts / settings.ts独立状态文案及设置卡
src/client.ts / index.ts客户端与宿主接线

不修改消息内容,不移动原生节点,不接管原生 renderer,不推断 final,不扫描“空 div”,不回写主滚动容器。

许可

MIT。测试中的原生组件快照保留 DeepSeek 的 MIT 许可。