前言¶
在 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%。拖動時右上角會顯示當前像素值。
核心功能¶
- 把手交互:在
[data-composer-card]輸入卡片頂部插入約 10px 高的細把手;鼠標移上或聚焦時出現。 - 任意時刻可拖:無論當前一行還是多行,往上拖變高、往下拖變矮;從「當前實際高度」起算,第一次移動後切換爲
height/min-height/max-height三件套固定高度。 - 雙擊復位:清除內聯
height,回到僅設max-height的自動增高模式(封頂 168px)。 - 持久化:鬆手即寫入
localStorage,換會話、重啓瀏覽器或 DSH 仍保持上次高度(按本次瀏覽器,不寫進 DSH 配置文件)。 - 兼容範圍:不改動發送、附件、斜槓命令;
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 原文):
- 將目錄放到
~/.dsh/profiles/<profile>/node_modules/dsh-composer-resize - 在該 profile 的
package.json裏,dependencies增加link:指向該目錄 - 在
dsh.profile.bundles末尾加入dsh-composer-resize - 完全退出 DSH 再重新打開
社區目錄頁:https://www.skillhub.cn/plugins/ayachinene285/dsh-composer-resize(獨立站點,與 DeepSeek / 幻方無官方從屬關係)。
典型用法¶
無需額外配置項;安裝並重啓 DSH 後,在聊天輸入框頂部即可使用把手。
- 臨時拉高寫長文:鼠標移到把手或聚焦輸入區,向上拖至合適高度;鬆手後進入固定高度模式,長內容在框內滾動。
- 收回佔屏:向下拖矮輸入框;高度會記住,下次打開仍是該值。
- 恢復「隨內容長」:雙擊把手,回到自動增高,且最高約 168px。
示意見倉庫 docs/screenshot.png。
實現要點(便於排錯)¶
插件不註冊 UI 組件,流程概括爲:
- 定位
[data-composer-card](position: relative),頂部插入把手; - 拖動 → 固定高度模式;雙擊 → 清內聯
height,自動增高模式; - 監聽 DOM 變化並在 React 重建後重新掛載;
- 僅觸及
[data-input-scroll]的高度相關樣式。
適用場景與注意¶
適合:經常在 DSH 桌面 Web 端寫多行提示、希望輸入區高度可控、且希望默認自動增高不要頂到半屏的用戶。
邊界(README「已知邊界」):
- 隻影響聊天輸入框;隊列編輯框(QueueDock)仍爲官方樣式。
- 固定高度模式下不會再自動增高;要恢復自動增高請雙擊把手。
- 高度僅存在瀏覽器
localStorage,不進入 DSH 配置。 - 依賴
data-composer-card、data-input-scroll兩個 DOM 標記;若未來 DSH 改名,插件會靜默不生效(不報錯)。
結尾¶
dsh-composer-resize 用最小 DOM 補丁解決「輸入框只能長到 336px、不能拖」的問題:拖動定高、雙擊回自動、默認封頂 168px,並本地記住高度。需要詳情與源碼時,可看社區目錄頁與 GitHub 倉庫。