dsh-theme-pack:給 DSH Web GUI 換膚的 16 套第三方主題

前言

DeepSeek Harness(DSH)的 Web GUI 內建外觀只有 淺色 / 深色 / 跟隨系統 三檔。如果你在編輯器和終端裏用慣了 Catppuccin、Nord 這類配色,切到 DSH 界面時多少會覺得顏色不是自己的。直接改樣式表當然可行,但改動會和內建樣式攪在一起,上游一升級就得重新對一遍。下面介紹的 dsh-theme-pack 走的是另一條路:不碰樣式表,只通過 DSH 的主題契約註冊語義 token,就能讓 Web GUI 換上 16 套社區流行配色。

這是什麼

dsh-theme-pack 是由 math-lrz 維護的 DSH 插件,MIT 協議,面向 DSH 的 web profile,提供 16 套第三方主題皮膚。它解決的就是上面這個問題:給 Web GUI 多一批現成的外觀選項,點選即時生效,且不侵入 DSH 本身的樣式體系。

主題清單

16 套主題來自這些配色家族,源調色板定義了明暗變體的,明 / 暗兩版都有:

  • Catppuccin Mocha / Latte
  • Gruvbox Dark / Light
  • Everforest
  • Rosé Pine / Dawn
  • Solarized Dark / Light
  • Kanagawa
  • Tokyo Night / Tokyo Night Storm
  • Night Owl
  • Nord
  • Dracula
  • One Dark

核心特性

零侵入。 不重寫任何樣式表,只覆蓋 DSH 主題契約暴露的 --dsw-alias-* / --dsw-specific-* 語義 token,每套 80 個;未覆蓋的 token 自動回落內建調色板,皮膚不會和基礎樣式打架。

免構建鏈。 客戶端 bundle 是手寫的 lazy CJS(window.__ModuleLoader__.load),直接可裝載,不需要 tsdown / vite。

自帶選擇器。 在 設置 → 通用 注入「主題皮膚(16 套)」面板,色點立方點選即換膚,中英文案齊全。

數據源單一。 16 套主題的全部顏色只由 src/palettes.mjs 一份調色板文件派生,映射規則集中在 src/tokens.mjs

工作原理

DSH 的主題契約提供 ThemeRuntime.register({ id, colorScheme, tokens }) 用於註冊第三方主題。本插件的客戶端 bundle 用它註冊 16 套主題,每次註冊都掛在 ctx.effect 上,插件卸載時會逆序回收。host 半側的 lib/index.mjs 是一個 no-op 插件,存在的意義只是讓 cordis Loader 有一條可加載的條目。

安裝與啓用

前提:已安裝 DSH 並有 web profile(dsh web 可用)。

1、把插件裝進 web profile。git 依賴安裝走 pnpm:

dsh plugin --profile web add git+https://github.com/math-lrz/dsh-theme-pack.git

也可以走 npm 安裝,裝完自動掛載,無需手動 insert:

dsh plugin --profile web add dsh-theme-pack

2、如需手動掛載,編輯 %USERPROFILE%\.dsh\profiles\web\cordis.patch.yml,追加一條 loader 插入。注意 name 必須是包名,不能寫 file:/// 路徑:

- insert:
    - id: dsh-theme-pack
      name: 'dsh-theme-pack'

3、刷新瀏覽器頁面。patch 改動會觸發熱重掛,通常不需要重啓 dsh web

日常使用

經過上面的步驟,打開 設置 → 通用 → 外觀,下方會出現「主題皮膚(16 套)」面板:16 個色點立方,點擊立即換膚。內建的 淺色 / 深色 / 跟隨系統 三檔繼續可用,隨時可以切回。

想加一套自己的主題

得益於數據源單一的設計,擴展成本很低:

1、在 src/palettes.mjs 裏追加一個調色板對象;

2、運行 node scripts/build.mjs

token 映射、選擇器、文案、預覽頁全部自動派生。

已知限制

  • 主題選擇不持久化(上游限制):ui-theme.preference 的內建設置 schema 只認 light / dark / system,第三方主題 id 只在進程內有效。刷新頁面後會回到內建外觀,需要重新點選。
  • 遠程(非本機)瀏覽器同樣可以選主題,但同樣不持久。
  • 遮罩類 token(--dsw-alias-bg-mask-*)刻意沿用內建默認值,未納入皮膚映射。

適用場景與注意事項

適合誰:

  • 日常使用 DSH Web GUI、想把編輯器裏的配色習慣帶過來的人;
  • 想多幾個外觀選項、但不想重寫樣式表的人;
  • 想按自己的口味加主題、從一份調色板文件起步的人。

注意事項:

  • 插件以當前 dsh 進程的權限運行,安裝前建議先瀏覽倉庫源碼,確認代碼與許可沒問題再裝。本插件爲 MIT 協議;各主題調色板的版權歸原主題作者(Catppuccin、Gruvbox、Everforest、Rosé Pine、Solarized、Kanagawa、Tokyo Night、Night Owl、Nord、Dracula、One Dark 等開源配色的維護者)。
  • 由於上游設置 schema 的限制,主題選擇目前不能持久化,刷新頁面要重新點選,使用前要有這個預期。

結尾

一句話總結:一條安裝命令加一段 patch,DSH Web GUI 就能換上 16 套社區流行配色;不碰樣式表、不需要構建鏈,卸載時註冊的主題也會被逆序回收。

  • GitHub 倉庫:https://github.com/math-lrz/dsh-theme-pack
  • 社區插件目錄頁:https://www.skillhub.cn/plugins/math-lrz/dsh-theme-pack
羽毛球分组比赛记分
小程序二维码

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

小夜