mtaech/dsh-material-you:DeepSeek Harness 的 Material You 皮肤插件

前言

DSH(DeepSeek Harness)的生态建立在「一切皆插件」的理念上,外观也不例外:皮肤以插件形式分发,通过覆盖界面的语义 token 生效。对每天长时间面对 web 界面的用户来说,配色与字体决定了大部分观感,与其手工改样式,安装一个遵循成熟设计规范的皮肤包更省事。下面介绍 mtaech/dsh-material-you,它把 DSH web 界面按 Google Material You / Material 3 (M3) 规范重新着色与排印。

这是什么

mtaech/dsh-material-you 是 mtaech 维护的 DeepSeek Harness 皮肤插件,在社区插件目录中被归入「趣味换装」分类。它提供浅色、深色两套外观的 Material You (M3) 皮肤:配色由 Material Color Utilities 的 HCT 算法从种子色 #3B82F6 推导,字体采用 Maple Mono NF CN。

包内 package.json 声明的包名为 @deepseek-ai/dsh-skin-material-you,版本 0.1.0-rc.2,标记 private: true,许可证为 MIT。仓库已归档,开发迁移至 mtaech/melon(源码位于 packages/skin-material-you 目录),issue 与 PR 请提到 melon 仓库。

配色:HCT 色调色板与 token 覆盖

配色部分的做法:从种子色 #3B82F6 出发,用 Material Color Utilities 的 HCT(Hue–Chroma–Tone,tone 0–100)算法推导色调色板,共 5 条:primary / secondary / tertiary / neutral / neutral-variant。

这些颜色不直接写进界面,而是通过覆盖 --dsw-alias-*--dsw-specific-* 两类语义 token 生效。完整覆盖清单约 80 个 token × 双外观,集中在 src/tokens.mjs。安装后 system 偏好下浅色、深色两种外观均为 Material You 配色。

改主题时有一个对比度约束要注意:--dsw-specific-sidebar-nav-item-active-accentask_user_question「推荐」徽章的背景色(取 primary-container),--dsw-alias-button-info-fill 是徽章的文字色(取 primary),两者必须保持对比。

排印:Maple Mono NF CN

字体采用 Maple Mono NF CN(Nerd Font + 中文等宽)。包内自托管 Regular 字重的 woff2 文件(约 6.1MB),@font-facefont-weight: 100 800 声明覆盖全部字重;未打包的 Medium/Bold 由浏览器合成加粗,或回退到系统已安装字体:

@font-face {
  font-family: 'Maple Mono NF CN';
  font-style: normal;
  font-weight: 100 800;
  src: url('../fonts/MapleMono-NF-CN-Regular.woff2') format('woff2');
  font-display: swap;
}

排印节奏沿用 M3 的字号、行高、字距,字重按 M3 的 400/500/700 映射到 Maple Mono 的 Regular/Medium/Bold,相关 token 以 --m3-typescale-* 命名。动效采用 M3 的 emphasized/standard 缓动并支持 prefers-reduced-motion;形状遵循 M3 圆角体系(4/8/12/16/28/full px)。

如需更忠实的 Medium/Bold 字重

先找到对应字重的 TTF,用 fontTools 转成 woff2 放入 fonts/,再补上对应的 @font-face 规则,每份约 6MB。

插件形态:bundle patch

这个插件采用 bundle patch 形态:package.json 里声明 dsh.bundle.patch 指向自带的 cordis.patch.ymlcordis.patch.yml 的内容为:

- insert:
    - id: ui-skin-material-you
      name: '@deepseek-ai/dsh-skin-material-you'

安装后插件包会自动加入 profile 的 dsh.profile.bundles,patch 再用 insert 把 id 为 ui-skin-material-you 的皮肤行插进加载列表,不需要手动编辑 profile。

另有一个容易混淆的点:inject 分两层,含义不同。package.jsondsh.client.inject 是包名数组,当前包含 @deepseek-ai/dsh-client-runtime@deepseek-ai/dsh-client-ui-theme,platform 为 web;lib/client.jsexports.inject = ['theme'] 是服务名数组。自己写皮肤类插件时注意区分这两处。

安装与启用

仓库归档声明写明:安装方式已从 git 改为 npm。现行安装命令如下,把 <你的 profile> 换成实际使用的 profile 名:

dsh plugin --profile <你的 profile> add dsh-skin-material-you

README §7 还保留了另外两种来源的写法。从 GitHub 安装:

dsh plugin --profile web add github:mtaech/dsh-material-you

从本地仓库目录安装:

dsh plugin --profile web add "file:E:/Dev/Code/dsh-material"

其中 GitHub 安装会走包内 prepare 构建流程,而 pnpm 默认阻止构建脚本。若提示 Ignored build scripts,在 profiles/web/pnpm-workspace.yamlallowBuilds 里加入包名后重新执行即可——本包无需构建脚本也能直接运行。

启用分三步:先执行安装命令,再重启 dsh web,最后按需固定主题。经过上面的步骤,界面默认跟随 system 偏好,浅色、深色两种外观均为 Material You 配色;如需固定某一外观,在设置 → 外观里选择 material-you-lightmaterial-you-dark

适用场景与注意事项

适合两类人:一是偏好 Material You / M3 视觉语言、希望 DSH web 界面配色与字体遵循同一套规范的用户;二是想在 DSH 上编写皮肤插件的开发者,可以参考它的 bundle patch 结构与 token 覆盖方式。

几点注意:

1、插件以当前 dsh 进程的权限运行,安装前应检查插件源码与许可证(本项目为 MIT);
2、仓库已归档,功能更新看 mtaech/melon,安装命令以归档声明给出的 npm 方式为准;
3、字体只随包携带 Regular 字重,Medium/Bold 为合成或回退效果,对字重敏感的场景按上文方法自行补齐。

结尾

mtaech/dsh-material-you 用一套 HCT 推导的色调色板和 Maple Mono NF CN 等宽字体,把 DSH web 界面统一到 Material You 规范下,一条安装命令、一次重启即可启用。更多信息见:

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

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

Xiaoye