dsh-themes
August 14, 2026 · View on GitHub
DeepSeek Harness Web GUI 的外观皮肤插件包:5 套经典配色(Nord / Gruvbox / Solarized / Dracula / Tokyo Night),每套含浅色、深色两个变体,共 10 个可选主题。
安装后在 设置 → 常规 分区出现「主题皮肤」选择行,点选即生效、刷新不丢失。
English: see README.en.md.
皮肤一览
| 皮肤 | 浅色 | 深色 | 风格 |
|---|---|---|---|
| Nord | nord-light | nord-dark | 北极蓝灰,frost 冰雪蓝点缀 |
| Gruvbox | gruvbox-light | gruvbox-dark | 复古暖棕,赛璐璐质感 |
| Solarized | solarized-light | solarized-dark | 低对比精确配色,双模式同色系 |
| Dracula | dracula-light | dracula-dark | 吸血鬼暗紫 + 霓虹高亮 |
| Tokyo Night | tokyo-light | tokyo-dark | 赛博靛蓝(深色为 Night,浅色为官方 Day 配色) |
预览(设置页实拍):
| Nord | Gruvbox | Solarized | Dracula | Tokyo Night |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() | ![]() |
每个变体覆盖 49 个语义 token(背景/边框/文字/按钮/状态/代码块/侧边栏/浮层等),未覆盖的 token 回落到 DSH 内置基础色系,任何配色下都保持可读。
安装
方式一:从 GitHub 安装(推荐)
dsh plugin --profile web add github:heiyouhu/dsh-themes
非
webprofile 需要先有 Web GUI 组合(base + web-app),例如:dsh plugin --profile my-profile add github:heiyouhu/dsh-themes
git 安装的是源码,pnpm ≥ 10 默认拒绝运行依赖的 prepare 构建脚本,第一次 add 会失败。按 pnpm 打印的提示,把包名写进 profile 的 pnpm-workspace.yaml 后重新执行:
# $DSH_HOME/profiles/<profile>/pnpm-workspace.yaml
allowBuilds:
dsh-themes: true
⚠️ 放行即允许该包在你的机器上执行安装期代码。只放行你信任的包,并建议固定 commit:
add github:heiyouhu/dsh-themes#<sha>。
方式二:本地目录 / tarball(免放行)
dsh plugin --profile web add ./dsh-themes # 已克隆的仓库目录
dsh plugin --profile web add ./dsh-themes-0.1.0.tgz # pnpm pack 产物
方式三:npm
dsh plugin --profile web add dsh-themes
使用
- 启动 Web GUI:
dsh --profile web。 - 打开 设置 → 常规,找到「主题皮肤」行。
- 点任意皮肤的「浅色 / 深色」色块,界面立即切换。
选择规则
- 皮肤选择与内置「浅色 / 深色 / 跟随系统」共用同一个偏好槽位:后选者生效。
- 皮肤选择会持久化在浏览器本地(localStorage,与具体浏览器绑定,不跨设备同步);重新打开界面时,只要内置偏好是「跟随系统」(默认值),皮肤就会自动恢复。
- 点击内置的「浅色 / 深色」方块会暂停皮肤(内置偏好优先);点回「跟随系统」后皮肤恢复。
卸载
dsh plugin --profile web remove dsh-themes
若卸载前皮肤处于激活状态,主题会回落到默认(DSH 主题服务既有语义)。
兼容性
- 目标 DSH 版本:
0.1.0-rc.x(Web GUI 组合)。 - 主题 id 全局唯一(
<皮肤>-<浅深>前缀);与其它插件注册同 id 会导致启动失败并大声报错(DSH 既有行为)。
开发
pnpm install
pnpm typecheck # 类型检查
pnpm check # 皮肤数据校验(角色覆盖 / id 唯一 / 颜色合法)
pnpm build # 产出 lib/client.js(tsdown,契约与 DSH 官方 clientBundle 一致)
新增皮肤
- 在
src/skins.ts的SKINS数组中追加一个skin({ key, name, light, dark }),填写两套PaletteScheme(key会成为主题 id 前缀)。 - 在
src/client/locales.ts补充显示名(如有需要)。 - 跑
pnpm check && pnpm typecheck && pnpm build。
打包发布
pnpm build
pnpm pack # 产出 dsh-themes-<version>.tgz
License
MIT © heiyouhu。配色版权归各原配色方案作者所有(Nord / Gruvbox / Solarized / Dracula / Tokyo Night)。









