DeepSeek Harness Liquid Glass 主题插件

前言

DeepSeek Harness(DSH)支持通过插件扩展界面和功能。开发者想要调整界面样式时,需要手动修改应用代码,改动成本高且难以回退。下面介绍的 dsh-glass-theme 插件通过覆盖样式表和客户端脚本,重绘了 DSH 的所有界面元素,无需修改应用本体。

这是什么

dsh-glass-theme 是一个为 DSH Web GUI 设计的 Apple Liquid Glass 主题,由维护者 Ayelsh 发布。它是一个纯 CSS 皮肤,配合约 150 行的客户端运行时,将应用的所有表面重新绘制:背景是环境光场上的浮动玻璃铬,对话区域是不透明的阅读面,所有面板、弹窗和对话框共享同一套材质层级。

核心功能

重绘所有界面

主题通过 15 个样式表覆盖了 DSH 的所有界面元素:外壳、侧边栏、对话区、输入框、覆盖层、模型选择、统计、设置、页面、组件、动画。这些样式表按级联顺序加载,在应用自身的样式之后注入,因此不会改变应用代码。

Token 词汇重键

主题发布了一个空的 token 集合,将调色板完全交给 CSS 定义。src/css/tokens.css 在 body 和 body[data-ds-dark-theme] 上重新声明了约 250 个 --dsw-* 自定义属性,使任何页面都能继承这套重新设计,无论主题之前是否见过该页面。同时它还定义了 11 个 DSH 构建使用但未定义的属性。

替换模型选择器

主题在 conversation.input.model 位置挂载了一个 React 卡片,替换了原有的模型选择器。新卡片支持:
- 按供应商分组模型
- 每个模型一行描述
- 代理商价格比显示为徽章
- 实时高峰/低谷标签,跟随所选模型的供应商(DeepSeek 工作日 9:00–12:00 + 14:00–18:00,约 2×;智谱工作日 14:00–18:00,约 2×;无排期的供应商不显示标签)
- 模型列表旁的 effort 分段控件,两者同时可见

已配置的供应商会精简默认列表,其余模型隐藏在「所有供应商」行后。

合并使用统计

主题通过 src/stats.js 将原本分散的两个统计药丸和上下文环替换为一个控制组件:点击后打开一个面板,显示上下文压力及其三个桶、会话计时和 token 记账。药丸位于输入框右侧,面板从同一侧挂出。

添加设置页面

主题在 settings.section 下注册了「Liquid Glass」页面。该页面使用一个内部光源照亮的磨砂板作为材质对象(设置表单本身已是玻璃,再加一层卡片会形成玻璃叠加玻璃的效果)。页面包含容量计量器、图标方块、交错入场动画和蚀刻纹理,并响应 prefers-reduced-transparency。

可访问性支持

主题支持以下可访问性需求:
- prefers-reduced-transparency
- prefers-contrast
- prefers-reduced-motion
- hover: none
- 键盘焦点环(根据输入模态性启用,指针用户不会看到)

外部页面样式

第三方插件将未分类的 HTML 渲染到 main 插槽时,这些控件会继承应用的类型和控件缩放,无需进入 markdown 输出区域。

安装与启用

前置要求

  • DSH 版本 >= 0.1.7
  • Node.js 环境(用于安装步骤)

安装步骤

  1. 克隆仓库后,复制整个目录到指定 profile 的 node_modules:
   cp -r . ~/.dsh/profiles/desktop/node_modules/dsh-glass-theme
  1. 修改该 profile 的 package.json,在 dsh.profile 下添加 bundle 条目:
   { "dsh": { "profile": { "bundles": ["dsh-glass-theme"] } } }
  1. 重启 DSH 应用。

重启是必须的:插件列表在窗口打开前从 profile 构建而成,主机部分(路由、峰值速率缓存、使用记账)在启动时挂载。删除插件文件夹和 bundle 条目即可完全恢复原始界面。

设计规则

主题遵循以下设计原则:
- 页面是阅读面,控件是玻璃
- 所有控件共享同一套材质层级
- 背景是环境光场上的浮动玻璃铬
- 对话区域是不透明的阅读面
- 材质层级不因面板类型而改变

验证与构建

仓库包含验证工具链:
- node tools/verify.mjs:检查每个选择器是否能在已安装构建中解析
- node tools/leak.mjs:确保 [class*=] 不发生过度匹配
- node tools/build.mjs:将样式表内联到客户端,复制主机部分
- node tools/smoke.mjs:在模拟 DOM 中评估打包后的包
- node tools/assert-built.mjs:确保原始规则在打包后仍然存在

验证工具会解析应用生成的 CSS 模块类名(_local_hash),并使用这些类名检查选择器。如果缺少正确的哈希前缀或本地类名重命名,选择器将无法匹配,表面会保持原样,不会报错或警告。

适用场景

适合希望在不修改 DSH 应用代码的情况下改变界面风格、统一所有面板材质效果、替换模型选择器和统计面板的开发者。插件通过纯 CSS 覆盖和客户端脚本挂载实现,卸载后可完全恢复原状。

注意事项

  • 插件以当前 DSH 进程的权限运行,安装前建议检查源码与许可证(MIT)
  • DSH 版本需 >= 0.1.7
  • 插件没有内置构建步骤,lib/ 目录已提交,可直接加载
  • 主题支持 Light 和 Dark 两种主题

结语

dsh-glass-theme 通过纯 CSS 覆盖和客户端脚本挂载,在不修改应用本体的情况下重绘了 DSH 的所有界面元素,提供了统一的 Apple Liquid Glass 材质系统。它支持重键 token 词汇、替换模型选择器、合并使用统计,并包含完整的可访问性支持。如需查看源码和文档,可访问插件目录页或 GitHub 仓库。

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

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

小夜