前言¶
DeepSeek Harness(DSH)的 Web 會話可以拉得很長:一輪裏往往夾雜着代碼、工具調用和思考過程,但界面默認仍是單列縱向滾動。寬屏兩側留白,回顧幾輪之前的結論也要靠滾輪和記憶。DSH 生態裏能力一般以插件形式擴展;社區目錄 SkillHub 收錄了維護者 WuZiyi521 的客戶端插件 dsh-chat-columns,目標不是簡單「排版好看」,而是讓同一段對話能換幾種讀法。當前可用的是 報紙模式(CSS 多列、共用宿主滾動容器);無縫與複製兩種模式在路線圖中,尚未實現。
這是什麼¶
dsh-chat-columns 把 DSH Web 會話正文排成報紙式多列:所有列共用宿主唯一的滾動容器,滾動、錨點與「加載更早」仍由宿主負責,插件只負責列寬與分欄邏輯。README 強調這不是給 flex 容器隨手加 column-count——宿主 [data-chat-flow] 帶 .column 且爲 display:flex,CSS 多列對 flex 無效,插件需改回 display:block 並配合調整 --dsh-chat-content-width 等變量。插件無構建步驟,主要邏輯在 lib/client.js。package.json 版本爲 0.1.5,許可證 MIT;GitHub 倉庫當前星標爲 0。
核心功能(以當前版本爲準)¶
下面只列資料中已寫明、且報紙模式已實現或驗收中的能力。
報紙模式¶
- 按滾動容器寬度自動在 1~3 列間切換(自動模式下每列可讀寬度下限約 420px)。
- 支持手動指定 1 / 2 / 3 列或
auto;右下角徽標可點擊切換。 - 所有列共用宿主唯一滾動容器,插件不寫
scrollTop。 - 矮卡片(高度 ≤420px)不被列邊界切斷;較長消息允許跨列,屬報紙讀法設計。
- 滾到頂可觸發宿主「加載更早」(需用戶自行滾到距頂約 24px,並有防抖)。
- 多面板場景下嘗試識別主會話容器(
[data-conversation-scroll]內內容行最多者),僅在容器內選取 flow;分不清時凍結佈局並提示。 - 暗色主題跟隨宿主 token;列數寫入
localStorage,刷新後保持。 - 卸載時清理樣式、徽標、內聯變量、調試 API 與
html上的data-dshc*標記。
計劃中、尚未交付的模式¶
README 將三種讀法統一命名爲 報紙 / 無縫 / 複製(0.2.0 目標)。無縫側重一屏一列、接縫連續上移;複製側重只讀副本分欄、各欄獨立滾動(受 React 單節點樹約束,交互須用靜態副本,不能點按鈕)。二者當前未實現。
安裝與啓用¶
插件歸屬 web profile。資料中的安裝步驟在取得插件本地目錄後,用 DSH CLI 加入 bundle(勿自行拼接未在文檔出現的 github:owner/repo 形式):
dsh plugin --profile web add "$PWD/dsh-chat-columns"
將 $PWD/dsh-chat-columns 換爲你本機上的插件目錄絕對路徑即可。裝完後會進入 ~/.dsh/profiles/web/package.json 的 dsh.profile.bundles;dsh-hmr 在線時通常幾秒內熱生效,無需重啓。若未生效,可重啓 web 進程(README 提醒:dsh-web 即當前會話環境,重啓會打斷當前對話)。
安裝前建議自行查看倉庫源碼與 MIT 許可證:客戶端插件隨 DSH Web 進程加載,權限與當前 DSH 運行環境一致。
徹底卸載:
dsh plugin --profile web remove dsh-chat-columns
README 另注:配置熱重載後若未刷新頁面,新實例可能要等下一次佈局事件才接管當前會話;啓用或重裝後刷新一次頁面是推薦做法。
典型用法¶
切換列數¶
在瀏覽器開發者工具控制台調用全局調試 API:
__dshChatColumns.set(1) // 關掉(恢復單列)
__dshChatColumns.set(2) // 固定兩列
__dshChatColumns.set(3) // 固定三列
__dshChatColumns.set("auto") // 按窗口寬度自動(默認)
__dshChatColumns.get() // 查看當前狀態
偏好保存在 localStorage["dsh-chat-columns:cols"]。
列數計算規則(資料摘錄)¶
自動與手動模式使用固定公式(gap = 40,須與 CSS column-gap 一致):
fit(w) = max(1, floor((W + gap) / (w + gap)))
自動 = max(1, min(3, fit(420)))
手動 n = max(1, min(n, 3, fit(260)))
列數依據滾動容器 clientWidth;窗口或側欄變化由 ResizeObserver 監聽。
本地開發與沙盒¶
無構建步驟,修改 lib/client.js 保存後依賴 dsh-hmr 熱替換。可用倉庫內 harness/index.html 配合本地 HTTP 服務查看多列效果(詳見倉庫 README「開發」一節)。
適用場景與注意¶
適合誰: 經常在 DSH Web 裏閱讀或復盤超長對話、希望寬屏橫向利用空間、快速掃讀全貌的開發者。報紙模式風險相對低:不接管滾動,與宿主錨點、加載更早的分工較清晰。
應注意:
- 當前僅是 CSS
column-count的報紙模式,不是「一屏一頁」的無縫閱讀。 - 頁面存在多個
[data-chat-flow](軌跡、子代理等)時,插件依賴主會話容器啓發式;多個滾動容器且行數接近時仍可能誤判,資料標明未充分驗證。 - 超寬表格、
sticky元素在多列下的表現資料中標註爲未驗證。 - 移動端未專門適配;420px 列寬下限在手機上通常恆爲 1 列。
- 維護方 README 寫明穩定性處於 0.1.x 驗收階段,不宣稱全部穩定性用例通過;細節見倉庫
docs/testing.md與已知限制列表。
結尾¶
dsh-chat-columns 在插件層爲 DSH Web 長會話提供了第一種額外讀法——報紙式多列,並預留無縫、複製兩種模式的設計空間。若你要試用或跟進版本,可從社區目錄與 GitHub 倉庫獲取說明與源碼:
- 目錄頁:https://www.skillhub.cn/plugins/WuZiyi521/dsh-chat-columns
- GitHub:https://github.com/WuZiyi521/dsh-chat-columns
社區目錄爲獨立站點,與 DeepSeek / 幻方無官方從屬關係;安裝與權限請以你本機 DSH 環境與倉庫最新 README 爲準。