背景
Hermes Agent 的 Web Dashboard 原本采用深青色(dark teal)主题,视觉风格偏向赛博朋克——暗底、琥珀色文字、锯齿化像素字体(Mondwest、RulesCompressed、RulesExpanded、Collapse)。这种风格虽然独特,但在日常使用中存在几个问题:
像素字体可读性差 — Mondwest 等自定义字体在低 DPI 屏幕上锯齿明显,中文环境下尤为突出
暗色主题不适合长时间使用 — 在明亮环境下对比度过高,容易视觉疲劳
与现代 SaaS 工具视觉割裂 — Linear、Vercel、Stripe 等主流工具均已采用亮色设计

因此我们将其改造为现代亮色主题,以 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 ringinput.tsx/select.tsx— 白底,ring-2 focus 样式switch.tsx— 圆角滑块,紫色 checked,白色 thumblabel.tsx— 去掉 uppercase / letter-spacingtabs.tsx— 去掉 uppercase,紫色 active indicator
页面与布局:
App.tsx— 全新 header:紫色 logo icon + pill 导航栏 + 白底毛玻璃OAuthLoginModal.tsx— rounded-xlAutoField.tsx— textarea 白底 + ring-2Toast.tsx— 白底圆角 + shadow-lgConfigPage.tsx/CronPage.tsx— textarea 适配AnalyticsPage.tsx— 清除所有硬编码暗色(#ffe6cb→text-primary)SkillsPage.tsx— amber-300 → amber-600StatusPage.tsx— 去 font-display
Patch 生成与使用
我把我的修改生成了一个patch: https://gist.github.com/smallnest/e2e55b22e305b16daac696f2e3eb1242 , 你可以使用下面的方法应用这个patch:
应用方法
在 hermes-agent 项目根目录下执行:
1 | git apply hermes-dashboard-light-theme.patch |
构建产物会输出到 hermes_cli/web_dist/,重启 Hermes Agent 即可看到新主题。
回滚
1 | 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 等 utility class,但全部映射到 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 变量系统,大部分改动只需修改 index.css 中的颜色值,组件自动跟随。少数硬编码颜色(如 AnalyticsPage 的 #ffe6cb)需要逐个替换为语义 token。
最终效果是一个干净、现代、高可读性的亮色 Dashboard,与主流 SaaS 工具的视觉语言一致,同时通过紫色主色和微妙的全局效果保留了 Hermes 的品牌辨识度。
