在 DeepSeek Harness (DSH) 的默认 Web UI 中,每个助手回复都会将推理(Think 行)和工具调用渲染为单独的可折叠行。这导致对话流中出现许多嵌套的可折叠项,视觉上较为分散。dsh-turn-collapse 插件模仿 Codex 的风格,将可见输出之间的推理和工具调用分组为单个折叠单元,使对话流更加清晰。
插件简介¶
这是一个由 mctang985211-coder 维护的纯客户端插件,旨在通过将思考链和工具调用折叠在可见文本输出之间,来简化 DSH Web UI 中的对话流。它重用 DSH 的设计令牌,确保视觉风格与原生 UI 保持一致。
核心功能¶
- Codex 风格的层级折叠:将推理和工具调用分组在可见输出之间。
- 统一折叠条:在每两个可见输出之间插入一个折叠条。
- 默认折叠:折叠条默认为折叠状态,点击三角形即可展开。
- 状态持久化:折叠/展开状态按会话在
localStorage中持久化。 - 设计令牌复用:视觉样式重用 DSH 设计令牌 (
--dsw-alias-*)。
安装与启用¶
该插件通过本地路径链接安装。请先克隆仓库,然后运行安装命令。
git clone https://github.com/mctang985211-coder/dsh-turn-collapse
cd dsh-turn-collapse
dsh plugin --profile web add link:$(pwd)
安装完成后,必须对浏览器进行硬刷新才能使插件生效。
使用方法¶
在启用插件后,对话流中的界面结构会发生变化。每个可见输出(文本内容)与下一段可见输出之间的所有推理(Think 行)和工具调用(ToolRow)会被包裹在一个折叠条中。
界面示意如下:
[▶ 思考与工具 · 5 项] ← 折叠条:两段实际输出之间的一切(思考 + 工具调用)
文字输出 1
[▶ 思考与工具 · 3 项]
文字输出 2
- 展开/折叠:点击折叠条上的三角形图标,可以展开或折叠该组内容。
- 内部可用性:在展开状态下,内部的原生
Think行和ToolRow仍然保持其原有的可折叠和交互功能。
技术细节¶
- 纯客户端实现:插件不包含任何主机端代码,无服务器,无 API 表面。
- 渲染处理:通过
MutationObserver监听对话滚动容器 ([data-conversation-scroll]),并执行 reconcile pass 来处理 React 重渲染。 - 数据来源:流节点类型通过
data-chat-flow-kind识别(如assistant-step、tool-call),推理行通过data-variant="think"定位。
适用范围与注意¶
- 适用场景:适合希望在 DSH Web UI 中获得类似 Codex 体验、希望减少视觉杂乱的智能体开发者。
- 权限与安全:由于是纯客户端插件,运行在当前 dsh 进程的浏览器沙箱内,无需担心后端权限泄露。但安装前建议检查源码与许可证(MIT)。
- 注意事项:插件依赖 DSH 的设计令牌和 DOM 结构,升级 DSH 版本后可能需要重新检查兼容性。
总结¶
dsh-turn-collapse 通过简单的折叠逻辑,解决了 DSH 默认输出流中可折叠元素过多的问题。它通过 localStorage 维护状态,并在 React 重渲染中保持稳定,是优化 Web UI 可读性的实用工具。