DeepSeek Harness (DSH) Web UI 的左側會話列表欄默認有一個硬編碼的拖動下限,官方設定爲 264px。當屏幕空間有限或需要更緊湊的界面佈局時,這個限制會帶來困擾。dsh-sidebar-width 插件通過在 dsh web 啓動時修補客戶端 bundle 文件,直接調整這一數值。它不提供任何新的 UI 面板,僅專注於調整側邊欄的尺寸邏輯。
插件定位¶
這是一個由 garrisonz 維護的打補丁式插件,遵循 MIT 許可證。插件的核心價值在於繞過官方客戶端 bundle 的硬編碼限制,讓開發者能夠根據實際屏幕尺寸和偏好,自由控制左側欄的拖動範圍和默認展開寬度。
核心功能¶
該插件僅作用於左側會話列表欄的寬度控制:
- 調低拖動下限:突破官方 264px 的限制,允許側邊欄更窄。
- 自定義拖動上限:防止側邊欄過度佔屏,設定最大拖動寬度。
- 設定展開默認寬度:改變頁面初始加載時側邊欄的寬度。
- 兼容性:兼容兩代 store 結構(
d.sidebar與d.layoutInfo.sidebar),並內置正則容錯邏輯。 - 冪等性:插件支持重複運行,升級 DSH 後重啓可自動重打補丁。
安裝與啓用¶
使用官方推薦方式通過 npm 安裝:
dsh plugin --profile web add dsh-sidebar-width # npm(推薦)
安裝完成後,無需手動操作。插件會在 dsh web 啓動時自動檢測並修補 @deepseek-ai/dsh-client-ui-layout/lib/client.js 文件。首次運行會自動生成備份文件(如 client.js.dsh-sidebar-width.bak)。
配置方法¶
安裝後,編輯 ~/.dsh/profiles/web/cordis.patch.yml 文件,添加以下配置項:
- id: sidebar-width
name: 'dsh-sidebar-width'
config:
min: 160 # 拖動下限,默認 180
max: 420 # 拖動上限,默認保持 bundle 原值
defaultWidth: 240 # 展開默認寬度,默認保持 bundle 原值
配置修改後,重啓 dsh web 即可生效。
工作原理¶
由於官方客戶端 bundle 中的寬度鉗制邏輯(clampWidth(px, 264, 420))和默認值(280px)是寫死在 @deepseek-ai/dsh-client-ui-layout/lib/client.js 文件中的,且運行時未暴露可修改的接縫,該插件採用“打補丁”的方式實現功能:
- 啓動時修補:
dsh web啓動時,插件讀取配置,對被服務的client.js文件進行正則替換。 - 安全備份:首次運行會創建
.bak備份文件。 - 結構兼容:插件利用正則對不同的 store 結構(舊版
d.sidebar與新版d.layoutInfo.sidebar)進行容錯匹配,確保在不同版本下不會出錯。 - 冪等執行:通過標記機制,多次運行不會重複修改文件;若未來 bundle 結構發生重大變更,插件會安全拒絕修補。
卸載與回滾¶
使用以下命令移除插件:
dsh plugin --profile web remove dsh-sidebar-width
插件移除後,補丁文件不會自動回滾。如需還原,可手動將備份文件(client.js.dsh-sidebar-width.bak)改回原文件名。
總結¶
該插件適合需要精細控制 DSH Web UI 佈局的開發者。它通過極簡的配置文件實現了對側邊欄尺寸的完全控制,且機制透明(基於文件修補)。詳細信息可參考:SkillHub 目錄 或 GitHub 倉庫。