前言¶
DeepSeek Harness(DSH)側邊欄底部會掛多個插件註冊的 sidebar.footer.action 槽位按鈕,例如文獻、主題、微信連接、工作區分類等。宿主 UI 把這一區域做成橫向 flex 且不換行,插件一多,子項會被壓縮或截斷。若你本地裝了好幾個底欄插件,卻看到圖標擠在一行、文字折行或顯示不全,問題往往出在容器佈局而不是單個插件本身。下面介紹客戶端插件 dsh-sidebar-footer-rows(維護者 polychromate),它通過注入樣式把底欄改成縱向「一行一個、鋪滿整行」,並在側邊欄摺疊爲窄條(rail)時恢復宿主原有的居中單行表現。
這是什麼¶
dsh-sidebar-footer-rows 是 DeepSeek Harness 的客戶端插件(分類:客戶端 / UI 相關)。它不新增業務按鈕,只調整 @deepseek-ai/dsh-client-ui-sidebar 裏底欄動作區域的 CSS 佈局:由默認的「擠在一行」改爲「每個動作佔滿一行寬度」。倉庫:https://github.com/polychromate/dsh-sidebar-footer-rows;社區目錄頁:https://www.skillhub.cn/plugins/polychromate/dsh-sidebar-footer-rows。
宿主爲什麼需要補丁¶
README 說明,宿主給底欄容器寫了類似下面的規則(類名前綴隨構建哈希變化,後綴如 _footerActions 來自 CSS Module):
.…_settingsArea, .…_footerActions { flex:none; width:100%; min-width:0 }
.…_footerActions { display:flex } /* 沒有 flex-wrap */
容器是 flex 且不允許換行,子項默認 flex-shrink:1,註冊者增多時就會被壓縮、截斷。本插件注入一張樣式表,把該容器改成縱向排列;並用 :not([class*="_collapsed"]) 限制在側邊欄展開態,摺疊成 rail 時不改宿主原本的圖標尺寸與居中排列。
選擇器用 [class*="_footerActions"] 等子串匹配,是因爲宿主類名前綴(如 README 中提到的 kB3qhq_)每次構建會變,而 _footerActions、_root、_collapsed 等局部名相對穩定。
核心功能¶
- 縱向堆疊:底欄
sidebar.footer.action條目由一行擠排改爲每個佔一行全寬。 - 統一子項寬度與對齊:部分條目自帶滿寬樣式,但例如
dsh-literature對按鈕寫了行內width: 36,僅靠容器align-items: stretch壓不住;插件對底欄內子元素使用width: 100% !important,並對button統一左對齊與padding-inline: 8px,避免拉滿寬度後圖標仍居中、各行 x 不對齊。 - Host 側空實現:樣式在 Client 側完成;
index.js爲空實現,client.js用ctx.effect注入並清理<style>。 - 可選調參:若只要自動換行、能放幾個放幾個,可把
client.js內 CSS 換成flex-wrap: wrap(見下文「調參」)。
代價(README 已說明):底欄裏所有 button 都會被拉成整行寬、內容左對齊。若某個插件需保持原始尺寸,需用更具體的 CSS(如 width: auto !important 按類名或 data-*)覆蓋。
安裝與啓用¶
插件以當前 DSH 進程權限運行;安裝前請自行查看倉庫源碼與 MIT 許可證,確認可接受其行爲。
本地目錄安裝(README 原文)
- 打開 DSH:設置 / 側邊欄 → 插件 頁。
- 添加插件,填寫本插件目錄的絕對路徑。
- 安裝並重新加載頁面(Client 改動通常需重裝或使用鏈接目錄並重啓宿主)。
發佈後命令行(README 原文,包名以發佈爲準)
dsh plugin --profile <你的 profile> add <包名>
README 未給出固定的 dsh plugin add github:owner/repo 形式;以你使用的 profile 與市場/包名爲準。當前 package.json 中包名爲 dsh-sidebar-footer-rows,版本 1.0.3。
實測環境:作者在 DSH 0.2.1-rc.5 桌面版(macOS)上實測通過。倉庫未聲明 engines.dsh;選擇器依賴的 _footerActions / _root / _collapsed 僅在該版本上覈對過,其他版本需自行驗證。
典型用法與調參¶
安裝後無需額外配置即可生效:展開側邊欄時底欄動作應爲一行一個;摺疊爲 rail 時保持宿主默認單行居中。
若希望「換行多列」而不是嚴格一行一個,可編輯 client.js 中的 CSS,例如:
[class*="_footerActions"] { flex-wrap: wrap; gap: 6px; }
改完後重新加載頁面;Client 代碼變更需重裝插件或使用鏈接目錄並重啓宿主。
適用場景與注意¶
適合:同時安裝多個 sidebar.footer.action 插件,需要在展開側邊欄時清晰看到每個底欄入口、避免截斷與文字異常折行的用戶。
同類參考(README):npm 上另有功能相近的 dsh-sidebar-footer-stack(不在社區目錄,但可通過 dsh plugin add dsh-sidebar-footer-stack 安裝);社區目錄中還有 @choi-p/dsh-footer-order(可配置順序的上下堆疊)。本插件定名 dsh-sidebar-footer-rows,原因之一是 npm 名 dsh-sidebar-footer-stack 已被佔用。
兼容與維護:純 CSS 補丁,無 Host 業務邏輯;宿主 UI 大改類名或底欄結構時選擇器可能失效。未聲明 engines.dsh 時,升級 DSH 後應目視檢查底欄佈局。
結尾¶
dsh-sidebar-footer-rows 用一張 Client 側樣式表解決 DSH 側邊欄底欄 flex 不換行導致的擠壓問題,把 sidebar.footer.action 改成展開態下一行一個、全寬左對齊,並在 rail 摺疊態交還宿主默認行爲。需要細節、調參或與同類插件對比時,以 GitHub README 爲準。