
背景
Hermes Agent 的 Web Dashboard 原先采用了深青色(dark teal)主题,视觉风格颇具赛博朋克味道——深色背景、琥珀色文字,并使用了如 Mondwest、RulesCompressed 等具有锯齿化像素效果的字体。这种风格虽然辨识度高,但在日常高频使用中,逐渐暴露出几个影响体验的问题:
- 像素字体可读性差:Mondwest 等自定义像素字体在普通分辨率屏幕上锯齿感明显,尤其是在显示中文时,阅读起来颇为费力。
- 暗色主题不适合长时间使用:在光线明亮的办公环境下,高对比度的暗色界面容易导致视觉疲劳,不够友好。
- 与现代 SaaS 工具视觉割裂:当前主流的开发与协作工具,如 Linear、Vercel、Stripe 等,普遍采用清晰、明亮的设计语言,Hermes 原有的暗黑风格显得有些格格不入。

因此,我决定对其进行一次视觉改造,目标是打造一个现代、明亮的极简风格界面。新的设计以 Inter + JetBrains Mono 作为基础字体栈,主色调选用紫色(#6d5dfc),力求整体观感干净、克制。
改造后的效果对比如下:

改造概览
设计语言
| 属性 |
旧值(Dark Teal) |
新值(Light) |
| 背景色 |
#041C1C |
#fafafa |
| 前景色 |
#ffe6cb |
#0f0f0f |
| 卡片色 |
#062424 |
#ffffff |
| 主色 |
#ffe6cb(琥珀) |
#6d5dfc(紫色) |
| 边框色 |
半透明琥珀 |
#e4e4e7 |
| 正文字体 |
Mondwest |
Inter |
| 等宽字体 |
Courier Prime |
JetBrains Mono |
| 圆角 |
0(方正) |
xl(圆润) |
| 阴影 |
无 |
shadow-sm |
涉及文件(19 个)
核心设计令牌:
index.css — 全部的 CSS 变量、字体栈、全局效果(noise overlay / warm glow)
index.html — 添加 Google Fonts CDN 链接(用于加载 Inter + JetBrains Mono 字体)
UI 基础组件:
badge.tsx — 圆角药丸样式,适配浅色背景变体
card.tsx — 添加 rounded-xl + shadow-sm + 白色背景
button.tsx — rounded-lg,紫色主色,优化 focus-visible ring 样式
input.tsx / select.tsx — 白色背景,ring-2 focus 样式
switch.tsx — 圆角滑块,紫色 checked 状态,白色 thumb
label.tsx — 移除 uppercase 和 letter-spacing 样式
tabs.tsx — 移除 uppercase,紫色 active indicator
页面与布局:
App.tsx — 全新 header:紫色 logo icon + 圆角导航栏 + 白色毛玻璃背景
OAuthLoginModal.tsx — 应用 rounded-xl 圆角
AutoField.tsx — textarea 白色背景 + ring-2 边框
Toast.tsx — 白色背景圆角 + shadow-lg
ConfigPage.tsx / CronPage.tsx — 适配 textarea 样式
AnalyticsPage.tsx — 清除所有硬编码的暗色值(如 #ffe6cb → text-primary)
SkillsPage.tsx — amber-300 → amber-600
StatusPage.tsx — 移除 font-display 相关样式
Patch 生成与使用
我将所有修改打包生成了一个 patch 文件:https://gist.github.com/smallnest/e2e55b22e305b16daac696f2e3eb1242 ,你可以通过以下方法轻松应用。
应用方法
在 hermes-agent 项目的根目录下执行以下命令:
git apply hermes-dashboard-light-theme.patch
cd web && npx vite build
构建产物将输出到 hermes_cli/web_dist/ 目录,重启 Hermes Agent 服务后即可看到全新的亮色主题。
回滚
如需回滚到原始主题,执行:
git apply -R hermes-dashboard-light-theme.patch
技术细节
字体加载策略
通过 Google Fonts CDN 加载 Inter(字重 400/500/600/700)和 JetBrains Mono(字重 400/500)。在 index.html 中使用 <link> 标签并配合 font-display: swap 属性,确保首屏文字不会因字体加载而闪烁。
在 CSS 中,我保留了 font-display、font-expanded、font-compressed、font-courier 等工具类名,但将它们全部映射到新的 Inter 或 JetBrains Mono 字体上。这样做的好处是,即便旧组件中残留了对这些 class 的引用,也不会导致样式错误或控制台报错。
全局效果适配
原有的噪声叠加(noise overlay)和温暖光晕(warm glow)效果也从暗色模式适配到了亮色模式:
- Noise overlay: 将
mix-blend-mode 从 color-dodge 改为 overlay,同时将 opacity 从 0.10 降低到 0.015。
- Warm glow: 将光晕颜色从琥珀色径向渐变改为淡紫色,并将
mix-blend-mode 从 lighten 改为 multiply。
在亮色主题下,这两个效果变得非常克制,几乎难以察觉,但又为界面保留了微妙的视觉层次和品牌质感。
Badge 颜色体系
Badge 组件的样式从暗色半透明背景改为更符合亮色设计规范的浅色实心底色:
| Variant |
旧样式 |
新样式 |
| default |
border-foreground/20 bg-foreground/10 |
border-primary/20 bg-primary/10 text-primary |
| destructive |
border-destructive/30 bg-destructive/15 |
border-red-200 bg-red-50 text-red-600 |
| success |
grain border-emerald-600/30 bg-emerald-950/70 |
border-emerald-200 bg-emerald-50 text-emerald-700 |
| warning |
border-warning/30 bg-warning/15 |
border-amber-200 bg-amber-50 text-amber-700 |
总结
得益于 Tailwind CSS v4 强大的 @theme CSS 变量系统,本次改造的大部分工作只需集中修改 index.css 文件中的颜色变量值,组件样式便能自动更新。仅有个别页面存在硬编码的颜色值(例如 AnalyticsPage 中的 #ffe6cb),需要手动查找并替换为对应的语义化 token。
最终,我们得到了一个干净、现代且具备高可读性的亮色 Dashboard。它不仅与当前主流 SaaS 工具的视觉语言保持了一致,提升了长时间使用的舒适度,同时也通过标志性的紫色主色和精心调整的全局效果,保留了 Hermes 独特的品牌辨识度。如果你也对前端视觉优化或 Hermes Agent 感兴趣,欢迎在云栈社区交流你的想法和实践。
|