前言¶
在 DeepSeek Harness(DSH)的 Web Chat 里,模型推理过程常以折叠的「思考」块呈现:默认只露一行标题或首句,正文需要手动点开。长任务或多轮对话时,你要反复点开合控件才能跟上「任务跑到哪一步、模型在想什么」——既打断视线,也容易漏看正在流式输出的那一段。
下面介绍社区插件 dsh-auto-expand-thinking(维护者 basaltfold,分类:联网工具)。它在浏览器侧自动触发与手动点击等效的开合操作,把思考正文拉进 DOM,让推理内容当场可见;并提供三档模式与快捷键,在「全展开」和「少抢鼠标」之间切换。
这是什么¶
dsh-auto-expand-thinking 是面向 DSH Web Chat 的客户端插件:宿主半 + 浏览器半(dsh.client.platform = "web"),零运行时依赖、零外部 import。核心逻辑在 lib/client.js(约 400 行,纯 DOM + 一个 MutationObserver)和 lib/index.js(日志壳)。
插件不修改 DSH 服务端,也不注入 CSS 去「撑开」折叠行——DSH 的 ReasoningRow 在折叠时根本不挂载正文节点,第三方也拿不到 Chat 内部的 useDisclosure 状态。因此实现路径是:像用户一样点击 disclosure 控件,并在每次点击后回读 data-expanded 确认成功。
文档与源码:https://github.com/basaltfold/dsh-auto-expand-thinking;社区目录页:https://www.skillhub.cn/plugins/basaltfold/dsh-auto-expand-thinking。
核心功能¶
自动展开思考行¶
插件扫描 data-variant="think" 的思考行根节点,在需要展开时对 disclosure 控件执行点击策略(优先 [data-disclosure-row],失败则按阶梯尝试 button、[data-disclosure-header] 等),成功后将策略写入 localStorage 以便自愈。
- MutationObserver 跟随新增行与
data-expanded/data-state变化;另有 2s 兜底扫描,应对虚拟列表回收或 HMR 重挂。 - 每帧最多展开 6 行,避免长会话回放卡顿;无 client rects 的行(被整轮折叠隐藏)跳过;同一行连续 3 次打不开则放弃并计入
giveUp,避免死循环。
三档模式¶
| 档位 | 行为 |
|---|---|
| 总是展开(默认) | 所有思考块都展开;手动合上会被再次展开。 |
| 仅运行中展开 | 只展开正在流式输出的那条;已结束的留给你自行决定是否折叠。 |
| 关闭 | 不干预,等同临时禁用。 |
快捷键与控制台 API¶
| 动作 | 效果 |
|---|---|
Ctrl+Alt+T |
循环三档:总是展开 → 仅运行中展开 → 关闭(页面底部约 1.6s 提示) |
__dshAutoExpandThinking.stats() |
查看当前档位、命中策略、已展开数、放弃数 |
__dshAutoExpandThinking.setMode('running') |
直接切档(如 'always'、'running'、'off') |
__dshAutoExpandThinking.debug(true) |
打开详细日志 |
档位与调试状态保存在本页 localStorage:
| 键 | 含义 |
|---|---|
dsh-auto-expand-thinking:mode |
always / running / off |
dsh-auto-expand-thinking:strategy |
自动探测并记住的点击策略 |
dsh-auto-expand-thinking:debug |
1 表示打开日志 |
已知范围与限制¶
- 只处理思考行(
data-variant="think"),不展开工具调用、系统提示、上下文注入等其它折叠块。 - DOM 属性名随 DSH 发布版变化时,插件按阶梯降级;仍失败则静默停止展开(可通过
stats().giveUp观察),不影响页面其它功能。 - README 注明:宿主实测为 DeepSeek Harness 0.2.1-rc.2,profile
desktop;package.json中dsh.engines.dsh为>=0.2.1-rc.2,并对0.2.1-rc.2标注 compatible。
安装与启用¶
插件在 DSH 启动期组合进 profile,安装后需重启 DeepSeek Harness 才会加载。
Windows:install.ps1¶
README 给出的快速安装步骤如下(会先备份再改 profile):
git clone https://github.com/basaltfold/dsh-auto-expand-thinking
cd dsh-auto-expand-thinking
pwsh -File .\install.ps1
install.ps1 主要做三件事:在 profile/node_modules 建立指向本目录的 junction;在 profile/package.json 增加 file: 依赖并追加 dsh.profile.bundles;在 profile/cordis.patch.yml 追加 insert 兜底行。
也可通过 dshmarket / 插件目录页 按仓库地址安装:package.json 的 dsh.install 已声明 tarball、zip、git 三种源(preferred 为 tarball)。
卸载¶
pwsh -File .\uninstall.ps1
# 或还原某次备份:
pwsh -File .\uninstall.ps1 -Restore 20261026-123732
非 Windows 环境:install.ps1 仅负责「落地到 profile」;README 说明可手动完成 junction、file: 依赖与 bundles 三项,与平台无关。
安装前请自行阅读仓库源码与 MIT 许可证。插件以当前 DSH 进程及 profile 权限运行,仅应从可信来源安装。
典型用法¶
- 按上文完成安装并重启 DSH,在 Web Chat 中发起带推理输出的对话。
- 默认 总是展开:新出现的思考块应自动展开,无需手点标题行。
- 若不希望插件改你已读完毕的旧消息,按
Ctrl+Alt+T切到 仅运行中展开,或于控制台执行:
__dshAutoExpandThinking.setMode('running')
- 排查点击策略或放弃计数时:
__dshAutoExpandThinking.debug(true)
__dshAutoExpandThinking.stats()
- 开发者在插件目录可跑 README 中的校验(无需浏览器):
node --check lib/client.js
node test/client.test.mjs
node test/install.test.mjs
适用场景与注意¶
适合谁:经常在 DSH Web Chat 里盯推理过程、调试 Agent 行为,或希望流式思考内容与任务进度同步可见的开发者。
不适合或需知:
- 纯 CSS 或只改样式无法替代本插件——折叠时正文不在 DOM 里。
- DSH 大版本升级后若 disclosure 结构变化,需关注
giveUp或更新插件;属性名不是公开 API。 - 自动化测试覆盖 DOM 契约与安装契约;页面最终效果仍需重启后目视确认一次(README 说明维护者本机无可用浏览器实例做 E2E)。
DeepSeek Harness 的生态理念是「一切皆插件」;SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。
结尾¶
dsh-auto-expand-thinking 用最小客户端代码补上了 Web Chat 里「思考块默认折叠」的使用缺口:自动点击 + 状态回读 + 三档模式,在可见性与交互干扰之间可切换。