dsh-ui-overrides:爲 DeepSeek Harness Web UI 添加用戶 CSS

前言

DeepSeek Harness(DSH)採用「一切皆插件」的架構,每個插件負責特定的功能模塊。但在實際使用中,不同插件的 UI 風格往往不一致,有些插件的浮動面板半透明效果與整體主題衝突,或者某些元素的位置、顏色與個人偏好不符。要修改這些外觀,通常需要修改插件源碼或等待開發者發佈新版本。dsh-ui-overrides 提供了一種不需要觸碰插件源碼的方案:讓用戶擁有自己的樣式表,通過 CSS 覆蓋任意插件在 Web UI 中渲染的元素。

插件定位

dsh-ui-overrides 是一個爲 DSH Web UI 提供用戶自有 CSS 注入的插件。它維護一份樣式表,並在頁面加載時將其注入到插件樣式之後,從而允許用戶用 CSS 覆蓋任何插件的視覺效果。由開發者 cholot-Zhou 維護,開源 MIT 許可證。

核心功能

  • 注入用戶擁有的 CSS 樣式表到頁面。
  • 樣式表在插件樣式之後加載,因此可以覆蓋插件定義的樣式。
  • 支持 id、data-* 屬性、類名等選擇器,可針對任意插件元素進行樣式修改。
  • 樣式表跟隨系統主題(Canvas 等系統顏色會自動適配淺色/深色模式)。
  • 無需重新構建或重啓應用,文件變更後刷新頁面即可生效。

安裝與啓用

通過官方安裝命令添加插件:

dsh plugin --profile desktop add dsh-ui-overrides

安裝後需要完全重啓 DSH(插件在啓動時加載),然後打開一個對話頁面。

如果使用本地檢出的代碼:

dsh plugin --profile desktop add file:/absolute/path/to/dsh-ui-overrides

典型用法

編輯樣式表文件:

~/.dsh/ui-overrides.css

如果環境變量 DSH_HOME 已設置,文件位置爲 $DSH_HOME/ui-overrides.css。

文件在每次頁面加載時讀取,無需構建步驟。如果文件不存在,插件會在首次請求時創建一個僅包含註釋的起始文件。

示例 1:使引用欄完全不透明

針對 dsh-client-ui-quote 插件的引用欄,將其背景設爲系統 Canvas 顏色並移除毛玻璃效果:

#dsh-quote-bar,
#dsh-quote-popover,
#dsh-quote-toast {
  background: Canvas !important;
  -webkit-backdrop-filter: none !important;
  backdrop-filter: none !important;
}

示例 2:調整任意插件的面板寬度

通過 DevTools 檢查元素,獲取穩定的選擇器(優先使用 id 或 data-* 屬性),然後寫入 CSS:

/* 擴寬某個浮動面板 */
#some-plugin-panel {
  width: 420px !important;
}

示例 3:統一插件的所有提示框顏色

[data-tooltip] {
  background: #1e1e22 !important;
  color: #fff !important;
}

適用場景與注意

  • 適合需要在現有插件基礎上微調外觀、修復主題衝突或統一視覺風格的用戶。
  • 選擇器來自目標插件,若插件在更新中修改了 DOM 結構或類名,已編寫的規則可能失效,需相應更新選擇器。
  • 插件僅注入 CSS,不支持用戶編寫的 JavaScript,無法添加新行爲。
  • 樣式表由 DSH 主機從本地文件服務,不會上傳到網絡。
  • 需要 Web UI 配置文件(desktop 或 web),無頭/TUI 配置文件不加載客戶端樣式。

小結

dsh-ui-overrides 將 CSS 注入能力交給用戶,使在不修改插件源碼的情況下調整 DSH Web UI 的外觀成爲可能。無論是讓引用欄完全不透明,還是統一所有工具提示的顏色,都可以通過編輯 ~/.dsh/ui-overrides.css 實現。它是對「一切皆插件」理念的延伸,讓樣式定製也變成一種可配置的能力。

  • 插件目錄頁:https://www.skillhub.cn/plugins/cholot-Zhou/dsh-ui-overrides
  • GitHub 倉庫:https://github.com/cholot-Zhou/dsh-ui-overrides
羽毛球分组比赛记分
小程序二维码

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

小夜