用两条 CSS 规则给界面换上莫兰迪雾蓝配色
30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/19 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add EatMyLunch/dsh-bloom-lite该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
给 DeepSeek Harness Web UI 用的莫兰迪雾蓝主题,两条规则、零运行时,比原版小 75 倍,不用观察器、定时器或轮询。
README
由 DeepSeek 最新模型翻译生成Bloom Lite
给 DeepSeek Harness Web UI 用的莫兰迪雾蓝主题,从 dsh-bloom-theme 重写而来,目标只有一个:极致性能。同一套配色,运行时开销全部去掉。
整个主题就是两条 CSS 规则,重新指向 Harness 自己的颜色 token。不覆盖组件,不用 !important,没有观察器,没有动画,没有滤镜,没有任何逐帧工作。
| | dsh-bloom-theme 0.18.1 | Bloom Lite |
| 随包发布的客户端产物 | 206,024 B | 2,955 B |
| 注入的 style 标签 | 3 | 1 |
| 运行时求值的颜色 / 变体 | 10 套调色板 | 1 套调色板,构建时解析 |
| backdrop-filter(毛玻璃模糊) | 33 | 0 |
| @keyframes | 12 | 0 |
| transition: | 20 | 0 |
| will-change | 4 | 0 |
| addEventListener | 18 | 0 |
| MutationObserver | 2 | 0 |
| requestAnimationFrame | 1 | 0 |
| setInterval / setTimeout | 1 / 12 | 0 / 0 |
展开完整文档(README 剩余 1 节)
Bloom Lite
给 DeepSeek Harness Web UI 用的莫兰迪雾蓝主题,从 dsh-bloom-theme 重写而来,目标只有一个:极致性能。同一套配色,运行时开销全部去掉。
整个主题就是两条 CSS 规则,重新指向 Harness 自己的颜色 token。不覆盖组件,不用 !important,没有观察器,没有动画,没有滤镜,没有任何逐帧工作。
| | dsh-bloom-theme 0.18.1 | Bloom Lite |
| 随包发布的客户端产物 | 206,024 B | 2,955 B |
| 注入的 style 标签 | 3 | 1 |
| 运行时求值的颜色 / 变体 | 10 套调色板 | 1 套调色板,构建时解析 |
| backdrop-filter(毛玻璃模糊) | 33 | 0 |
| @keyframes | 12 | 0 |
| transition: | 20 | 0 |
| will-change | 4 | 0 |
| addEventListener | 18 | 0 |
| MutationObserver | 2 | 0 |
| requestAnimationFrame | 1 | 0 |
| setInterval / setTimeout | 1 / 12 | 0 / 0 |
| localStorage 读写 | 10 | 0 |
| 宿主 HTTP 路由 / 服务注入 | /api/bloom/dsh-version + inject: ['webServer'] | 无,inject: [] |
| 插件占用的 DOM | 3 个 style 标签 + 切换胶囊 + 3 个监听器 | 1 个 style 标签 |
| !important 声明 | 有 | 0 |
原版数据是 dsh-bloom-theme@0.18.1 已发布的 lib/client.js(206,024 字节)中实际出现的次数。Lite 的数据来自本包的构建产物。
工作原理,以及为什么这样更快
Harness 约 2,400 处 --dsw-alias- 颜色决策,本来就都通过一小撮原始 --dsw-static- 色阶来解析。重新指向这些色阶,就能给整个应用换色——亮色和暗色、每个面板、每种状态——完全不用碰任何组件规则。
* 规则 1 把 56 个原始色阶档位(neutral-bluish-、neutral-、blue-、deepseek-)改写成 Bloom 莫兰迪调色板,重新指向亮色强调色对,并把宿主用纯白绘制的表面——画布、三个面板层和侧边栏列——设成 Bloom 自己的亮色锚点。
* 规则 2 为暗色模式重新指向强调色对。
层叠事实,对照已安装的 Harness 样式表核实过,不是想当然:
| 宿主规则 | 优先级 | 我们的规则 | 优先级 |
| body{--dsw-static-}(静态色 + 亮色别名) | 0,0,1 | html body{...} | 0,0,2 |
| body[data-ds-dark-theme]{--dsw-alias-} | 0,1,1 | html body[data-ds-dark-theme]{...} | 0,1,2 |
我们的两条规则靠普通优先级就能胜出,所以样式表永远不需要 !important——亮暗切换也照常工作,因为规则 2 只动强调色,其余暗色别名仍然通过我们已经改过色相的色阶解析。
每个会话的开销:1 个元素,1 次 CSS 解析(约 2.30 KiB),1 次层叠。 style 节点通过 ctx.effect 注册,所以卸载插件时它会一并移除;标签上带有 data-plugin / data-plugin-css,标明属于本插件:Harness 的模块 loader 在生成客户端模块时,会接管它找到的每一个未打标签的 (dsh-client-modules/lib/client.js),并在该模块卸载时删除 style[data-plugin=<id>]。因此,一个无人认领的标签可能被交给别的模块,再随它一起被删掉。
强调色值得单独说明:Host 定义了 --dsw-alias-button-primary-fill: var(--dsw-alias-brand-primary),所以只改 brand-primary,就能让所有主按钮、复选框、单选框和启动加载动画变成雾蓝色——而且依然不需要写任何组件规则。
重新调色
调色板是生成的,不是手写的:
node _tools/gen.mjs # re-reads the installed Host ramps, re-hues them -> src/client.css
node _tools/build.mjs # inlines + minifies -> client.js, and runs the guards
_tools/gen.mjs 把 Host 色阶的每一级转成 OKLab,移到色相 240(雾蓝),并设一个彩度上限,同时保留每一级的明度——所以 Host 设计好的对比度在重新调色后依然成立。浅色表面是例外:Host 用同一个纯白色阶绘制画布、面板、卡片和浮层,生成器有意保留这个明度,因此在 token 层把它们设成 Bloom 自己的浅色锚点——画布 oklch(96.5% 0.01 240),面板层 oklch(97.6%/98.4%/99% 0.008/0.006/0.004 240),侧边栏 oklch(94.5% 0.012 240)——让面板比画布更亮,雾色读作页面,内容依然读作纸张。
| 配对 | Bloom Lite | 结论 |
| 浅色正文文字在雾色画布上 | 17.16:1 | AA |
| 浅色次级文字在画布上 | 5.24:1 | AA |
| 浅色三级文字在画布上 | 3.37:1 | AA-large |
| 浅色正文文字在面板上 | 17.64:1 | AA |
| 浅色次级文字在面板上 | 5.39:1 | AA |
| 浅色三级文字在面板上 | 3.46:1 | AA-large |
| 浅色文字在浮层中 | 18.34:1 | AA |
| 浅色侧边栏文字 | 4.92:1 | AA |
| 浅色主按钮标签(白色在 #2078ab 上) | 4.84:1 | AA |
| 深色正文文字在基底上 | 17.45:1 | AA |
| 深色次级文字在基底上 | 12.10:1 | AA |
| 深色三级文字在基底上 | 8.53:1 | AA |
| 深色文字在抬升面板上 | 15.02:1 | AA |
| 深色主按钮标签(#07121b 在 #5dabe0 上) | 7.53:1 | AA |
改 _tools/gen.mjs 顶部的 HUE(或三个彩度上限 C_NEUTRAL / C_GRAY / C_ACCENT),再跑一遍两个脚本,就能换一种氛围。
构建拒绝回退
只要样式表里出现以下内容,_tools/build.mjs 就让构建失败:!important、任何 @ 规则、animation、transition、filter / backdrop-filter、box-shadow、text-shadow、will-change、渐变或 url() 图片,或类/ID 选择器。它还会断言规则/声明的精确数量,并确认产出的 client.js 能解析。一个会掉帧的主题,不可能从这个仓库里被意外发布出去。
有意移除
玻璃面板(在大面积表面上用 backdrop-filter)、微动效、变体切换芯片及其监听器、另外 9 套调色板、appearance/think-tag watchers、Host 版本路由、webServer 注入、@deepseek-ai/dsh-client-ui-conversation 激活依赖、ZH/EN 语言字符串(已经没有插件自有的文本需要翻译)、更新徽标。这些要么是持续的主线程工作,要么是必须保持同步的状态;主题两样都不需要。
包结构
index.js host half - export function apply() {}, nothing else
client.js shipped client half (built: stylesheet inlined, minified)
cordis.patch.yml bundle patch, inserts the row
src/runtime.js hand-written client source template
src/client.css generated stylesheet (readable, one declaration per line)
_tools/gen.mjs palette generator + contrast audit
_tools/build.mjs inliner, minifier, performance guards
安装 / 更新:
git clone https://github.com/EatMyLunch/dsh-bloom-lite.git
然后把这份检出作为 bundle 加入当前配置档 —— Harness 的插件管理器接收绝对目录路径:
plugin_manager { action: "install_bundle", target: "C:/path/to/dsh-bloom-lite" }
没有构建步骤,也没有依赖:client.js 提交时已经构建好,所以 Harness 提供的字节与本仓库审阅的完全一致。删掉检出目录,主题就没了。
验证状态
已验证:交付的 client.js 的 JavaScript 语法(new Function 解析门)、manifest 与 patch 的有效性、上面的静态层叠算术,以及对比度表(离线计算,基于已安装的 Host 色阶,使用 CSS Color 4 OKLab 转换)。
已实机验证:plugin_manager 对该目录报告 application: applied,配置档现在带有 bundle 行 include:bloom-lite -> dsh-bloom-lite,运行中的 Harness 在 GET /plugins/??dsh-bloom-lite/client.js&rev=<artifact-rev> 提供该产物,返回 200、text/javascript; charset=utf-8。除 Host 自带的 ;\n 分隔符和一行 sourceMappingURL 尾部外,提供的响应体与本包的 client.js 逐字节一致,所以浏览器执行的代码正是构建守卫批准的那份。
未验证:渲染结果。 此环境没有浏览器控制能力,因此没有截图,也没有读取计算样式。刷新页面即可看到主题;明/暗跟随 Harness 自己的开关。
致谢与许可
MIT —— 见 LICENSE。
配色是对 webkubor 的 dsh-bloom-theme(同为 MIT)的重新调色:本包保留该主题的莫兰迪雾蓝意图及其明度关系,丢掉一切消耗运行时成本的东西。它重写的色阶属于 DeepSeek Harness。
作者:EatMyLunch。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
EatMyLunch/dsh-bloom-lite
用两条 CSS 规则给界面换上莫兰迪雾蓝配色
相关插件 · UI / 主题
破甲增强版JeffKeeping/dsh-purge-plus
dsh-purge 的非官方分支fork:适配 DeepSeek Harness 0.2.1-rc.2、破甲内核…
★ 387已汉化DeepSeek 客户端
71.9
无代码业务系统平台nocobase/nocobase
NocoBase 是什么
★ 24,804已汉化DSH
71.8
1Panel 服务器面板1Panel-dev/1Panel
全球 250 万+ 自托管用户共同喜爱。
★ 37,362已汉化DSH
71.4
终端编码代理esengine/DeepSeek-Reasonix
· 指南 · ACP · 扩展开发 · 规格 · 官方网站 · Discord · QQ
★ 36,076已汉化DSH
71.2
工作状态行动态ccch1mneyyy/working-activity
作者:chimney@ccch1mneyyy。社区项目,非 DeepSeek 官方项目。
★ 664已汉化DSH
71.2
多模型配置管家farion1231/cc-switch
跨平台桌面一体化助手,支持 Claude Code、Codex、OpenCode、DeepSeek Harness 等工具,唯一官网 ccswitch.io
★ 151,814已汉化DSH
71.1
这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。