dsh-eyecare-bg:为 DSH 换护眼绿背景,不改布局与字体

前言

长时间在 DeepSeek Harness(DSH)里写提示词、看对话和代码块,界面若一直是官方浅色主题里偏白的表面,眼睛容易疲劳。自己改 CSS 往往碰不到 --dsw-* 设计 token:客户端 presenter 会把 token 写到 body 的内联样式上,普通样式表压不过去。下面介绍社区插件 dsh-eyecare-bg(维护者 Sorphone,分类:趣味换装):只覆盖背景相关 token,文字、边框、强调色、字体、字号、圆角、布局、阴影保持官方原样;自带设置面板并注册进 DSH 设置页,零依赖、无需构建、不改 app.asar。

这是什么

dsh-eyecare-bg 是一个极小的 DSH 插件,把 Web / 桌面版 DSH 的背景换成护眼绿(或可自定义的绿系色值)。宿主侧通过 webserver/index-inject 向 index.html 注入带 !important 的主题样式,覆盖官方浅色主题里会解析成白色的 31 个背景 token(画布、卡片、侧栏、菜单/弹层、输入框、代码块与代码顶栏、状态条、浮层按钮等)。客户端侧只往官方 settings.section 槽位注册「护眼绿背景」分区,不写 localStorage,配置落在 $DSH_HOME/eyecare-bg.json。

它为什么能改背景

DSH 界面颜色走 --dsw-* token;@deepseek-ai/dsh-client-ui-layout 的 presenter 在 apply(snapshot) 里用 body.style.setProperty 下发,属于内联样式,层叠上只输给带 !important 的作者声明。本插件在宿主挂 webserver/index-inject,向注入表 push 两行样式(主题 token 覆盖 + 面板壳样式,故意分开,避免面板关闭「表面染色」时误关壳样式)以及面板脚本;kind: 'style' 进 <head>,声明带 !important,从而高于 body 内联 token。

核心功能

表面覆盖范围

SURFACE_TOKENS 共 31 项,取值来自对官方 design-platform.css 的实测解析;每项在官方浅色主题里原先多为 #fff / #f9fafb 等偏白表面。深浅模式各自插值,同一 token 在深色模式下会自动往亮里走。默认底色 #C7EDCC 时,例如:

token 用途 结果(示例)
--dsw-alias-bg-base 主画布 #C7EDCC
--dsw-alias-bg-layer-1 卡片 #D9F3DC
--dsw-specific-sidebar-fill 侧栏 #BBDFC0
--dsw-alias-markdown-code-block 代码块 #B9DCBE
--dsw-specific-input-major 输入框 #DFF5E1

「表面染色」可关:设为 false 时只染主画布,卡片与代码块回到官方配色。

设置面板(三个入口)

  1. DSH 设置页:左侧栏底部设置 → 导航栏「护眼绿背景」(settings.section,order: 40)。
  2. 页面左侧边缘小色块(约 top: 44%),点开居中模态;配置 tab: false 可隐藏,仅保留设置页入口。
  3. http://127.0.0.1:19387/eyecare-bg:独立设置页;插件路由带回环 Host 与同源校验,跨站请求返回 403。

面板提供取色器、十六进制输入、四个预设(护眼绿 / 豆沙绿 / 更浅 / 更深)、表面染色开关、深色模式取色、恢复默认与保存。改色实时预览:通过 <style id="eyecare-bg-live"> 与注入样式里的 /*eyecare-bg*/ 标记,可暂时禁用 index 注入的那份主题行,收窄型改动无需刷新。

配置优先级

内置默认 ← profile 的 cordis.patch.yml config ← $DSH_HOME/eyecare-bg.json。文件优先,面板保存后 YAML 不会覆盖;「恢复默认」会删文件并退回 YAML。非法颜色(如 color: green)不会拖垮 profile,apply() 捕获后回退默认护眼绿并在宿主日志提示。

# $DSH_HOME/profiles/desktop/cordis.patch.yml 片段示例
- id: eyecare-bg
  config:
    color: "#C7EDCC"       # 浅色模式背景(#rgb / #rrggbb)
    colorDark: "#0F2116"   # 深色模式背景
    surfaces: true         # false = 只染主画布
    tab: true              # false = 不显示左侧浮签

其它常用绿:#CCE8CF、#E3F0E4、#B7E3BE。

HTTP 接口(本机 webserver)

方法 路径 说明
GET /eyecare-bg/api/config { ok, config, css }
POST /eyecare-bg/api/config 保存 / preview: true 试算 / reset: true 恢复默认
GET /eyecare-bg 设置页面
GET /eyecare-bg/panel.js 面板模块

请求体上限 64 KiB;非法颜色返回 400。

安装与启用

桌面版 desktop profile 不能用外部普通 dsh CLI 管理,会报 profile "desktop" is managed exclusively by the Electron application。只认:应用内插件管理,或安装包捆绑的 CLI。

方式 A · 应用内:左侧栏 → 插件 → 添加插件 → 粘贴本仓库在磁盘上的绝对路径。

方式 B · 捆绑 CLI(将 <DSH 安装目录> 换成本机路径):

& '<DSH 安装目录>\resources\runtime\cli\bin\dsh.cmd' plugin --profile desktop add `
  '<本仓库的绝对路径>'

以 link: 挂进 profile 的 node_modules(junction),改 host.js 后重启桌面版即可,无需重装。

回滚:

& '<DSH 安装目录>\resources\runtime\cli\bin\dsh.cmd' plugin --profile desktop remove dsh-eyecare-bg

装/卸对其它 bundle 隔离:单条解析失败只会进 skippedBundles,其余照常加载。

典型用法

  1. 按上面方式安装并重启 DSH。
  2. 打开 设置 → 护眼绿背景,选预设或输入 #C7EDCC 等色值,必要时调整深色模式色与「表面染色」。
  3. 点保存;配置写入 $DSH_HOME/eyecare-bg.json,下次启动仍生效。
  4. 若不想左侧浮签,在 YAML 或 JSON 里设 tab: false,或浏览器访问 http://127.0.0.1:19387/eyecare-bg 单独调参。

开发者可在仓库根目录跑自检(资料原文):

node test/verify.mjs
node test/serve.mjs 19488

适用场景与注意

适合:希望 DSH 长时间使用时降低白底刺激、又不愿换整套主题或动布局的开发者;需要代码块、侧栏、输入框与画布统一绿系层次的用户。

注意:

  • 插件在 当前 DSH 进程权限 下运行,安装前应自行阅读源码与 MIT 许可证,确认可接受注入样式与本地 HTTP 路由行为。
  • 本机 webserver 无全局认证;插件对 /eyecare-bg 等路由做了 Host/Origin 限制,仍建议仅在可信本机环境使用。
  • 社区目录 SkillHub 与 GitHub 仓库由社区维护,与 DeepSeek / 幻方无官方从属关系;DSH 生态理念是「一切皆插件」,本文事实均来自上述 README 与 package.json 说明。

结尾

dsh-eyecare-bg 用 31 个背景 token 覆盖和设置页/浮签/独立页三入口,在不动官方 typography 与布局的前提下把 DSH 换成护眼绿;零依赖、不构建、配置落盘清晰。需要细节与预览图见 GitHub README,从目录页进入见 SkillHub 插件页。

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

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

Xiaoye