前言¶
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/ 目錄已包含構建產物,無需運行構建腳本。
典型用法¶
- 打開一個包含較長曆史的會話。
- 拖動聊天記錄寬度手柄或側邊欄分隔線,或者快速滾動頁面。
- 在瀏覽器開發者工具的 Elements 面板中檢查不可見的輔助步驟元素,應能看到
content-visibility: auto屬性。
注意事項與兼容性¶
- 渲染層修復:這是一個渲染層層面的變通方案,不涉及消息、會話事件或宿主狀態的修改。
- 組合使用:可與已退役的
@linxin666/dsh-perfP0 規則配合使用。 - 瀏覽器依賴:該功能依賴瀏覽器的
content-visibility特性(Chrome/Edge 85+, Firefox 125+, Safari 18+)。在舊版引擎上,規則將處於非激活狀態,UI 表現與安裝前一致。 - 風險提示:插件以當前 dsh 進程的權限運行,安裝前請檢查源碼與許可證(MIT)。
結語¶
該插件通過 CSS 技術在渲染層緩解了長會話的性能壓力。當 DSH 聊天界面獲得真正的虛擬化支持時,此插件即可移除。更多細節與源碼可參考下方鏈接。