前言¶
长时间在 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。
- 目录页:https://www.skillhub.cn/plugins/Sorphone/dsh-eyecare-bg
- 源码:https://github.com/Sorphone/dsh-eyecare-bg
- 许可证:MIT(资料中的
package.json) - 当前资料版本:
3.0.0
它为什么能改背景¶
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 时只染主画布,卡片与代码块回到官方配色。
设置面板(三个入口)¶
- DSH 设置页:左侧栏底部设置 → 导航栏「护眼绿背景」(
settings.section,order: 40)。 - 页面左侧边缘小色块(约
top: 44%),点开居中模态;配置tab: false可隐藏,仅保留设置页入口。 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,其余照常加载。
典型用法¶
- 按上面方式安装并重启 DSH。
- 打开 设置 → 护眼绿背景,选预设或输入
#C7EDCC等色值,必要时调整深色模式色与「表面染色」。 - 点保存;配置写入
$DSH_HOME/eyecare-bg.json,下次启动仍生效。 - 若不想左侧浮签,在 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 插件页。