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