返回目录
界面增强 插件

DSH-High-Contrast-Theme

PixelGeek325/DSH-High-Contrast-Theme

一个为DeepSeek Harness开发的高对比度主题插件

Stars
0
Forks
0
Issues
0
更新
1 天前

PROJECT TOPICS

项目标签

INSTALL REFERENCE

安装参考

未验证
dsh plugin --profile web add github:PixelGeek325/DSH-High-Contrast-Theme

该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。

PROJECT README

README

DSH-High-Contrast-Theme

本主题插件目前处于早期开发阶段,存在大量未完善之处,不可用于生产环境

作者本人仍在学习无障碍(a11y)知识,因此代码可能包含许多设计缺陷和兼容性问题。

如果您在使用过程中发现任何问题,或是能提供无障碍改进建议,非常欢迎您提交 Issue —— 您的反馈将直接帮助项目的成长。

在进入稳定版之前,请勿依赖本插件进行实际工作。

DeepSeek Harness (DSH) 的 WCAG 合规高对比度主题插件:纯黑表面、终端风格语法色板、始终可见的焦点指示。所有功能均通过标准插件 API 实现——绝不修改 Harness 源码或全局样式表。

![对比度概览:黑色表面、白色文字、黄/青/绿/橙/品红语法色、白色 1px 边框、黄色焦点环]

色板(相对 #000000 的对比度,WCAG 相对亮度公式)

角色 色值 对比度 WCAG 4.5:1
背景 / 表面 #000000
主文本 / 图标 #FFFFFF 21.00:1
次要文本 #C0C0C0 11.54:1
关键词 / 标签 / 选中 #FFFF00 19.56:1
字符串 / 变量值 #00FF00 15.30:1
数字 / 常量 #FFA500 10.63:1
函数 / 链接 #00FFFF 16.75:1
注释 / 提示 #808080 5.32:1
括号 / 运算符 / 分隔符 #FF00FF 6.70:1
边框 / 分割线 #FFFFFF 1px 21:1
错误 / 成功 / 警告 #FF4444 / #00FF00 / #FFA500 ≥6.16:1

焦点::focus-visible 显示 3px #FFFF00 外框 + 2px 偏移(WCAG 2.4.7 可见焦点、2.4.11 焦点外观:≥2px 且与背景对比 ≥3:1)。文本选区使用同款黄色。

工作原理

全部通过三个官方 DSH 插件 API 实现——不碰 Harness 源码、不写全局 CSS、不操作 document.body

  1. theme.overrideTokens(source, { light, dark }) —— 将约 70 个 alias/specific token(tokens.ts)叠加到当前主题之上:产品暴露的全部表面、文本层级、边框、交互状态、markdown/代码区域、菜单、提示气泡、滚动条与状态色。每项在明/暗两种配色方案中都提供同一套终端色板,因此无论系统偏好如何,界面始终为纯黑。disposer 在插件停止/更新时恢复基础主题。
  2. styles.insert(css) —— 包自有样式表,用于 token 层无法触及的部分:
    • *`--shiki-语法变量**(代码块使用的 shiki css-variables 主题——:root亮色 /body[data-ds-dark-theme]` 暗色,与主题样式表选择器一致,后注入者在同特异性下胜出);
    • 按钮、文本选区与焦点环。
  3. slots.inject('settings.general.item') —— 设置 → General 中的"高对比度主题 (WCAG)"开关行。

生命周期:token 层与样式表由各自 disposer 拆除,设置行随插件 fiber 释放——停止或更新插件后零残留。不使用定时器或事件监听器。

覆盖如何到达页面:基础 token 样式表(design-platform.css)把所有 alias/specific 变量声明在 body 上,因此 :root 样式表无法胜过它。主题 presenter(dsh-client-ui-layout)改为把合成快照中的每个覆盖 token 写为 <body> 上的内联自定义属性body.style.setProperty),内联样式压过重绑定——这就是为什么全部表面集(代码块、内联代码、输入框、菜单、提示气泡、滚动条)都必须列在 tokens.ts 中。只有 --shiki-* 变量不在 presenter 的写入集内,由注入的样式表(后注入、同选择器)确定性地接管。

安装与构建

npm install
npm run build   # tsc → lib/client/index.js

在 Harness 中加载

作为动态插件(快速验证):src/client 的 Client 代码(或会话中的 plain-JS 转录)放入 cordis_define / cordis_run 流程。Client 包首次运行需要一次性授权。

作为组合行(位于 agent preset 的 agent.cordis.yml 中,先 npm pack 或使用 file: 依赖):

- id: ui-high-contrast-theme
  name: 'dsh-high-contrast-theme'
  config:
    styleButtons: true

从内置 standard preset 复制出本地 preset,添加该行并做挂载校验:

agentPresets.copy('standard', 'high-contrast')
# 编辑 <user-root>/.agent-presets/high-contrast/agent.cordis.yml
# 编写 preset.yml:name + description
agentPresets.standingKeyFor('high-contrast')

配置

选项 类型 默认值 含义
styleButtons boolean true 按钮透明底 + 1px 白色边框;悬停反色为白底黑字。这是影响所有按钮的元素级规则——若宽泛处理与产品控件冲突,可关闭。

验证

  1. 加载插件后,页面立即变为纯黑底白字。
  2. 设置 → General → 开关"高对比度主题 (WCAG)"。
  3. Tab —— 每个可聚焦元素显示黄色 3px 焦点环。
  4. 在对话中让模型输出代码 —— 代码块显示终端色板。
  5. 停止插件 —— 基础主题完全还原,零残留。

License

MIT — 见 LICENSE

CLASSIFICATION EVIDENCE

分类依据

项目类型插件
功能分类界面增强
规则置信度

系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: dsh-plugin-theme。