🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

长会话渲染优化 publieople/dsh-chat-offscreen

DeepSeek Harness
publieople54 天前有提交已提供中文文档扫描:未发现敏感能力

跳过屏外消息的布局绘制,让超长会话滚动不卡顿

29.5/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/9/16 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

自动兼容检查有告警:未发布到 npm registry,仅可从源码安装。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add publieople/dsh-chat-offscreen
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · chat
装得上吗
本站已真实安装成功
非静态推断
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 54 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查⚠ 装前注意

未发布到 npm registry,仅可从源码安装

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✗npm 包dsh-chat-offscreen(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/9/22 03:53:35

安全扫描自动 · 静态分析源码
v2.7.0
🟢 扫描:未发现敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。

扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 跳过屏外消息布局绘制
  • 长会话滚动流畅

DSH Web 插件:用 content-visibility 跳过屏幕外聊天记录的布局与绘制,让长会话保持流畅。

README

由 DeepSeek 最新模型翻译生成
dsh-chat-offscreen 让超长上下文的 DeepSeek Harness (DSH) Web 会话保持流畅。 问题 DSH 的聊天转录上游没有做虚拟化:加载进来的历史分页会一直留在 DOM 里。 loadOlder() 一次拉 50 条消息,左侧轮次导航的跳转加载器则按 200 条/页一路 拉回到目标轮次,而且没有淘汰。长会话下,拖转录宽度手柄、拖侧栏分隔条,甚至只是滚动,都会对成千上万个节点触发整树 layout + paint,界面因此卡顿。 这个插件做什么 它是一个极小的纯客户端插件,只注入一份样式表: [data-chat-flow-kind="assistant-step"]:not(:has(.md-table-wide)), [data-chat-flow-kind="tool-call"]:not(:has(.md-table-wide)) { content-visibility: auto; contain-intrinsic-size: auto 120px; } [data-chat-flow-kind="assistant-step"]:has(.md-table-wide), [data-chat-flow-kind="tool-call"]:has(.md-table-wide) {
展开完整文档(README 剩余 1 节)
dsh-chat-offscreen

让超长上下文的 DeepSeek Harness (DSH) Web 会话保持流畅。

问题

DSH 的聊天转录上游没有做虚拟化:加载进来的历史分页会一直留在 DOM 里。
loadOlder() 一次拉 50 条消息,左侧轮次导航的跳转加载器则按 200 条/页一路
拉回到目标轮次,而且没有淘汰。长会话下,拖转录宽度手柄、拖侧栏分隔条,甚至只是滚动,都会对成千上万个节点触发整树 layout + paint,界面因此卡顿。

这个插件做什么

它是一个极小的纯客户端插件,只注入一份样式表:

[data-chat-flow-kind="assistant-step"]:not(:has(.md-table-wide)),
[data-chat-flow-kind="tool-call"]:not(:has(.md-table-wide)) {
content-visibility: auto;
contain-intrinsic-size: auto 120px;
}
[data-chat-flow-kind="assistant-step"]:has(.md-table-wide),
[data-chat-flow-kind="tool-call"]:has(.md-table-wide) {
content-visibility: visible !important;
contain: none !important;
}

content-visibility: auto 让浏览器跳过屏外的「助手步骤」和「工具调用」行的 layout 与 paint——一种廉价的近似虚拟化;contain-intrinsic-size: auto 120px 在行还没渲染前保持滚动范围稳定,并在行首次渲染后记住其实测高度。含宽 markdown 表格的行会退出该规则,避免其突破宽度被错误估算。

这是渲染层兜底,不改数据:不触碰任何消息、会话事件或宿主状态。与已废弃的 @linxin666/dsh-perf 的同形态 P0 规则属于同源做法。

安装

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

然后重启 web profile(dsh web ...)并硬刷新页面(Ctrl+Shift+R)。
lib/ 已提交进 Git,因此不会执行任何包构建脚本,也不需要 allowBuilds。

bundle patch 会自动插入插件行。若手动安装:

cd "$DSH_HOME/profiles/web"
pnpm add github:publieople/dsh-chat-offscreen

再在该 profile 的 package.json 里把 dsh-chat-offscreen 加进 dsh.profile.bundles,重启即可。

验证

打开一个长会话,拖转录宽度手柄 / 侧栏分隔条,或快速滚动。DevTools → Elements 里,一个屏外的助手步骤应当带上 content-visibility: auto。

禁用 / 卸载

dsh plugin --profile web remove dsh-chat-offscreen

然后重启。移除插件即移除样式表,不持久化任何状态。

兼容性

- 客户端平台:web。宿主半边是空的(仅为让插件出现在 Loader 中)。
- 只依赖浏览器 content-visibility(Chrome/Edge 85+、Firefox 125+、 Safari 18+)。旧引擎上规则不生效,界面维持原状。
- 针对 DSH 0.1.5-rc.1 构建;插件不 import 任何 DSH 运行时。

开发

npm install
npm run typecheck
npm run build # tsdown -> lib/index.js (ESM) + lib/client.js (ModuleLoader)
npm test # 用假 DOM 驱动已构建的 client bundle

lib/ 是刻意提交的,这样 Git 安装无需构建步骤。改动 src/ 后请重新
npm run build 并提交产物。

上游真做了虚拟化之后

等 DSH 聊天界面具备真正的虚拟化后,删掉这个插件行即可。上游轨迹视图(ui-trajectory)已经虚拟化;聊天界面还没有。
预览分享卡片长什么样 ↓publieople/dsh-chat-offscreen
分享 · DeepSeek Harness Hub
publieople/dsh-chat-offscreen

跳过屏外消息的布局绘制,让超长会话滚动不卡顿

这是你的仓库?认领条目

回到顶部