dsh-widthkeeper:給 DeepSeek Harness 會話內容列加一根可控的「守寬人」

前言

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
羽毛球分组比赛记分
小程序二维码

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

小夜