前言¶
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