Codex 风格的工具调用折叠,将多个工具调用折叠到一行内。
安装
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:Minecraftbe/dsh-toolfold
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本。请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
DSH Web GUI 插件,提供类 Codex 的工具折叠体验:把连续的工具调用和已完成的思考 折叠成一条简洁的折叠条,只展示最后一个调用的一行摘要,点击即可展开/收起。 不替换任何内置渲染器,卸载后界面完全恢复原样。

特性一览
- 连续工具调用折叠为一条:相邻的工具调用(中间只隔着已完成的思考也算同一段)整段收起, 条内直接显示最后一个调用的一行摘要,并标注「已折叠 N 个工具调用 · 点击展开」;
- 思考随组折叠:已完成的思考不会隔开工具调用,默认随组隐藏;开启「保留思考」后, 收起时隐藏、展开时按原顺序插回调用之间,内容不会消失;
- 进行中的思考独立显示:流式思考保持原样可见,完成后自动并入组内收起;
- 弹性瀑布动画:展开时卡片自上而下逐张落下(spring 回弹),收起时逐张上行且行高度同步收缩, 下方内容连续上移、结尾无跳变;系统开启「减少动态效果」时动画自动关闭;
- 贴底不顶出:靠近底部展开时,折叠条视口位置被钉住,不会因聊天自动滚动被顶出屏幕;
- 接近零性能占用:无页面级观察器、流式期间引擎零工作、标签页隐藏时全部暂停—— 实机测量空闲开销约 0.03% 单核(详见性能)。

安装
GitHub 一行安装
dsh plugin --profile web add github:Minecraftbe/dsh-toolfold
从源码安装
git clone https://github.com/Minecraftbe/dsh-toolfold.git
dsh plugin --profile web add ./dsh-toolfold
装完重启 dsh 并刷新浏览器即可生效(bundle 层在启动时合成)。可用以下命令确认已进入 最终配置:
dsh --profile web --dump-config
早期版本若曾在
cordis.patch.yml手工加过toolfold行,先删除该行再切换,避免双挂载。
卸载
dsh plugin --profile web remove dsh-toolfold
重启后界面完全恢复原样。
使用与设置
设置入口:设置 → 插件 → 工具折叠(卡片外观与内置插件卡片一致,跟随深浅主题)。

| 设置项 | 说明 |
|---|---|
| 展开动画时长 | 展开/收起瀑布动画的单卡时长,0–1000ms,默认 240ms;0 为瞬时切换 |
| 保留思考 | 开启后已完成的思考随工具调用一起折叠,展开时按原顺序显示在调用之间;关闭则思考直接隐藏 |
| 性能统计 | 在卡片内实时显示插件自身耗时(观察回调/引擎刷新/合并重算/安全重扫/摘要克隆的累计次数与 ms/s,以及被零开销短路忽略的流式批次),用于验证插件开销 |
交互方式:点击折叠条展开/收起;键盘 Enter 或 Space 同样有效。
设置存到哪里
已安装(bundle)模式:设置由 DSH 设置服务持久化到
~/.dsh/settings.yaml(命名空间toolfold),与产品和其他插件的设置在同一个文档里, 随 dsh 主机走,换浏览器/设备不丢失;卡片底部会显示「设置保存在 DSH 主机配置」。 也可以直接手工编辑该文件:toolfold: durMs: 240 # 展开动画时长 0–2000ms keepThink: false # 是否保留思考随组折叠 stats: false # 是否开启性能统计未检测到 DSH 设置服务时(远程浏览器等未接入 DSH 设置服务的场景):降级为浏览器
localStorage(键dsh-toolfold.settings.v1),卡片会显示「仅保存在本浏览器」; 旧版键dsh-codex-collapse.settings.v1首次加载自动迁移。

性能
- 实测(真实 GUI 页面,空闲窗口 8s):引擎总耗时约 1.6–2.8ms(≈0.3ms/s,约 0.03% 单核); 同窗口 5s CPU 采样中引擎函数零样本,页面长任务(141–686ms)来自页面加载与产品/其他插件渲染;
- 流式零工作:思考/文本 token 流式变更被 O(1) 短路直接忽略,不触发任何重算(约 0.1–0.4µs/节点);
- 标签页隐藏 = 字面零占用:隐藏时断开全部观察器与定时器,回到可见时重挂并补一次对账;
- 打开「性能统计」即可在设置卡片内实时查看插件自身的每一项耗时。
说明与限制
- 折叠基于渲染后的 DOM,依赖产品稳定标记;若产品标记变动,最坏情况是折叠停止生效,不会破坏聊天;
- 进行中的思考与 AI 文字输出会隔开工具调用(进行中的思考完成后自动并入组内);
- 展开状态按会话流 + 节点 key 记忆;会话重开且 key 相同时会恢复展开状态;
- 设置以 DSH 主机配置(
~/.dsh/settings.yaml)为准;仅当主机桥不可达时才退化为浏览器localStorage(此时换浏览器/设备需重新设置); - 需要浏览器支持
MutationObserver与requestAnimationFrame;不支持时退化为「初始渲染折叠一次」。
本项目完全由 dsh + deepseek v4 flash(max) 完成。
链接
同类插件
zhu1090093659/dsh-web-ui#packages/dsh-web-ui-all★ 2263
DSH Web UI 插件与皮肤合集:任务看板、git 图、右侧面板、远程移动端 UI、桌宠、实时 token 统计与皮肤中心。
ccch1mneyyy/dsh-TUI★ 1051
Claude Code 风格全屏终端 UI:像素鲸鱼顶栏、实时工作状态行、思考流式展开。
omdsh-dev/DSH-better-sidebar★ 920
侧边栏完整工作台:内置文件渲染编辑、终端、Git 与子代理,支持三方插件注册新 Tab。
omdsh-dev/dsh-at-file★ 171
Codex 风格的 `@file` 文件引用,输入框里直接搜索并引用工作区文件。
huiliyi37/dsh-tianshu-tui★ 143
DeepSeek Harness 的终端 UI(TUI)。
Nagi-ovo/dsh-visualize★ 90
对话内生成式 UI:模型把交互式 HTML 卡片直接画进会话流,带流式预览与沙箱渲染。