dsh-theme-palettes:DeepSeek Harness 的配色方案基礎設施

前言

DeepSeek Harness(DSH)的生態走「一切皆插件」路線,但界面主題層是例外:harness 的 Appearance picker(light/dark/system)不對第三方開放,主題註冊表也不接受插件寫入。想給 web 界面換一套完整配色,第三方插件此前沒有標準入口。

下面介紹的 dsh-theme-palettes 走的是另一條路:不碰主題註冊表,而是通過一層 theme.overrideTokens 把調色板按 token 疊加到當前主題上,同時提供 themePalettes 註冊 API,讓任何插件都能貢獻自己的調色板。

這是什麼

dsh-theme-palettes(RainbowDashy/dsh-theme-palettes)是 DSH 的配色方案基礎設施,解決兩件事:

1、內置 VSCode Red、Solarized Dark、Solarized Light 三個調色板,開箱即用;
2、通過 themePalettes API 允許第三方插件註冊自己的調色板,無需改動 harness 主題註冊表。

許可證爲 MIT。

核心功能

內置三個調色板

三個內置調色板分別使用 id vscode-red、solarized-dark、solarized-light。每個調色板都是把一個參考主題的 colors 塊移植到 DSH 的 --dsw-* 設計 token 上:

  • Solarized 兩個調色板各含 89 個 token;
  • VSCode Red 含 87 個 token,success/warn 三級狀態保留 stock 值。

完整的 token 映射在倉庫的 src/palettes.js 中維護。

通過 overrideTokens 疊加,不碰主題註冊表

  • 插件不註冊進 harness 主題註冊表,也從不調用 setTheme——harness 的 Appearance picker(light/dark/system)本身不可被第三方擴展。
  • 調色板通過單一 theme.overrideTokens 層疊加到當前主題上,按 token 覆蓋;只要插件處於加載狀態,覆蓋就持續生效。
  • System 外觀先通過 OS 解析爲 light 或 dark,再映射到對應調色板;OS 配色方案切換時會重新觸發映射。
  • 移除插件即恢復 stock(default)調色板;默認配置爲 dark: default、light: default。

面向第三方作者的註冊 API

調色板是純數據。第三方插件通過 themePalettes 服務的 registerPalette 註冊自己的調色板:

{
  inject: ['themePalettes'],
  apply(ctx) {
    ctx.themePalettes.registerPalette({
      id: 'my-package/ocean',   // 建議以所屬包名作爲命名空間前綴
      label: 'Ocean',
      tokens: {
        '--dsw-alias-bg-base': '#0b1e2d',
        // ...
      },
    });
  },
}

註冊後,調色板會出現在配置下拉與目錄列表中,與其他內置調色板地位相同。registerPalette 的完整參數以倉庫 README 爲準。

安裝與啓用

用 dsh plugin 命令安裝(profile 爲 web):

dsh plugin --profile web add "github:RainbowDashy/dsh-theme-palettes"

安裝後重啓 web server,讓新的 composition row 進入 boot graph:

dsh web

兩種可選裝法:

# 固定分支或標籤
dsh plugin --profile web add "github:RainbowDashy/dsh-theme-palettes#main"

# 從本地 checkout 安裝
dsh plugin --profile web add "link:/path/to/checkout"

link: 方式讓你的編輯即時生效;file: 方式對目錄做快照。

選擇調色板

1、打開 Settings → Plugins → Plugin Configuration,展開 “Theme palettes” 卡片。
2、用 Light appearance uses / Dark appearance uses 兩個下拉爲對應外觀選擇調色板;下拉提供 Default 加上所有已註冊的調色板。
3、卡片內還有一個目錄列表,展示每個調色板的 base + accent 雙色調預覽、label、id 以及內置/第三方標記。

改動即時生效,並以 theme-palettes 命名空間持久化到用戶設置文檔 $DSH_HOME/settings.yaml,跨重啓保留:

{
  "theme-palettes": {
    "dark": "solarized-dark",
    "light": "solarized-light"
  }
}

fail-soft 處理:配置引用了未註冊的調色板 id 時按 default 處理,並在下拉中顯示爲 “(unavailable)”。宿主側持久化表面不可用時,UI 會顯示 “not persisted” 提示。

需要 rc7

配置讀寫依賴 rc7 的標準設置表面:

  • rc7 移除了設置命名空間白名單,標準 settings 表面纔可以服務第三方命名空間,本插件據此把 theme-palettes 命名空間落到與第一方命名空間相同的用戶設置文檔;
  • rc6 及更早版本使用的私有 /api/theme-palettes 路由已不存在,舊版 DSH 上不可用。

適用場景與注意事項

適合兩類人:

  • 想給 DSH web 界面整體換一套表面配色、又不想改 harness 源碼的用戶;
  • 想爲自己的 DSH 插件附帶一套配色的插件作者——調色板是純數據,註冊即可。

注意事項:

  • 插件只覆蓋表面/chrome token。參考主題的 tokenColors(語法高亮)被有意排除,因爲 DSH 主題層只暴露表面 token,代碼顏色規則沒有對應 token 可映射;
  • 覆蓋隨插件加載持續生效,移除插件即恢復 stock 調色板;
  • 插件以當前 dsh 進程權限運行,安裝前請自行檢查源碼與許可證(本插件爲 MIT)。

結尾

dsh-theme-palettes 用一層 theme.overrideTokens 加一個註冊 API,把 DSH 界面配色做成了可插拔的基礎設施:內置三套開箱即用的調色板,也給第三方作者留出了標準入口。

更多信息見倉庫與社區目錄(社區目錄爲獨立站點,與 DeepSeek / 幻方無官方從屬關係):

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

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

小夜