dsh-thought-fold
为 DeepSeek Harness 提供可靠、克制、可恢复的思考与工具过程折叠增强
让长任务更易阅读,让中途插话和中断过程保持清晰,同时不改变模型指令、回答内容或宿主会话数据。

▲ 3.1.3:完成轮次收为单一“用时”入口,保留用户消息、插话与最终回答
界面图片按 3.1.3 当前交互与文案使用合成数据生成,不包含真实会话、账号或本地路径。
📸 效果直观对比
在长任务、高频代码重构或多轮工具调用场景下,未折叠的中间过程往往会占据数屏高度,使阅读核心结论和与输入区交互变得极其繁重。
优化前 vs 优化后
| 痛点场景:原始大段过程堆叠 | 解决方案:插件自动紧凑收起 |
|---|---|
![]() 思考、工具与命令逐项占据对话,核心回复被长过程淹没 |
![]() 完成轮次只保留一个“用时”入口,用户消息与最终答复始终可见 |
✨ 功能优势
| 核心维度 | 关键能力与保障 |
|---|---|
| 🧠 长过程智能收起 | • 已完成的思考与工具调用默认自动折叠 • 用户消息、最终回答与关键状态提示始终完整保留 • 老会话加载、历史延迟补载同样自动生效,告别滚动刷屏 • 需要细节时一键展开,原汁原味还原工具调用与思考流程 |
| ✂️ Codex 两级折叠 | • 运行期间普通正文持续实时显示,默认每段正文之间只有一个“过程”入口,不再按思考、工具或上下文类型拆分 • 原生思考摘要、工具调用、上下文、系统提示与其他非正文过程默认统一收起;展开长内容默认限高并可内部滚动 • Turn 完成并收敛后,前序文字与过程归入单一总折叠;总折叠展开不连带展开局部分组,所有 user / steering 插话始终外露 |
| 🛑 中断过程安全整理 | • 任务手动停止、出错或触达长度限制时,自动整理已结束的过程内容 • 完整保留中断前最后输出的有效正文卡片与错误状态 • 不把断网等待、重试或审批等待误判为中断,保证执行可见性 |
| 📍 双端收起与随行浮动 | • 展开过程底部设有**“收起过程”**按钮 • 当过程较长被输入框遮挡时,唯一的浮动收起按钮自适应吸附在输入区上方 • 多轮同时展开时互不冲突,收起操作精准对应当前 Turn |
| ↩️ 状态持久且完全可恢复 | • 页面重绘、动态增高输入区、窗口尺寸变化不会打乱用户手动展开的选择 • 原生紧凑与标准模式切换双向保留选择状态 • 停用插件或切出时即刻撤销所有显示代理,零残留,零脏数据 |
| 🛡️ 纯 UI 增强,零指令侵入 | • 不向模型注入任何 System Prompt 或隐式提示词,完全遵循模型原有习惯 • 不改写消息 DOM,不破坏 React 节点生命周期 • 仅使用安全的 CSS 标记与局部会话作用域观察,不扫描 document.body |
🎯 核心交互特性
1. 展开长过程与底部固定收起
展开思考与工具调用后,卡片采用优雅的边框与清晰的层级展示。在整段过程的最底部,插件注入了符合系统设计语言的 “^ 收起过程” 按钮。无需费力滑回数千像素之上的顶部,即可就地完成收起。
▲ 展开总过程后,局部摘要可独立展开;长详情限高滚动,底部保留“收起过程”入口
2. 输入框上方智能浮动收起代理
当展开的过程非常长、用户正在阅读中间部分导致过程底部被遮挡或滚出视野时,输入框上方会自动出现一枚全局唯一的浮动收起按钮:
- 智能跟随:随页面滚动、窗口宽度变化、输入框被多行文字撑高自适应更新贴边坐标。
- 独占防冲突:同屏即便存在多个展开组,系统自动判定最贴近视口下沿的目标,绝不叠放多个悬浮按钮。
- 底部就位即让出:一旦用户滚到最底部,固定按钮进入视野,浮动按钮立即隐去,避免界面元素重复。
3. 流式正文可见与非正文统一折叠
运行期间,普通 Assistant 正文与媒体持续实时显示;默认每段正文之间只有一个紧凑的“过程”入口。思考、原生思考摘要、工具调用、上下文、系统提示、命令及其他非正文扩展过程按原有顺序合并收起,不再因过程类型变化拆成多个入口,也不逐项外露摘要。正文、媒体、user / steering 插话、轮次终止错误与尾状态,以及审批、提问等交互节点是硬边界;已结束的工具错误属于过程,纳入摘要并显示失败次数,展开可查看原始详情,局部分组不会跨越这些内容;合成的本轮总控制器不作为内容边界。只有宿主 timeline 宣告 Turn 结束且流式节点全部收敛后,插件才生成单一总折叠:
▲ 插话始终外露;前后过程统一归入一个总折叠,审批、提问和轮次终止提示保持可见
- 统一阅读节奏:启用视觉增强时,外层消息与正文内摘要都采用16px可见块间距;隐藏节点、空控制器和局部滚动切片不额外占位。正文内部富文本排版不改写。
- 可读操作摘要:以“已思考”“已调用 N 次工具”等实际类型与数量代替“过程 · N 项”;运行中显示状态,已结束的工具报错合并为失败次数,不再逐行外露。摘要有小图标,与正文左边缘对齐。
- 运行期不遮挡:流式文字始终可见,已经结束的前序 step 也不会提前进入总折叠。
- 原生数据与布局兼容:思考消息中宿主另行渲染的
tool-call块不会导致漏折叠;收起内容不再参与原生正文容器的 gap,空白 Markdown 容器也不会累积占位,开始流式写入时立即恢复。 - 完成后总归属:插话前后的前序文字、思考和工具过程统一由本轮一个“用时”控制器管理。
- 总/局部两级独立:展开总折叠只露出内部局部摘要和正文,不会一次性展开所有思考与工具;各局部分组仍可独立展开、收起,并保留手动选择。
- 默认限高滚动:展开较长的局部思考或工具内容后,默认限制内容区高度并允许内部滚动,避免单段细节撑满多屏;内容不会被截断或删除。
- 保留原有能力:历史轮次自动整理、插话外露、中断末条回答保留、准确用时、底部与浮动收起、原生模式切换和停用清理继续保留。
- 插话与回答外露:所有
user/steering气泡、最后一条有效回答、轮次终止错误与尾状态始终保留在总折叠之外;历史工具失败不会阻断总折叠。 - 准确用时:只读取 timeline 的
turn/start与turn/end时间;缺失真实时间时显示“已完成”,不伪造0s。
⚙️ 配置与外观风格
插件在 DeepSeek Harness 设置中心无缝注入了 “思考与折叠” 专属管理页:
▲ 3.1.3 设置面板:插件、视觉增强、思考与工具默认折叠均可独立控制
配置项说明
在设置页或通过 settings.yaml 配置:
dsh-thought-fold:
enabled: true # 启用插件核心功能(折叠、底部按钮与浮动代理)
showLiveHud: true # 开启视觉增强样式;关闭后依然保留折叠与按钮能力
foldReasoning: true # 默认收起思考(包括原生思考摘要);false 为默认展开,仍可手动折叠
foldTools: true # 默认收起工具、上下文等其他非正文过程;false 为默认展开,仍可手动折叠
foldStyle: codex # 按钮外观风格:codex (经典) | minimal (极简) | clean (清晰)
foldReasoning(“折叠思考”)与 foldTools(“折叠工具”)两个设置仍然保留,均为默认 true 的独立布尔开关,旧配置省略时也按开启处理。false 表示该类过程默认展开,而非移除折叠能力;思考类包括原生思考摘要,工具类同时覆盖上下文、系统提示、命令及其他非正文过程。两类默认展开状态相同时合并为一个“过程”入口;仅关闭其中一个设置时,默认展开的类别会与仍默认收起的类别分组,避免相互覆盖设置。关闭其中一个不会改变另一类的默认状态,也不会关闭任务完成后的总折叠、底部按钮或浮动收起功能;局部内容仍可手动展开/收起。enabled 仍是插件总开关,showLiveHud 仍只控制视觉增强。
| 选项 | 说明 |
|---|---|
| 经典 (codex) | 浅灰文本摘要与小箭头,低强调悬停背景;连续过程使用紧凑列表,长详情限高滚动 |
| 极简 (minimal) | 去除边框与多余底色,纯文本与极简箭头,专注沉浸式代码与对话阅读 |
| 清晰 (clean) | 微圆角矩形与微底色卡片样式,更明显的视觉点击区域 |
快捷斜杠指令
可在输入框直接使用斜杠命令快速查看与控制:
/fold status:查看插件当前启用状态、HUD 样式与外观模式/fold toggle:一键切换插件的开启与关闭/fold help:查看指令帮助说明
📦 安装与更新
方式一:下载 Release 离线安装包(推荐)
- 从 GitHub Releases 页面 下载本版本安装包:
dsh-thought-fold-3.1.3.tgz - 打开 DeepSeek Harness 桌面端,进入左下角 设置 -> 插件市场 / 插件管理。
- 选择“从本地文件安装”,选中下载的
.tgz文件。 - 安装完成后重启 DSH 即可生效。
方式二:本地安装包命令行升级(网络不稳定时推荐)
dsh plugin --profile desktop add "D:\path\to\dsh-thought-fold-3.1.3.tgz" --prefer-offline --ignore-scripts
dsh plugin add 会让 pnpm 校验整个 Profile。--prefer-offline 复用已有缓存、避免对无关 GitHub 依赖做新鲜度 HEAD 请求;仅真正缺失的包才访问网络。--ignore-scripts 避免本地 UI 插件升级时重跑其他 Git 托管插件的构建脚本。安装后用 dsh plugin --profile desktop list 确认版本,并完整重启 DSH。
方式三:从 GitHub 添加
# 适用于 Desktop Profile
dsh plugin --profile desktop add github:new-Beginner/dsh-thought-fold
# 适用于 Web Profile
dsh plugin --profile web add github:new-Beginner/dsh-thought-fold
🧪 架构设计与质量保障
为了确保插件长期运行不崩溃、不卡顿、不破坏宿主会话,本项目设立了严格的回归防线。下图及浏览器场景数量对应既有版本的验证记录(见 VERIFICATION.md),不是本次两级折叠新增功能的实测结论;当前结果应以实际执行日志为准:
┌───────────────────────────────┐
│ DeepSeek Harness 宿主 │
└───────────────┬───────────────┘
│ 挂载会话插槽 (Zero DOM Rewrites)
┌──────────────────────▼──────────────────────┐
│ dsh-thought-fold 运行时 │
├─────────────────────────────────────────────┤
│ • 标量事实边界判定 (process-plan.js) │
│ • 会话生命周期与布局监听 (fold-runtime.js) │
│ • 设置中心与外观样式系统 (client-entry.js) │
└──────────────────────┬──────────────────────┘
│
┌───────────────────────┴───────────────────────┐
▼ ▼
┌─────────────────────────────┐ ┌─────────────────────────────┐
│ 26 项 Node 测试 + 8 项装配检查│ │ 42 项真实 Edge 浏览器测试 │
│ • 完成态总包络判定 (12项) │ │ • 真实 React 18 节点挂载 │
│ • 设置异步生命周期 (10项) │ │ • 流式外露与准确计时测试 │
│ • 插件元数据与沙箱 (4项) │ │ • 插话外露与中断保留测试 │
└─────────────────────────────┘ └─────────────────────────────┘
- 真实浏览器全场景覆盖:内置基于 Playwright + 本机 Edge 的真实回归套件(
test/browser.test.js),涵盖 42 个复杂交互场景。 - 可搜索隐藏支持:兼容折叠采用
hidden="until-found"与content-visibility机制,在折叠状态下依然支持浏览器原生Ctrl + F查找并自动展开匹配段。 - 防内存与事件泄漏:设置异步请求严格绑定代际 ID,组件卸载即刻中断 AbortController,杜绝延迟回调覆盖新状态。
📄 开源许可证
本项目采用 MIT License 授权开源。欢迎提出 Issue 与 Pull Request 共同改进!

No comments yet. Be the first to write one.