前言¶
DeepSeek Harness (DSH) 生態強調插件化與模塊化。對於習慣定製開發環境的用戶而言,分散在多個插件中的主題切換、字體配置以及視覺特效往往顯得繁瑣。@skzhang/dsh-appearance 插件將界面外觀的配置收斂到一個統一的入口,提供主題管理、字體排版調整以及液態玻璃效果支持,旨在讓 Web 端的視覺定製更加集中和高效。
功能說明¶
主題管理¶
插件提供 DSH 自帶的淺色、深色和跟隨系統三種模式,並與 DSH 自身的 ui-theme.preference 雙向同步。除此之外,還支持多種預設主題(如 Catppuccin、Dracula、GitHub、Ayu 等)。
預設主題並非簡單的背景色替換,而是通過算法從種子色推導出 90 餘個 DSH token。這些 token 覆蓋了背景層級、分割線、輸入框、菜單、選中態、滾動條、代碼塊、提示框及側邊欄等所有視覺元素。推導過程使用 color-mix 處理透明度與混色,確保在淺色和深色預設之間切換時保持良好的可讀性。顏色值直接取自官方調色板,寫入位置與官方主題一致(body 層),避免自定義樣式被覆蓋。
字體與排版¶
支持自定義 UI 字體和代碼字體,輸入框會自動掃描系統字體目錄供選擇。字號範圍在 10-24px 之間。
插件支持字體平滑(通過 -webkit-font-smoothing 實現),但該效果僅作用於網頁 CSS 文本,不影響系統級原生控件。在排版方面,可調整會話流密度(控制消息條目間的間距,0 爲最緊湊),以及工具調用的行間距(通過 padding-block 實現,不參與窗口測量邏輯)。
液態玻璃效果¶
該功能僅作用於頁面中真實存在的浮層,包括菜單(role="menu")和對話框(role="dialog"[aria-modal=true])。用戶可調節模糊、透光程度及浮層範圍。
爲了保證可用性,透光效果設有下限,無論滑桿如何調整,菜單始終保持可讀。關閉該功能時,插件會主動清除 dsh-desktop-assist 插件可能遺留的玻璃樣式,防止半透明層疊加導致的視覺混亂。
持久化存儲¶
外觀設置通過 DSH 的 settings seam 寫入宿主的 settings.yaml。插件具備智能同步邏輯:
1. 若宿主分區已有用戶層配置,啓動時直接採用。
2. 若宿主從未接受過寫入,保留本地選擇並補寫到宿主,防止默認值覆蓋。
3. 寫入失敗時採用指數退避重試機制,直到分區內容與本地一致。在 memory 模式下,僅依賴 localStorage。
安裝與啓用¶
通過 DSH 插件命令安裝:
dsh plugin --profile web add @skzhang/dsh-appearance
安裝完成後,重啓 dsh web 或重新打開 Desktop 應用即可生效。在界面的「設置 → 外觀」中即可看到全部設置項,無需額外配置。
開發與許可¶
該插件使用 MIT 許可證開源。源碼結構清晰,src/client.js 爲瀏覽器端實現,scripts/build.mjs 負責打包。項目支持 node:test,無需額外配置即可運行。
項目地址:https://github.com/shkzhang/dsh-appearance