dsh-theme-plugin:为中国传统色打造的 DSH 主题包

前言

DeepSeek Harness(DSH)的 Web 界面默认提供一套通用主题 token,换肤往往只是改几个主色变量,侧边栏、消息气泡、代码高亮与对比度未必成体系。若你希望界面有明确的文化气质,又不愿手工维护几十套 CSS 变量,就需要一套能覆盖完整 token 词汇表、并通过可读性校验的主题方案。

dsh-theme-plugin 由 nevertoday 维护,以 npm 包 dsh-theme-plugin 发布,属于 SkillHub 目录中的「趣味换装」分类。它将 49 个中国传统色锚点各生成 light / dark 两套主题,共 98 套;每套写入 98 个 token(89 个 --dsw-* 加 9 个 --shiki-token-* 语法高亮槽位),并在 3136 条对比度断言上通过 WCAG AA。当前版本 0.3.3,许可证 MIT。

这是什么

一句话定位:把中国传统色系统化为 DSH Web 客户端可切换的完整主题包,而非零散配色补丁。

维护者 nevertoday 在 GitHub 仓库 nevertoday/dsh-theme-plugin 持续迭代;社区目录页见 SkillHub。DSH 生态奉行「一切皆插件」,SkillHub 为独立社区站点,与 DeepSeek / 幻方无官方从属关系。

核心功能

98 套主题与完整 token 覆盖

49 个锚点色各对应 light 与 dark 分支,合计 98 套主题。每套主题填充完整 DSH 设计 token 词汇表,并同步配置 shiki 代码高亮的九个 --shiki-token-* 槽位。安装后浏览器控制台应输出 registered 98/98 themes (49 light / 49 dark)

四层设计:纸 · 帘 · 印

主题按中国画作色顺序分层构建,而非简单把传统色「变浅做背景」:

  1. 纸(Paper) — 约占画面 60%。四种纸材家族(素绢、熟宣、雪青、赭纸)在 OKLab 色度上刻意分离,浅色底约在 L ≈ 0.963–0.971,偏米白而非纯白。
  2. 帘(Veil) — 约占 25%。侧边栏与消息气泡使用锚点色本身,与纸面保持 1.25–1.55 对比度带;识别当前主题主要靠气泡色,而非背景。
  3. 印(Seal) — 主按钮与发送按钮为锚点色压深后的焦点色;策展相对色(sealName / sealRel)仅作导航激活点缀。
  4. 墨(Ink) — 正文、分割线、次级表面沿同一墨色阶梯下行;light / dark 共享同一结构。

代码块方面,五个语法 chromatic 槽位(keyword / string / constant / function / parameter)沿用程序员熟悉的色相约定,颜色取自 742 色名册;当锚点色相落入某槽位窗口时,锚点色本身扮演该槽位(例如竹青主题中字符串为竹青)。注释与标点走墨色,九个槽位均在代码块底色上达到 4.5 对比度。

主题选择与检索

设置面板 Settings → Traditional Colors 提供四种找色方式:

  • Browse — 按纸材家族分组展示当前分支全部 49 个锚点,每行 chip 预览真实纸、帘、印。
  • By working mood — 六个时段 chip(晨起 → 天亮等),例如选「凌晨 夜航」可筛出八个偏暗、偏静的主题。
  • Search — 支持中文名、拼音、印章名与 mood 检索;输入 lv 可找到全部十二个绿色主题。
  • Curated only — 十二个策展精选,覆盖四种纸材与六种 mood;dark 分支面板本身以主题包样式渲染。

其中十二个锚点被标为策展短名单。面板仅引用 --dsw-* token,随当前选择实时变色,兼作预览。

质量门禁

pnpm check 从生成结果重算全部断言:3136 条对比度行,以及帘色度、单一焦点、语法槽位色相分离、锚点登台规则、层级方向与 token 全覆盖等不变量。生成器自述不经信任,须由检查脚本验证。

安装与启用

插件通过 npm 预构建包安装,无需 clone 仓库或本地 build。首次启动会在 ~/.dsh/profiles/web 创建 web profile。

npx -y @deepseek-ai/dsh plugin --profile web add dsh-theme-plugin@latest
npx -y @deepseek-ai/dsh --profile web

启动后打开 http://127.0.0.1:3080/

验证安装:

dsh --profile web --dump-config

配置中应出现 theme-zhongguo 相关行;浏览器控制台应显示 98/98 主题注册成功。

更新:重复执行 add 命令。卸载:

dsh plugin --profile web remove dsh-theme-plugin

运行环境要求 Node.js >= 20(见 package.json engines 字段)。

典型用法

设置面板切换

打开 Settings → Traditional Colors,点选主题后立即生效。

深链接切换

修改 URL hash 可实时换肤;深链接优先于本地记忆的选择:

http://127.0.0.1:3080/#theme=zhuqing-light
http://127.0.0.1:3080/#theme=qunqing-dark

记忆的选择保存在 localStorage,不在 settings.yaml 中,因此不会跨设备同步。

适用场景与注意

适合谁

  • 长期在 DSH Web 界面工作的开发者或智能体搭建者,希望界面有稳定、可辨识的中国传统色视觉体系。
  • 需要代码高亮与 UI 主色在同一套生成规则下对齐,且对比度有自动化校验的场景。
  • 偏好通过 mood、拼音或策展列表快速选色,而非记忆 49 个色名。

注意事项

  1. 插件随当前 dsh 进程权限运行;安装前建议阅读 GitHub 源码 与 MIT 许可证。
  2. 仅面向 DSH Web profile(client.platform: web);CLI 或其他 profile 不在此包覆盖范围内。
  3. 主题选择默认存于浏览器 localStorage;换设备或清缓存后需重新选择,除非使用深链接。
  4. 仓库 README 提供 中文文档 README.zh-CN.md,设计细节与纸帘印分层说明以该文档为准。

结尾

dsh-theme-plugin 把 49 个中国传统色锚点扩展为 98 套完整 DSH 主题,用纸、帘、印分层与自动化对比度检查,解决「换肤只改主色、代码块与可读性脱节」的常见问题。若你已在用 DSH Web,一条 add 命令即可在设置里浏览竹青、群青、朱红、藤黄等主题。

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

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

小夜