前言¶
DSH 的理念是「一切皆插件」,界面观感通常由主题决定,但 Web UI 自带的配色调整有限。开发者想换一个视觉风格时,往往要改样式文件、接受默认外观,或自己写一套覆盖层。下面介绍的插件把这件事变成了一个设置项:在 Settings → General 里增加一行 Theme palette,点选即可切换九套配色。它由 raheemmiyasin 维护,在社区目录中归入「趣味换装」分类。
这是什么¶
一句话定位:给 DSH Web UI 增加主题配色选择器。
它注册一行 settings.general.item 设置项(order 11.5,位于 Appearance 与字号旁边),每套配色带色板预览。选择后,插件通过 ctx.theme.overrideTokens() 的一层 --dsw-* 别名 token 覆盖到当前 light/dark 主题之上。每套配色在明、暗两种方案下携带相同的 token 集,因此原生的 Appearance 行仍照常决定 light / dark / system。
解决的问题是:使用 DSH Web UI 时,无法在不改源码的前提下切换界面配色。
核心功能¶
插件提供九套配色:Default、Ocean、Forest、Ember、Violet、Rose、Sand、Obsidian、Cyberpunk。前八套是纯配色;Obsidian 为中性近黑加紫色强调,取自 Obsidian 编辑器主题;Cyberpunk 最复杂,除配色外还附带 HUD 背景和自定义品牌标识。
配色 token 覆盖在当前主题之上,Appearance 始终生效。选择结果保存在该插件自身的 Host 配置中(palette,一个 volatile 文本字段),通过 ctx.configForms.get('theme-palette') 读写。它重启后保留,写入被拒绝时会回滚这一行。
Cyberpunk 的附加件¶
Cyberpunk 的两个附加组件只在选中它时出现,切换后即消失:
- Backdrop:插件自己的样式表给
body::before/body::after两个指针透明的伪元素上色,包含青色、紫色、品红霓虹组成的地平线、44px HUD 网格、扫描线和柔光暗角遮罩。面板的表面 token 是半透明的,因此看上去浮在背景上。明色模式下会使用浅色日光变体。移除配色时,该样式表一并移除。 - Brand mark:一个原创 SVG 徽标(渐变六边形、菱形核心、HUD 刻度、青色辉光)替换
sidebar.brand.mark,并填充conversation.hero.brand.mark。侧边栏的 mark 是单槽位,默认占位符优先级为 0,徽标以 −1 优先级注册来覆盖它;切换到其他配色时释放,恢复默认 mark。
安装与启用¶
在 DSH Web UI 中打开 Plugins → Add plugin,粘贴插件目录的绝对路径,安装,然后打开 bundle。设置行会出现在 Settings → General,位置紧邻 Appearance 下方。
从 Desktop CLI 安装:
dsh plugin --profile desktop add /absolute/path/to/dsh-theme-palette
由于本地目录以 link: 方式安装,修改客户端部分后刷新页面即可生效,无需重新安装。
典型用法¶
使用方式就是选中 Theme palette 行。例如在 Settings → General 中点选 Cyberpunk,界面会叠加 HUD 背景和自定义品牌标识;切回 Default 则移除这些效果。
如果同时把 Appearance 设为 light,Cyberpunk 会切换为浅色日光背景,配色本身保持不变。属于「改配置、不动源码」的用法,改完刷新页面即可。
适用场景与注意¶
适合会让 DSH Web UI 换视觉风格、又不想改主题源码的开发者,以及用 link: 方式安装、会直接改客户端代码的人。
注意:插件以当前 dsh 进程权限运行,安装前应检查源码与许可证。本插件为 MIT 许可。仓库中 vendor 的 vendor/schemastery.mjs 与 vendor/cosmokit.mjs 分别取自 Harness 自身的 @deepseek-ai/schemastery 3.19.0 与 @deepseek-ai/cosmokit 1.9.0,两者均为 MIT,并保留上游许可:vendor/LICENSE-schemastery(DeepSeek)和 vendor/LICENSE-cosmokit(Shigma,2021 至今)。之所以需要这份本地副本,是因为 profile 安装的 bundle 无法解析 Harness 安装中的包,Host 端要用它声明 Config schema;volatile 配置引用通过 Symbol.for 标识,因此这些副本能与 Host 的 settings 服务互操作。
结尾¶
该插件的价值是把换肤从改源码压缩为一次点选,同时不破坏 Appearance 的明暗控制。安装前记得核对来源与权限。
目录页:https://www.skillhub.cn/plugins/raheemmiyasin/dsh-theme-palette
源码:https://github.com/raheemmiyasin/dsh-theme-palette