前言¶
DeepSeek Harness(DSH)把能力拆成插件,界面本身也可以靠插件微调,而不必改宿主源码。日常写 Harness、长时间盯对话页时,常见痛点是:键盘焦点环在基座 CSS 里实际不可见、浅色主题下部分说明文字对比度低于 WCAG 建议、输入卡与正文宽度对不齐、侧栏行高和命中区不一致。换一套全局「玻璃」主题插件又容易和别的换装抢同一层。
下面介绍维护者 Yu-jianhai 发布的 dsh-apple-hig(当前版本 0.6.1,MIT 许可)。它按 Apple Human Interface Guidelines(HIG)做 token + CSS 叠加:不改功能布局,每一档可单独关闭,卸载后界面恢复 DSH 原样。社区目录 SkillHub 将其归类为「趣味换装」;仓库地址为 https://github.com/Yu-jianhai/dsh-apple-hig。
这是什么¶
dsh-apple-hig 是仅作用于 DSH 客户端 的叠加层插件(inject: ['slots','theme']),覆盖范围对应方案里的 L0(token)、L1(排版)、L2(材质与形状)、L3(布局)。它不替换宿主逻辑,只在运行时通过 theme.overrideTokens、设置页插槽和门控 CSS 改写视觉 token 与样式。
插件要求 DSH 引擎 >=0.2.0-rc.1 <0.3.0-0,Node >=20。偏好保存在 localStorage['dsh-apple-hig:v1'],字段校验失败会回落默认,避免坏 JSON 导致插件无法启动。
核心功能¶
无障碍与文字(L0 / L1)¶
开启「焦点环」后,将 --dsw-focus-ring-color 从透明改为主色别名,并把 --dsw-focus-ring-width 从 2px 调到 3px,解决基座里焦点环 token 已定义为 transparent、fallback 永不生效的问题。
「文字对比度」在浅色主题下把三级、说明文字色加深,使对比度从约 3.71:1 / 2.13:1 提升到约 5.13:1 / 4.84:1;深色档对已达标颜色写回原值。仓库提供 node tools/contrast.mjs 做验收。
「品牌字体归一」让品牌位回落正文字体栈,避免 Montserrat light 等与 HIG「少用 light 字重」冲突。「字体预设」可在 native(Windows 原生感)、apple(SF Pro 优先)或 off(不覆盖)之间选择;只动 --dsh-font-family-text-default,不改用户在设置里选过的 --dsh-font-family-text,字号也不改。
材质、圆角与间距(L2)¶
「控件材质」仅给 composer 输入卡 加半透明与 backdrop-filter 玻璃效果,并补侧栏、状态栏 0.5px 分隔线;侧栏背后不用 blur,避免无意义的 GPU 开销。文档明确不与 dsh-plugin-liquid-glass 抢整窗贴膜。
「连续圆角梯度」统一调整六个 --dsw-radius-* token;「间距节奏」抬升对话流默认行距、输入卡与侧栏内边距,并加宽内容区最窄留白。可选「squircle 圆角」使用 corner-shape: superellipse(1.2),默认关闭(Chromium 支持不确定)。
布局与控件形态(L3)¶
「顶栏紧凑 + 分段标签」压缩顶栏高度,并把视图切换从下划线标签改为分段控件样式,保留 role / aria-selected 与键盘导航。
「阅读宽度对齐」让正文与输入卡共用 min(calc(100% - 40px), 780px),边缘对齐。
「底部读数行统一」整理 [data-composer-dock] 内统计、费用明细与会话费用等读数的字号与盒型(真实读数行在此,而非无人注册的 [data-shell-bottom] 空槽)。
「控件行统一」把输入卡下方多来源芯片统一到 26px 高、12px/500 字重等几何规则,不覆盖各插件的状态强调色。
「侧栏行高与命中区」统一列表行高、放大行内动作命中区、区分选中与 hover,并规范用量卡数字样式。
「切换动画」调整侧栏收展缓动,并在换会话时为内容区加短淡入;关闭该开关会撤掉 MutationObserver。系统开启 prefers-reduced-motion: reduce 时,「减少动态效果」会把 animation/transition 时长压到 0.01ms,且不冻结加载转圈的 iteration-count。
各开关默认值与 README 第 3 节表格一致;带「看得见」字样的项对应文档中标注的视觉改动。
安装与启用¶
README 说明:维护者环境中没有可用的 dsh plugin CLI,desktop profile 里同类插件采用 link:<源码目录> + dsh.profile.bundles + node_modules junction 的方式挂载。仓库提供 install.mjs 复刻这三步(默认 dry-run,写文件前会备份 profile 的 package.json)。
在插件包根目录(与 install.mjs 同级)执行:
node install.mjs
node install.mjs --apply
可选指定 profile 路径:
node install.mjs --profile "~/.dsh/profiles/desktop"
卸载:
node install.mjs --apply --uninstall
执行 --apply 后,必须完全退出并重启 DSH Desktop(profile 中 hmr 为 disabled,改插件不会热更新)。启动后应在「设置 → 插件」看到 dsh-apple-hig,侧栏或对话页设置里出现 Apple 规范 一节。
SkillHub 目录页 还提供「发送给 DeepSeek Harness 安装」的说明,可让 Harness 按 Yu-jianhai/dsh-apple-hig 读取并安装;具体步骤以你当前 DSH 版本的插件机制为准。安装前请自行查看仓库源码与 MIT 许可证——插件与 DSH 进程同权限运行。
典型用法¶
在设置里按需开关¶
路径:设置 → 插件 → Apple 规范。每个开关独立建/撤 token 层,关掉即恢复 DSH 原值。例如只想保留对比度与焦点环、关闭顶栏分段控件,可逐项关闭带「看得见」的 L3 项,而保留「焦点环」「文字对比度」。
macOS 上常把「字体预设」设为 apple,Windows 上默认 native;若已与系统字体策略冲突,设为 off。
运行期调试(可选)¶
浏览器控制台可用:
window.dshAppleHig.get()
window.dshAppleHig.layers()
window.dshAppleHig.set({ /* 字段见 get() 返回 */ })
window.dshAppleHig.reset()
改偏好后插件会先撤销旧 token 层再建新层,避免残留。
维护者自检命令¶
在插件包内(需已安装依赖环境):
node tools/contrast.mjs
node test/boot-smoke.mjs
check 脚本对应 boot-smoke.mjs,用于 bundle 与默认开关层的冒烟断言。
适用场景与注意¶
适合:希望在 不改布局、不重排功能 的前提下,让 DSH 桌面端更接近 HIG 的可访问性、排版与控件一致性;与「整窗 liquid glass」类插件并存时,只想要 composer 卡一层玻璃的场景。
注意:
- 只覆盖 DSH 内置浅/深主题;第三方主题若重定义 label 相关 token,本插件覆盖层仍在其上。
- 不处理 Windows 高对比度
forced-colors。 - 底部读数行、芯片行部分选择器依赖其他插件类名(如 cost meter、文献、记忆等);对方改名后对应规则会静默失效。
- 侧栏宽度受
dsh-client-ui-layout内联grid-template-columns约束,本插件 不改侧栏宽度,需宽一点请用宿主自带拖曳。 - 部分组件级间距变量在元素自身声明,插件用 CSS 特异性或只改默认值,无法也不应强行
!important压平宿主特例。
结尾¶
dsh-apple-hig 把 Apple HIG 里可落地的部分拆成多档独立开关:从焦点环、对比度、字体,到输入卡材质、分段控件、读数行与侧栏命中区,再到换会话动画,全部通过 token 与 CSS 叠加完成,卸载即还原。若要浏览简介或跟进版本,可看社区目录 https://www.skillhub.cn/plugins/Yu-jianhai/dsh-apple-hig 与 GitHub 仓库 https://github.com/Yu-jianhai/dsh-apple-hig。