dsh-composer-resize:給 DSH 聊天輸入框加可拖動高度與更低默認上限

前言

在 DeepSeek Harness(DSH)裏寫長提示、貼代碼塊時,輸入區會跟着內容一直長高。官方行爲是長到約 336px 纔開始在框內滾動,且不能用手拖動固定高度。對經常改多行草稿的開發者來說,框時高時低、佔屏又偏滿,閱讀和排版都不順手。

下面介紹的 dsh-composer-resize 是維護者 ayachinene285 發佈的客戶端插件:在聊天輸入框頂部加一條拖動把手,可在一定範圍內自由改高度;鬆手後高度寫入瀏覽器 localStorage,重啓仍生效。雙擊把手可回到「跟着內容長、但封頂更低」的自動增高模式。實現上只改 [data-input-scroll] 的 height / max-height,不接管 React 組件。

這是什麼

  • 名稱:dsh-composer-resize(npm 包名與倉庫同名)
  • 分類:客戶端(dsh.client.platform 爲 web)
  • 許可證:MIT
  • 版本(package.json):0.1.0
  • GitHub 星標:目錄頁記錄爲 1(以社區目錄爲準)

插件通過 Cordis bundle patch(cordis.patch.yml)做純 DOM 增強,宿主入口 lib/index.js 爲空實現,實際邏輯在客戶端導出 lib/client.js。

與官方輸入框行爲的差異

DSH 默認:輸入框隨內容增高,約 336px 後內部滾動,不能拖。

啓用本插件後:

模式 行爲
自動增高(默認 / 雙擊復位) 仍隨內容變高,但 max-height 封頂 168px(約爲官方一半)
固定高度(拖動後) 高度鎖定爲你拖定的值,超出部分在框內滾動,不再忽高忽低

拖動範圍:64px ~ 屏高的 72%。拖動時右上角會顯示當前像素值。

核心功能

  1. 把手交互:在 [data-composer-card] 輸入卡片頂部插入約 10px 高的細把手;鼠標移上或聚焦時出現。
  2. 任意時刻可拖:無論當前一行還是多行,往上拖變高、往下拖變矮;從「當前實際高度」起算,第一次移動後切換爲 height / min-height / max-height 三件套固定高度。
  3. 雙擊復位:清除內聯 height,回到僅設 max-height 的自動增高模式(封頂 168px)。
  4. 持久化:鬆手即寫入 localStorage,換會話、重啓瀏覽器或 DSH 仍保持上次高度(按本次瀏覽器,不寫進 DSH 配置文件)。
  5. 兼容範圍:不改動發送、附件、斜槓命令;MutationObserver 加定時兜底,React 重建輸入框後自動補回把手與樣式;卸載時移除把手、樣式及內聯高度。

安裝與啓用

安裝步驟以倉庫 README 爲準。插件以當前 DSH 進程權限運行,安裝前建議瀏覽源碼與 MIT 許可證。

先克隆倉庫到本地,再讓 desktop profile 以本地路徑安裝:

git clone https://github.com/ayachinene285/dsh-composer-resize.git
dsh plugin --profile desktop add "$(pwd)"

(第二條命令需在克隆得到的倉庫目錄內執行,使 $(pwd) 指向該插件根目錄。)

手動方式(README 原文):

  1. 將目錄放到 ~/.dsh/profiles/<profile>/node_modules/dsh-composer-resize
  2. 在該 profile 的 package.json 裏,dependencies 增加 link: 指向該目錄
  3. 在 dsh.profile.bundles 末尾加入 dsh-composer-resize
  4. 完全退出 DSH 再重新打開

社區目錄頁:https://www.skillhub.cn/plugins/ayachinene285/dsh-composer-resize(獨立站點,與 DeepSeek / 幻方無官方從屬關係)。

典型用法

無需額外配置項;安裝並重啓 DSH 後,在聊天輸入框頂部即可使用把手。

  1. 臨時拉高寫長文:鼠標移到把手或聚焦輸入區,向上拖至合適高度;鬆手後進入固定高度模式,長內容在框內滾動。
  2. 收回佔屏:向下拖矮輸入框;高度會記住,下次打開仍是該值。
  3. 恢復「隨內容長」:雙擊把手,回到自動增高,且最高約 168px。

示意見倉庫 docs/screenshot.png。

實現要點(便於排錯)

插件不註冊 UI 組件,流程概括爲:

  1. 定位 [data-composer-card](position: relative),頂部插入把手;
  2. 拖動 → 固定高度模式;雙擊 → 清內聯 height,自動增高模式;
  3. 監聽 DOM 變化並在 React 重建後重新掛載;
  4. 僅觸及 [data-input-scroll] 的高度相關樣式。

適用場景與注意

適合:經常在 DSH 桌面 Web 端寫多行提示、希望輸入區高度可控、且希望默認自動增高不要頂到半屏的用戶。

邊界(README「已知邊界」):

  • 隻影響聊天輸入框;隊列編輯框(QueueDock)仍爲官方樣式。
  • 固定高度模式下不會再自動增高;要恢復自動增高請雙擊把手。
  • 高度僅存在瀏覽器 localStorage,不進入 DSH 配置。
  • 依賴 data-composer-card、data-input-scroll 兩個 DOM 標記;若未來 DSH 改名,插件會靜默不生效(不報錯)。

結尾

dsh-composer-resize 用最小 DOM 補丁解決「輸入框只能長到 336px、不能拖」的問題:拖動定高、雙擊回自動、默認封頂 168px,並本地記住高度。需要詳情與源碼時,可看社區目錄頁與 GitHub 倉庫。

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

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

小夜