dsh-chat-offscreen:保持长会话响应

前言

DeepSeek Harness (DSH) 的 Web 聊天会话在运行时间变长后,会话记录(transcript)的 DOM 节点数量迅速增加。由于上游实现并未对聊天记录进行虚拟化,每一个加载的历史页面都会保留在 DOM 中。在长会话中,拖动宽度调整手柄、侧边栏分隔线,或者快速滚动时,浏览器需要对数千个节点执行布局和绘制操作,导致界面卡顿。

定位与原理

dsh-chat-offscreen 是一个客户端插件,旨在解决上述性能问题。它通过注入一个样式表,利用 CSS 的 content-visibility 属性,让浏览器跳过不可见区域内的辅助步骤和工具调用行的布局与绘制。这相当于一种开销极低的虚拟化近似方案,同时通过 contain-intrinsic-size 保持滚动范围的稳定。对于包含宽 markdown 表格的行,插件会强制其保持可见,以避免宽度估算错误。

核心功能

  • 跳过不可见区域的布局和绘制。
  • 提供开销较低的虚拟化近似效果。
  • 保持滚动范围稳定。

安装与启用

使用官方安装命令添加插件:

dsh plugin --profile web add github:publieople/dsh-chat-offscreen

安装后,重启 Web 模式 (dsh web ...) 并在浏览器中硬刷新页面(Ctrl+Shift+R)。由于 lib/ 目录已包含构建产物,无需运行构建脚本。

典型用法

  1. 打开一个包含较长历史的会话。
  2. 拖动聊天记录宽度手柄或侧边栏分隔线,或者快速滚动页面。
  3. 在浏览器开发者工具的 Elements 面板中检查不可见的辅助步骤元素,应能看到 content-visibility: auto 属性。

注意事项与兼容性

  • 渲染层修复:这是一个渲染层层面的变通方案,不涉及消息、会话事件或宿主状态的修改。
  • 组合使用:可与已退役的 @linxin666/dsh-perf P0 规则配合使用。
  • 浏览器依赖:该功能依赖浏览器的 content-visibility 特性(Chrome/Edge 85+, Firefox 125+, Safari 18+)。在旧版引擎上,规则将处于非激活状态,UI 表现与安装前一致。
  • 风险提示:插件以当前 dsh 进程的权限运行,安装前请检查源码与许可证(MIT)。

结语

该插件通过 CSS 技术在渲染层缓解了长会话的性能压力。当 DSH 聊天界面获得真正的虚拟化支持时,此插件即可移除。更多细节与源码可参考下方链接。

插件目录 | GitHub 仓库

羽毛球分组比赛记分
小程序二维码

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

小夜