dsh-auto-think:自动展开/折叠思考块的 DSH 插件

前言

DeepSeek Harness(DSH)的 Web 客户端在流式输出时会渲染「思考块」,默认折叠,需要手动展开才能看到思考过程。手动切换会打断阅读节奏,尤其在思考时间较长或多次出现思考块时,体验较分散。dsh-auto-think 插件在模型输出思考时自动展开思考块,思考结束后自动折叠,并配合高度与透明度的过渡动画,让切换过程平滑自然。

插件简介

  • 名称:dsh-auto-think
  • 维护者:yezitotempeace
  • 分类:客户端
  • 仓库:https://github.com/yezitotempeace/dsh-auto-think
  • 定位:针对 DSH Web 客户端思考块的自动展开/折叠,配合侧边栏开关控制自动化行为
  • 版本:0.1.2
  • 许可证:MIT

核心功能

自动展开与折叠

  • 思考块开始流式输出(data-state="running")且处于折叠状态时,自动展开(每个块只展开一次)。
  • 思考结束(data-state="ok")后约 350ms,自动折叠。
  • 手动展开或折叠的块,在结束后保持当前状态,不会被动折叠。
  • 历史里已结束的块不受影响,不会再次自动展开。
  • 开关关闭后不再自动展开/折叠,但手动操作仍保持动画效果。

动画效果

  • 展开动画:高度从 0 过渡到实测高度,透明度从 0 过渡到 1,用时约 200ms。
  • 折叠动画:高度从实测高度过渡到 0,透明度从 1 过渡到 0,用时约 180ms。
  • 动画曲线:cubic-bezier(0.2, 0.8, 0.2, 1)。
  • 即使开关关闭或手动操作,动画仍然存在,避免「嗖」地闪一下。

侧边栏开关

  • 开关注册在 sidebar.footer.action(设置按钮上方一行),36×36 图标按钮。
  • 右下角小圆点:亮色表示开启,灰色表示关闭。
  • 悬停提示:「自动展开思考:开(思考时展开,结束后折叠)」或「自动展开思考:关」。
  • 点击即切换,无需刷新页面。
  • 开关状态保存在浏览器的 localStorage 的 dsh-auto-think/enabled 键中,默认开启。

安装与启用

安装依赖

使用 DSH 的 plugin 命令安装依赖:

dsh plugin --profile web add github:yezitotempeace/dsh-auto-think

启用插件

将 dsh-auto-think 加进 profile 的 package.json 的 dsh.profile.bundles 字段,然后重启 Web 客户端。本机开发可通过 link 方式:

  • 仓库放到 /root/dsh-auto-think;
  • dependencies 中写入 "dsh-auto-think": "link:/root/dsh-auto-think";
  • dsh.profile.bundles 中添加 dsh-auto-think;
  • 在 node_modules 下创建指向该仓库的软链接;
  • 重启 Web 客户端。

停用 / 卸载

  1. 从 dsh.profile.bundles 中删除 dsh-auto-think(或在 profile 的 cordis.patch.yml 中设置 disabled: true)。
  2. 重启 Web 客户端。

关闭开关仅停止自动展开/折叠,插件本身仍加载,动画功能不受影响。

技术实现要点

  • 找到思考块:使用 document.querySelectorAll('[data-variant="think"]'),对应 chat 插件的 ReasoningRow 根节点。
  • 状态判断:通过 data-state 属性判断 running / ok;通过内部 [data-disclosure-row] 的 aria-expanded 判断展开状态。
  • 触发切换:对对应行调用 click(),与用户点击走同一条 React onClick。
  • 监听变化:使用 MutationObserver 监听 data-state、data-expanded、data-open、aria-expanded 属性变化,每帧合并一次扫描。
  • 防抢操作:使用模块级 WeakMap 记录每个块的「是否由插件展开」和「是否已折叠」。
  • 开关状态:使用模块级 store + useSyncExternalStore,写入 localStorage。

插件不读取会话内容,不发送网络请求,仅依赖 react、react/jsx-runtime 和 primitives 的思考图标。

适用场景与注意事项

  • 适合需要持续查看思考过程的开发者、研究者与 AI 交互场景。
  • 插件以当前 DSH 进程权限运行,安装前应检查源码与许可证。
  • 开关关闭后可手动展开/折叠,动画效果依然存在,可按需调整。

小结

dsh-auto-think 通过自动展开/折叠思考块,配合平滑的过渡动画,减少手动操作,让思考过程的展示更连贯。侧边栏开关提供了灵活的控制,同时不影响手动操作的动画体验。

  • 插件目录页:https://www.skillhub.cn/plugins/yezitotempeace/dsh-auto-think
  • GitHub 仓库:https://github.com/yezitotempeace/dsh-auto-think
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye