DeepSeek Harness 插件

dsh-chat-content-visibility-auto

DSH chat performance: enable browser-native content-visibility:auto on the conversation list so off-screen message nodes skip rendering/layout/paint. DSH 聊天列表性能优化:启用浏览器原生 content-visibility:auto(英文原文)

跳到安装方式

来源信息

GitHub 仓库
hongweifei/dsh-chat-content-visibility-auto
最近更新
2026年8月15日
分类
工具与能力
GitHub stars
1
载体类型
plugin
目录证据
上游声明已找到 dsh.bundle
证据路径
package.json#dsh.bundle
核对版本
0.1.0-rc.8
上游核对日期
2026-08-20

该证据由上游目录提供。本站没有安装、运行或安全审核这个插件。

安装

默认先复制一段 Prompt,让 Agent 读 GitHub 仓库和源码;需要自己装时再切到命令。

复制这段 Prompt,发给 DSH、Codex 或其他 Agent,让它先读 GitHub 仓库和源码。

请先不要安装或执行任何命令。阅读这个插件的 GitHub 仓库、README 和关键源码,然后用清楚、直接的方式回答以下问题,帮助我判断它是否适合我的需求:

1. 这个插件是什么,解决什么问题;
2. 适合哪些用户和典型使用场景;
3. 安装后如何使用,并给出一个最小使用示例;
4. 有哪些已知限制,以及隐私、安全、兼容性或维护风险;
5. 给出“推荐 / 有条件推荐 / 不推荐”的明确建议和理由。

请区分仓库明确说明、根据源码推断和未知信息。证据不足时请明确说明,不要猜测或照抄 README。

GitHub:https://github.com/hongweifei/dsh-chat-content-visibility-auto
插件名:dsh-chat-content-visibility-auto
作者:hongweifei

检查来源文件

安装前先看这个插件目录里的 README 和其他文件。

文件资源管理器3 个文件
README.md来源说明 · 只读预览

dsh-chat-content-visibility-auto

DeepSeek Harness(DSH)聊天列表性能优化插件:为会话消息节点启用浏览器原生 content-visibility: auto(近似虚拟化),跳过屏外消息节点的渲染/布局/绘制。

解决的问题

DSH 的聊天列表(dsh-client-ui-conversationChatView没有虚拟滚动、也没有使用 content-visibility——它对会话里每一个消息节点全量渲染(order.map(...) 每个节点一个 div[data-chat-anchor-key],内含 markdown、工具卡、图片等重 DOM),长会话的 DOM 数量线性增长,滚动、输入、切换都卡。唯一现有优化是 React.memo(减少重渲染,但不减少 DOM)。

> 注:DSH 的轨迹面板dsh-client-ui-trajectory)用了 @tanstack/react-virtual 做真虚拟滚动,但主聊天列表没有;全代码库亦无任何 content-visibility 实际使用。

修复方式

注入一段 CSS:

[data-chat-flow] > [data-chat-anchor-key] {
  content-visibility: auto;
  contain-intrinsic-size: auto 320px;
}

content-visibility: auto 让浏览器跳过屏外节点的渲染、布局与绘制,只绘制可视窗口附近的节点;contain-intrinsic-size: auto 320px 为未渲染过的节点提供尺寸估算,保证滚动条位置和滚动锚定稳定。

  • 零产品逻辑改动:纯样式叠加,不替换任何槽位,不碰 DOM 结构
  • 节点滚动到可视区时按真实尺寸渲染;DOM 本身不变(内存不降,但渲染/布局/绘制成本大幅下降)
  • 浏览器不支持该属性时规则被忽略,无副作用(Chrome 85+、Firefox 125+、Safari 18+)

安装

# 从 GitHub 安装
dsh plugin --profile web add "github:hongweifei/dsh-chat-content-visibility-auto"

# 重启 dsh web 并硬刷新浏览器(Ctrl+F5)

手动安装(github 不可达时)

# 1. 把插件源码目录链接进 profile 的 node_modules(<插件源码绝对路径> 换成实际路径)
New-Item -ItemType Junction -Path "$env:USERPROFILE\.dsh\profiles\web\node_modules\@dsh-external\dsh-chat-content-visibility-auto" -Target "<插件源码绝对路径>"

# 2. 在 profiles\web\package.json 中补两处:
#    dependencies 加   "@dsh-external/dsh-chat-content-visibility-auto": "file:<插件源码绝对路径>"
#    dsh.profile.bundles 加 "@dsh-external/dsh-chat-content-visibility-auto"

验证效果

1. 打开一个很长的会话(几百条消息),滚动到底/中部,应明显顺滑; 2. DevTools → Elements:选中一个视口外的聊天节点,其样式面板中 content-visibility: auto 生效,浏览器不会为它执行布局/绘制; 3. DevTools → Performance 录制滚动操作,长帧(long task)明显减少。

卸载

dsh plugin --profile web remove @dsh-external/dsh-chat-content-visibility-auto
# 重启 dsh web

局限

  • 不是真正的窗口化:DOM 节点数量不变(内存占用不降),只是跳过渲染成本
  • 聊天节点的弹出层若溢出节点边界会被 paint 裁剪(当前 DSH 节点内弹出层均内联且自带 overflow:hidden,无影响)

License

MIT