dsh-theme-studio:在 DSH 里自定义配色与背景图,改完即生效

前言

DeepSeek Harness(DSH)的 Web 与桌面客户端自带一套主题与皮肤体系,但很多人只想微调会话区底色、边栏、输入框和文字颜色,或换一张背景图,又不想改 CSS、重启客户端,更不想和皮肤插件互相抢图层。社区插件 dsh-theme-studio(DSH 主题工坊)把这类需求收进 设置 → 主题工坊 一页:改色、调透明度、选图与预设都在浏览器里完成,配置落在 localStorage,并可导出 / 导入 JSON。下面介绍它做什么、怎么装、怎么用,以及和皮肤共存时要注意什么。

这是什么

dsh-theme-studio 由维护者 baizz-520 发布,在 SkillHub 插件目录 中归类为「趣味换装」。它是标准的 DSH bundle:只在 platform: web 的客户端加载,宿主侧 lib/index.js 为空实现,配色与设置页全部在浏览器 bundle(lib/client.js)里完成。插件通过 ctx.theme.overrideTokens 叠一层可卸载的令牌覆盖,并对部分被皮肤写死的表面加一层受 html[data-dts-*] 门控的 !important 绘制,避免「只改了一半」;不涉及模型、工具或网络请求。仓库采用 MIT 许可证,包内附带行为测试,当前基线为 43/43 通过。

核心功能

装好后在 设置 → 主题工坊 中可逐项开关「是否覆盖内置配色」。已核实的能力包括:

项目 说明
背景色 + 背景透明度 会话区底色,不透明度 0%(全透明)~ 100%(不透明)
字体颜色 主文本色、次要文本色(说明、时间戳、占位提示等)
输入框颜色 底部输入卡片底色,带不透明度
边栏颜色 左侧会话列表栏底色,带不透明度
边栏背景图 独立于主背景:本地图或 URL、填充方式、3×3 位置、暗化;留白处露出边栏底色
背景图 本地图或 URL;填充方式(智能 / 铺满 / 完整 / 原始大小 / 平铺 / 拉伸)、3×3 锚点、手动暗化或按图片亮度自动暗化;每张图单独记住填充与位置(最多 20 张,按内容哈希)

顶部 启用主题 为总开关。可先选 预设 再微调。所有改动即时生效,无需重启 DSH。配色保存在浏览器 localStorage,支持导出 / 导入 JSON 备份。

与皮肤(Skins)的关系:启用背景图期间会按 [data-skin-chrome] 约定隐藏皮肤整屏立绘,避免盖住你的图;版式与其它装饰仍保留。皮肤在列 / 面板上写死的底色插件用令牌碰不到时,会在运行时对真正不透明的表面就地绘制背景图;对话框、菜单、弹层不参与。

兼容性:客户端需提供 slots、locale、theme 服务,以及 theme.overrideTokens(DSH 0.2.0 起具备)。

安装与启用

推荐让 DSH 从 GitHub 直接安装(将 <profile> 换成你的 profile,桌面端一般为 desktop):

dsh plugin --profile <profile> add https://github.com/baizz-520/dsh-theme-studio

也可从本地目录安装:

dsh plugin --profile <profile> add <本目录绝对路径>

或在 DSH 的 Plugins / 插件市场 页面安装。手动方式:将插件目录放到 <DSH_HOME>/profiles/<profile>/node_modules/dsh-theme-studio(<DSH_HOME> 默认 %USERPROFILE%\.dsh),并在 cordis.patch.yml 末尾追加 dsh-theme-studio 的 insert 块后重启或触发 HMR。

安装后打开 设置(左下角齿轮)→ 主题工坊,打开 启用主题,再对需要覆盖的卡片打开右上角开关或调整颜色 / 预设即可。刚装好时各项默认「跟随内置」,界面可能无变化,动一下颜色或点预设即可看到效果。

卸载:在插件页停用,或从 cordis.patch.yml 移除对应 insert 后执行:

dsh plugin --profile <profile> remove dsh-theme-studio

典型用法

  1. 只改配色:启用主题 → 对「背景」「字体」「输入框」「边栏」打开覆盖开关 → 用色板或预设调整;背景 / 边栏 / 输入框不透明度低于 100% 时会透出下层背景色或背景图。
  2. 主背景图:在背景图卡片选本地文件或 URL;启用或选图后插件会把「背景」不透明度降到约 78%,便于透出图片,需要更清晰可再调低不透明度。填充方式中「智能」为默认:比例与窗口接近则铺满,差太多则完整显示,减少竖图被横窗裁切;「自动暗化」会对图片取样算亮度,越亮压得越暗(0–45%),跨域且无 CORS 的图会回退到手动暗化并提示。
  3. 边栏单独一张图:边栏背景图画在边栏列容器上,垫在边栏色之上,与主背景图开关独立,可同时启用。
  4. 备份与迁移:在设置页导出 JSON,换机或清缓存前可先备份,再导入恢复。

维护者提供的测试命令(验证 bundle 行为,非安装步骤):

node test/client-harness.mjs

或在该仓库目录执行 pnpm test。

适用场景与注意

适合长期在 DSH Web / 桌面端办公、希望个人化界面又不愿动主题源码或 DOM 的用户。插件逻辑以当前 DSH 进程与浏览器环境运行,安装前建议在 GitHub 仓库 查看源码与 MIT 许可证,并从目录页或 README 核对安装命令与版本说明。

背景不透明度为 100% 时背景图几乎不可见;边栏 / 输入框半透明时会透出「背景」层。与立绘类皮肤并用时,以 README 所述的隐藏整屏立绘与就地绘制策略为准,避免预期与实机不一致。

结尾

dsh-theme-studio 把 DSH 客户端的常见外观项收敛到一页设置里:令牌覆盖加 guarded 直接绘制,实时生效、可本地备份,并与皮肤场景做了专门处理。进一步了解可访问 SkillHub 目录页 与 GitHub:baizz-520/dsh-theme-studio。

羽毛球分组比赛记分
小程序二维码

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

小夜