dsh-conversation-width:固定 DSH 對話框內容列寬度

前言

DeepSeek Harness(DSH)Web 界面裏,對話正文列默認可以左右拖動,寬度會記在瀏覽器 localStorage。對習慣固定閱讀寬度的開發者來說,每次換設備或誤拖手柄都要重新調一遍;若希望寬屏下正文不要拉得過寬,原生拖拽也缺少「按比例跟隨窗口」這一類選項。下面介紹社區插件 dsh-conversation-width(維護者 AvigatorC),在 設置 → 通用 裏增加一行配置,在不改 DSH 組件源碼的前提下,把內容列寬度鎖成像素值或按對話列比例縮放。

這是什麼

dsh-conversation-width 是面向 DSH Web UI 的客戶端插件,分類上屬於社區目錄裏的「趣味換裝」類佈局調整。當前版本 v1.0.0,許可 MIT。倉庫:https://github.com/AvigatorC/dsh-conversation-width;SkillHub 目錄頁:https://www.skillhub.cn/plugins/AvigatorC/dsh-conversation-width。

插件通過覆蓋會話體上的 CSS 變量 --dsh-chat-content-width(!important)生效,正文列與輸入框卡片的 max-width 都讀該變量,因此與原生拖動手柄邏輯並行:選「默認可調」時不做任何干預。

核心功能

裝好後,在 設置 → 通用 中、「字號大小」下方會出現對話寬度相關選項,三種模式三選一:

模式 行爲
默認可調 完全不干預,保留原生左右拖動
固定像素 鎖死爲 420–2400px,拖動手柄隱藏
窗口比例 40–100%,隨窗口縮放自動跟隨

比例模式讀取 DSH 寫出的 --dsh-conversation-column-width,即「對話列寬 × N%」,側欄開合時會跟着自適應。

數值框支持直接鍵入,按 Enter 或失焦提交;懸停或聚焦時可用上下箭頭微調(像素 ±10,比例 ±1)。

偏好寫入 localStorage,鍵名爲 dsh.conversationWidth,示例結構:

{ "mode": "percent", "px": 820, "percent": 72 }

把模式切回「默認可調」即可恢復原生行爲;刪除該鍵等同於恢復出廠。

設置行儘量複用官方 @deepseek-ai/dsh-client-ui-primitives 的 Menu 與箭頭圖標(與「工作步驟展示」等原生行同款);該模塊不可用時自動退回原生 select,不會讓設置行崩潰。

安裝與啓用

DSH 生態裏插件常以「本地 bundle」或插件市場目錄安裝;本倉庫已投遞 awesome-dsh-plugin,收錄後可在 DSH 插件市場(例如 dsh-market)搜索 dsh-conversation-width 一鍵安裝,市場按倉庫源碼安裝,不需要 npm 包。尚未收錄或市場裏搜不到時,用下面從倉庫安裝的方式,功能相同。

從倉庫安裝時,先把倉庫克隆到本地,再把該目錄作爲本地插件裝進當前 DSH profile。plugin_manager 的 install_bundle 接受目錄路徑,例如在會話裏讓 Agent 執行類似說明(路徑換成你本機實際目錄):

git clone https://github.com/AvigatorC/dsh-conversation-width.git

裝好後打開 設置 → 通用,在「字號大小」下方選擇模式即可。升級時在克隆目錄執行 git pull 後刷新 DSH 窗口(會熱替換插件模塊);移除時使用同一 plugin_manager 的 remove_bundle。

安裝前建議自行瀏覽倉庫源碼與 LICENSE。插件在 DSH 進程權限下運行,與所有社區插件一樣,不應在未審閱代碼的情況下 blindly 安裝。

典型用法

  1. 安裝並刷新 Web UI。
  2. 進入 設置 → 通用,在「字號大小」下將模式設爲「固定像素」,例如 820px,適合希望正文列始終接近技術博客閱讀寬度的場景。
  3. 若希望寬屏時略收窄、窄屏時仍佔滿對話列,可選「窗口比例」,例如 72%,隨窗口與側欄變化自動重算。
  4. 需要臨時恢復拖動手柄時,切回「默認可調」。

兼容性與注意

插件在 dsh 0.2.1-rc.3 上開發與驗證。package.json 未聲明 engines,安裝時不會因版本號被攔截。

寬度覆蓋錨定在會話體屬性 data-conversation-content。若某個 dsh 版本的會話體沒有該屬性,CSS 覆蓋會靜默失效(不報錯、不影響界面,只是不生效)。將來 DSH 若改名該屬性,需改插件 client.js 裏 widthCss() 的選擇器。

peerDependencies 包含 @deepseek-ai/dsh-client-ui-primitives(>=0.2.0-rc.2)與 react(>=18),均爲 optional;僅影響設置 UI 是否使用官方 Menu 組件,不影響寬度邏輯本身。

結尾

dsh-conversation-width 用一行通用設置,把 DSH 對話內容列從「只能拖拽」擴展爲可選的像素鎖定或列寬比例,適合固定閱讀寬度或隨窗口自適應的佈局需求。詳情與 issue 見 GitHub:https://github.com/AvigatorC/dsh-conversation-width;目錄介紹見 SkillHub:https://www.skillhub.cn/plugins/AvigatorC/dsh-conversation-width。

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

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

小夜