前言¶
DSH 的會話內容列寬度由宿主內置的一條 2px 豎線手柄控制。這條手柄懸停在正文列外側才顯形,熱區只有 10px 寬、和內容列一樣高,拖動時很容易誤觸;默認寬度由 clamp(680px, 列寬 × 64%, 920px) 這類公式給出,隨列寬按比例變化,想穩定落到某個精確像素值,往往要反覆試探。拖動後宿主雖然會記住像素偏好,但缺少可見、可輸入的寬度入口。
下面介紹一個針對這個問題的客戶端插件:YuLaiZ 維護的 yulaiz/dsh-widthkeeper。它把寬度控制做成可見、可輸入、可固定的偏好,寫入 --dsh-chat-content-width,並在固定模式下隱藏原生手柄。
這是什麼¶
dsh-widthkeeper 是 DeepSeek Harness 的 Web / 桌面客戶端插件,定位是「會話內容列的守寬人」。維護者爲 YuLaiZ,分類爲客戶端插件,許可證 MIT,當前版本 0.2.1,要求 DSH >=0.2.0-rc.1。
它的代碼基線來自 Jinngoo 的 dsh-conversation-width 0.1.3,在此基礎上重命名、擴展功能後獨立維護,原作者版權聲明保留在倉庫的 LICENSE 中。
核心功能¶
插件提供四種能力,都只作用於主會話,右側欄子會話保持宿主自己的響應式寬度,插件不接管、也不在其中顯示控件。
1、滑桿。輸入框下方一根滑桿,拖動即固定爲該寬度,範圍 640–2000px,步進 10。
2、精確輸入。值按鈕顯示當前寬度,點擊後按模式展開不同行爲:
固定態 展開內聯編輯層,輸入精確寬度。Enter / 失焦提交,Esc 取消
超出 640–2000 會夾取到邊界,空值或非數字回退原值
層內提供「使用自動寬度」選項
自動態 固定爲上次寬度
3、自動讀數。自動模式懸停值按鈕,顯示 自動 · 836px(已手動調整 / 默認公式),讀數隨窗口、會話切換與元素替換刷新。
4、設置頁分區。插件頁之後新增「內容寬度」分區,提供顯示 / 隱藏控件、輸入寬度、查看當前自動寬度、一鍵恢復默認。恢復默認只清本插件的三個偏好鍵,不動宿主的拖拽偏好。固定寬度後可以收起輸入框下方的控件,寬度仍然生效。
安裝與啓用¶
在 DSH 插件頁點「添加插件」,可從 GitHub 或 npm 安裝:
github:YuLaiZ/dsh-widthkeeper
@yulaiz/dsh-widthkeeper
Web 版與桌面版各自獨立安裝,profile 互不相通:
| 客戶端 | profile | 安裝方式 |
|---|---|---|
Web(dsh web) |
~/.dsh/profiles/web |
插件頁「添加插件」,裝完點「Enable now」即生效,無需重啓 |
| 桌面版(App) | ~/.dsh/profiles/desktop |
插件頁「添加插件」,裝完完全退出並重開一次 DSH(命令行安裝會被拒絕) |
如果已經安裝其他寬度控制類插件,先禁用它或從 profile 卸載,再安裝本插件——同時啓用會爭搶同一條寬度軸,互相覆蓋寬度和手柄狀態。
典型用法¶
日常使用的完整鏈路是:拖滑桿定寬 → 點擊值按鈕確認當前寬度 → 需要精確值時在內聯編輯層輸入數字提交 → 定下來之後在設置頁隱藏控件保持界面乾淨。自動模式下想回到固定寬度,需要在設置頁點「切回固定寬度」,輸入框纔會重新可用。
開發調試時,插件支持軟鏈安裝,改源碼立即生效:
link:/你的克隆目錄
倉庫裏改代碼的注意點:
- 只改
src/client.js:Web 版刷新頁面生效;桌面版沒有應用內刷新入口,需完全退出並重開 DSH。 - 改
package.json/cordis.patch.yml或重新安裝 bundle:Web 版重新執行dsh web;桌面版退出並重開。 - 不要用
file:前綴:pnpm 會把目錄收進.pnpm虛擬 store 作爲副本,改源碼不會傳到node_modules,熱改失效。
工作原理¶
寬度軸 --dsh-chat-content-width 由會話主體元素自己聲明,從 :root 設值無效。插件用優先級更高的樣式規則覆蓋它,並在固定模式下隱藏原生手柄;規則在插件激活期間常駐,不隨控件顯隱或宿主重新掛載而失效。自動模式移除規則,完全回到 Harness 默認行爲。
偏好存在瀏覽器 localStorage:
dsh.widthkeeper.enabled // 是否啓用
dsh.widthkeeper.value // 固定寬度值
dsh.widthkeeper.dockVisible // 輸入框下方控件是否顯示
插件依賴宿主的會話主體元素、寬度軸和手柄標記。宿主 UI 改版若重命名這些結構,插件會靜默失效(寬度控制沒有效果)或把嵌入式子會話誤當主會話(固定寬度壓到側欄),此時在插件頁關閉本插件、等待更新即可。懸浮說明依賴宿主 @deepseek-ai/dsh-client-ui-primitives 的 Tooltip,宿主未提供該組件時不顯示懸浮提示,控件仍可用。
適用場景與注意¶
適合需要長期固定會話內容列寬度、靠精確像素對齊界面的 DSH 用戶,尤其是 Web 版和桌面版都使用、希望兩邊一致控制的人。
使用時注意三點:
1、插件以當前 DSH 進程權限運行,安裝前應檢查插件源碼與 MIT 許可證。
2、安裝前確認沒有其他寬度控制類插件同時啓用。
3、宿主改版可能使寬度控制失效,插件不鎖定具體宿主版本。
結尾¶
dsh-widthkeeper 做的事情很窄:把 DSH 會話內容列寬度從「懸停細手柄 + 公式默認值」變成一根可見的滑桿加一個可精確輸入的值按鈕,定寬後隨手收起。功能只覆蓋主會話,但正好補上了原生手柄不好用、默認寬度不好控制的那塊。
- 目錄頁:https://www.skillhub.cn/plugins/YuLaiZ/dsh-widthkeeper
- GitHub:https://github.com/YuLaiZ/dsh-widthkeeper