dsh-theme-pack:给 DSH Web GUI 换肤的 16 套第三方主题

前言

DeepSeek Harness(DSH)的 Web GUI 内建外观只有 浅色 / 深色 / 跟随系统 三档。如果你在编辑器和终端里用惯了 Catppuccin、Nord 这类配色,切到 DSH 界面时多少会觉得颜色不是自己的。直接改样式表当然可行,但改动会和内建样式搅在一起,上游一升级就得重新对一遍。下面介绍的 dsh-theme-pack 走的是另一条路:不碰样式表,只通过 DSH 的主题契约注册语义 token,就能让 Web GUI 换上 16 套社区流行配色。

这是什么

dsh-theme-pack 是由 math-lrz 维护的 DSH 插件,MIT 协议,面向 DSH 的 web profile,提供 16 套第三方主题皮肤。它解决的就是上面这个问题:给 Web GUI 多一批现成的外观选项,点选即时生效,且不侵入 DSH 本身的样式体系。

主题清单

16 套主题来自这些配色家族,源调色板定义了明暗变体的,明 / 暗两版都有:

  • Catppuccin Mocha / Latte
  • Gruvbox Dark / Light
  • Everforest
  • Rosé Pine / Dawn
  • Solarized Dark / Light
  • Kanagawa
  • Tokyo Night / Tokyo Night Storm
  • Night Owl
  • Nord
  • Dracula
  • One Dark

核心特性

零侵入。 不重写任何样式表,只覆盖 DSH 主题契约暴露的 --dsw-alias-* / --dsw-specific-* 语义 token,每套 80 个;未覆盖的 token 自动回落内建调色板,皮肤不会和基础样式打架。

免构建链。 客户端 bundle 是手写的 lazy CJS(window.__ModuleLoader__.load),直接可装载,不需要 tsdown / vite。

自带选择器。 在 设置 → 通用 注入「主题皮肤(16 套)」面板,色点立方点选即换肤,中英文案齐全。

数据源单一。 16 套主题的全部颜色只由 src/palettes.mjs 一份调色板文件派生,映射规则集中在 src/tokens.mjs

工作原理

DSH 的主题契约提供 ThemeRuntime.register({ id, colorScheme, tokens }) 用于注册第三方主题。本插件的客户端 bundle 用它注册 16 套主题,每次注册都挂在 ctx.effect 上,插件卸载时会逆序回收。host 半侧的 lib/index.mjs 是一个 no-op 插件,存在的意义只是让 cordis Loader 有一条可加载的条目。

安装与启用

前提:已安装 DSH 并有 web profile(dsh web 可用)。

1、把插件装进 web profile。git 依赖安装走 pnpm:

dsh plugin --profile web add git+https://github.com/math-lrz/dsh-theme-pack.git

也可以走 npm 安装,装完自动挂载,无需手动 insert:

dsh plugin --profile web add dsh-theme-pack

2、如需手动挂载,编辑 %USERPROFILE%\.dsh\profiles\web\cordis.patch.yml,追加一条 loader 插入。注意 name 必须是包名,不能写 file:/// 路径:

- insert:
    - id: dsh-theme-pack
      name: 'dsh-theme-pack'

3、刷新浏览器页面。patch 改动会触发热重挂,通常不需要重启 dsh web

日常使用

经过上面的步骤,打开 设置 → 通用 → 外观,下方会出现「主题皮肤(16 套)」面板:16 个色点立方,点击立即换肤。内建的 浅色 / 深色 / 跟随系统 三档继续可用,随时可以切回。

想加一套自己的主题

得益于数据源单一的设计,扩展成本很低:

1、在 src/palettes.mjs 里追加一个调色板对象;

2、运行 node scripts/build.mjs

token 映射、选择器、文案、预览页全部自动派生。

已知限制

  • 主题选择不持久化(上游限制):ui-theme.preference 的内建设置 schema 只认 light / dark / system,第三方主题 id 只在进程内有效。刷新页面后会回到内建外观,需要重新点选。
  • 远程(非本机)浏览器同样可以选主题,但同样不持久。
  • 遮罩类 token(--dsw-alias-bg-mask-*)刻意沿用内建默认值,未纳入皮肤映射。

适用场景与注意事项

适合谁:

  • 日常使用 DSH Web GUI、想把编辑器里的配色习惯带过来的人;
  • 想多几个外观选项、但不想重写样式表的人;
  • 想按自己的口味加主题、从一份调色板文件起步的人。

注意事项:

  • 插件以当前 dsh 进程的权限运行,安装前建议先浏览仓库源码,确认代码与许可没问题再装。本插件为 MIT 协议;各主题调色板的版权归原主题作者(Catppuccin、Gruvbox、Everforest、Rosé Pine、Solarized、Kanagawa、Tokyo Night、Night Owl、Nord、Dracula、One Dark 等开源配色的维护者)。
  • 由于上游设置 schema 的限制,主题选择目前不能持久化,刷新页面要重新点选,使用前要有这个预期。

结尾

一句话总结:一条安装命令加一段 patch,DSH Web GUI 就能换上 16 套社区流行配色;不碰样式表、不需要构建链,卸载时注册的主题也会被逆序回收。

  • GitHub 仓库:https://github.com/math-lrz/dsh-theme-pack
  • 社区插件目录页:https://www.skillhub.cn/plugins/math-lrz/dsh-theme-pack
羽毛球分组比赛记分
小程序二维码

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

小夜