前言¶
DeepSeek Harness(DSH)把能力拆成插件,界面外觀通常由宿主自帶的主題服務與 design token 決定。若你只想換強調色、調內容密度或字體,又不想手寫整份 CSS 或改 DOM,就需要一個走官方主題 API、且只覆蓋 dsh 裏真實存在的 token 的插件。dsh-theme-studio 面向這類需求:在設置裏集中改主題,並通過 ctx.theme.overrideTokens() 疊層,而不是直接改頁面樣式。
這是什麼¶
dsh-theme-studio 是維護者 hj01857655 發佈的 DSH 插件,npm 包名同爲 dsh-theme-studio,在 SkillHub 等社區目錄中歸類爲「趣味換裝」。它通過 accent 預設、自定義強調色、內容密度、字體、動畫開關以及原始 token / 自定義 CSS,定製 dsh 客戶端 UI 主題。
插件聲明可改動的 token 以 dsh 實際 stylesheet(如 @deepseek-ai/dsh-client-ui-theme)爲準,並在 src/tokens.ts 與測試中約束;不能 faithful 實現的能力(例如全局圓角)不會提供。自 dsh-theme-studio@0.7.0 起,開發與發佈已遷到 monorepo hj01857655/dsh-plugins 的 packages/dsh-theme-studio;獨立倉庫 hj01857655/dsh-theme-studio 主要保留歷史。新 issue 與 PR 應提到 monorepo。
能改什麼、不能改什麼¶
下面兩點來自 README 對機制與宿主限制的說明,安裝前值得先看一眼。
- 只寫 dsh 裏存在的 design token。 變更經 dsh 主題服務的
ctx.theme.overrideTokens('dsh-theme-studio', overrides)寫入,卸載插件會移除該來源的整層 override,不會留下陳舊 token。 - 沒有 border-radius 控制。 dsh 在各組件上硬編碼圓角(含圓形等),未提供 radius token,插件因此不提供該項。
- 動畫開關不是 token。 dsh 無 motion token;關閉動畫時插件注入樣式表,將 transition / animation 時長壓到
0.001ms(而非0s),避免部分依賴transitionend/animationend的組件掛起;卸載後該樣式表隨插件作用域移除。
核心功能¶
強調色與預設¶
- 12 套預設:Ocean、Forest、Sunset、Monochrome、Nord、Dracula、Gruvbox、Solarized、Tokyo Night、Catppuccin、Rosé、Ember。
- 暗色感知:預設若在暗色模式下 accent 與亮色不同,會隨 dsh 進入暗色模式自動適配。
- 自定義 accent,並可單獨設置暗色模式 accent。
- Contrast guard:暗色 accent 低於 WCAG 亮度下限時會分步提亮,面板會提示已調整。
密度、字體與動畫¶
- Density:Compact / Comfortable / Spacious。密度不寫入 override 層的
--dsh-content-font-size,而是調用ctx.theme.setFontSize(),與官方 Appearance 裏的字號步進一致;在官方處改字號時,此處對應預設會高亮,反之亦然。 - Font family:System / Monospace / Serif。
- Animation toggle:見上文機制說明。
自定義 CSS 與主題文件¶
- Custom CSS:可覆蓋任意
--dsw-*或--dsh-*token(包括在自定義 CSS 框裏自行設置--dsh-content-font-size)。 - Import / export:主題以經校驗的 JSON 導入導出;舊版導出的
density字段在導入時會被忽略(字號現由宿主狀態管理)。 - Live preview:用與應用相同的變量名渲染,預覽與真實 token 不一致時會在預覽裏反映出來。
偏好經 localStorage、導入 JSON 或手改配置進入時,統一走 normalizePreferences() 校驗與歸一化。
安裝與啓用¶
在已安裝 dsh CLI 的環境中,README 給出的安裝方式爲:
dsh plugin add dsh-theme-studio
安裝後,插件在設置中註冊 settings.section 槽位(order 47),在對應分區裏調整主題;偏好持久化在 localStorage。
插件以當前 dsh 進程權限運行。安裝前應自行查看源碼與許可證(MIT);社區目錄 SkillHub 爲獨立站點,與 DeepSeek / 幻方無官方從屬關係。
典型用法¶
- 執行
dsh plugin add dsh-theme-studio並重啓或刷新 dsh 客戶端(按你本地 dsh 插件加載方式爲準)。 - 打開設置,找到 Theme Studio(或插件註冊的主題相關分區)。
- 選擇 12 套預設之一,或填寫自定義 accent / 暗色 accent;需要時在 Density、Font family、Animation 上切換。
- 在 Custom CSS 中按需寫
--dsh-*/--dsw-*覆蓋;面板內 live preview 可對照當前生效的 accent。 - 滿意後使用 export 保存 JSON;換機器或重裝時用 import 恢復。Reset 會恢復首次在本插件改密度前的宿主字號等狀態。
從源碼本地鏈接安裝(README 提供,需 Node >= 20 與構建環境):
git clone https://github.com/hj01857655/dsh-theme-studio.git
cd dsh-theme-studio
npm install && npm run build
dsh plugin add link:.
日常用戶以 npm 包名安裝即可;跟進新版本可關注 monorepo 中 packages/dsh-theme-studio 的發佈。
機制簡述(與多插件共存)¶
插件 inject 依賴包括 slots、locale、theme。每次主題變更通過 overrideTokens 疊一層 partial token;多層按順序組合,同一 token 後寫覆蓋先寫;每個值必須是 { light, dark } 對,避免在另一配色下不可讀。層以來源 dsh-theme-studio 爲鍵,重新發佈會整層替換,縮小 override 集合時不會殘留舊 token。兩個主題類插件可並存,各自隻影響自己寫入的 token。
適用場景與注意¶
- 適合:長期用 DSH 做智能體或工具開發、希望統一強調色與閱讀密度,又希望與官方 Appearance 字號一致的用戶。
- 不適合:需要全局改圓角、或依賴 dsh 未暴露 token 的視覺效果;這類需求只能等宿主擴展 token,或在 Custom CSS 範圍內試探。
- 安全與信任:插件會持久化偏好並改寫主題 token;僅安裝你審查過的版本,並知悉其運行在 dsh 同一進程內。
結尾¶
dsh-theme-studio 把「預設 accent + 官方字號 API + token 疊層 + JSON 主題文件」收進一塊設置面板,約束在 dsh 真實 token 之內,避免與宿主主題服務打架。目錄頁:https://www.skillhub.cn/plugins/hj01857655/dsh-theme-studio;代碼與說明:https://github.com/hj01857655/dsh-theme-studio(0.7.0 及以後見 https://github.com/hj01857655/dsh-plugins/tree/main/packages/dsh-theme-studio)。