在 DSH(DeepSeek Harness)的开发与使用中,对话流的渲染效率直接影响调试与交互体验。当思考链、工具调用等中间过程混在正文中间时,对话流会变得冗长且难以阅读。dsh-conversation-folding 插件旨在解决这一问题,通过折叠机制优化 UI 展示,而不改变底层内容逻辑。
这是一个纯 UI 增强插件,由 TheHeartFickle 维护。它将思考过程和工具调用等中间步骤折叠起来,同时保持用户输入和 LLM 输出使用原生渲染样式,不改变内容本身。
核心功能¶
-
整轮折叠(默认)
用户输入保持原生样式。思考/工具调用过程被折叠为一个独立的折叠栏。尚未生成正文时,折叠栏下方保留最近一次过程预览;开始生成正文后,过程自动隐藏,只显示正文。点击“展开过程”可以查看完整过程。 -
Tool call 分组折叠
连续的tool-call步骤会折叠成组,默认只显示最新一个,减少对话流中的重复工具调用刷屏。 -
思维链增强
Think块默认展开为可滚动子框。生成过程中自动跟随底部,方便实时阅读。新出现时,只折叠紧邻的前一个,保持上下文连续。 -
折叠的步骤类型可按类型配置
设置 →「对话折叠」独立标签页:18 个步骤类型分别开关是否折叠(bash / think / read / write / edit / glob / grep / web / skill / 子代理 / 后台任务 / goal / 任务清单 / 提问 / ralph / workflow / 上下文注入 / 系统提示词)。默认不折叠:上下文注入、skill、系统提示词;其余类型折叠。
安装与启用¶
前置条件:已安装 DSH,且 dsh web 可以正常运行。环境要求 Node.js ≥ 20,DSH ≥ 0.1.2-rc.1。
通过 DSH CLI 安装:
dsh plugin --profile web add @the-heart-fickle/dsh-conversation-folding@latest
安装后,重启 DSH 并刷新浏览器页面。
典型用法¶
- 发送一条消息。
- 观察:思考/工具调用过程被折叠为独立折叠栏;正文开始输出后,过程自动隐藏。
- 点击“展开过程”可查看完整过程。
- 想回到官方渲染时,在设置中把「对话显示」切换为 Normal / Compact 即可。
配置¶
全部配置在浏览器端「设置」内完成,经 host 设置系统持久化到 ~/.dsh/settings.yaml(dsh-conversation-folding: 命名空间),跨端/重载恢复。
- 对话显示(设置 → 对话显示):
Normal/Compact/Fold。仅「Fold」由本插件接管过程折叠,折叠行为只有一种:整轮折叠,正文永不折叠。 - 对话折叠(独立标签页):各步骤类型的「是否折叠」开关。工具调用按 host 工具注册表的字面注册名经匹配表精确匹配(如
pwsh→Shell 命令、str_replace_editor→编辑文件、todo_write→任务清单、ask_user_question→提问);未列入匹配表的工具类型始终折叠。默认不折叠:上下文注入、skill、系统提示词。浏览器 localStorage 不存任何配置。
注意:0.1.x 曾支持 profile cordis.patch.yml 下发 foldMode / auxVisible;自本版本起配置全部移到浏览器设置,host 不再持有配置。
适用场景与注意¶
适合需要频繁查看工具调用细节,但又不希望被大量中间过程刷屏的开发者与用户。
注意:插件以当前 DSH 进程权限运行,安装前请检查源码与许可证(MIT)。
总结¶
该插件通过折叠机制提升了长对话的阅读体验。更多细节与源码,可参考: