Appearance
Hermes 的 Skin 系统是数据驱动的 CLI 主题机制:皮肤是 YAML 文件,放到 ~/.hermes/skins/<name>.yaml 后用 /skin <name> 激活,无需修改任何代码。每个皮肤可以自定义颜色调色板、Spinner 动画面孔和文案、CLI 界面文字(欢迎语/退出语/响应框标签)、工具输出前缀字符,以及启动时的 ASCII 艺术 Logo。
Hermes Agent Skin 主题系统:用 YAML 定制 CLI 视觉风格的完整教程
内置皮肤一览
Hermes 目前内置 8 个皮肤,涵盖从活泼到严肃的多种风格:
| 皮肤名 | 风格描述 | 主色调 |
|---|---|---|
default | 经典 Hermes — 金色 + 川流符 ⚕ | 金色/琥珀色 |
ares | 战神主题 — 深红 + 青铜 ⚔ | 战火红/青铜 |
mono | 单色简洁 — 干净的灰度 | 纯灰阶 |
slate | 开发者蓝 — 冷蓝色 | 皇家蓝 |
poseidon | 海神主题 — 深蓝 + 海沫 Ψ | 深海蓝 |
sisyphus | 西西弗斯主题 — 朴素灰度 ◉ | 中性灰 |
charizard | 火焰主题 — 橙红 + 余烬 ✦ | 熔岩橙 |
切换皮肤:
bash
/skin # 查看所有可用皮肤
/skin ares # 切换到 ares 皮肤
/skin default # 恢复默认永久设置(写入 config.yaml):
yaml
display:
skin: aresSkin YAML Schema
皮肤文件存放在 ~/.hermes/skins/<name>.yaml,所有字段都是可选的——缺省的字段自动继承 default 皮肤。
1. 基本字段
yaml
name: mytheme # 皮肤名(用于 /skin 命令)
description: 我的自定义皮肤2. 颜色调色板
yaml
colors:
# 启动横幅 (banner panel)
banner_border: "#CD7F32" # 面板边框颜色
banner_title: "#FFD700" # 面板标题文字颜色
banner_accent: "#FFBF00" # 章节标题(Available Tools、Skills 等)
banner_dim: "#B8860B" # 暗色/辅助文字(分隔符、模型信息)
banner_text: "#FFF8DC" # 正文文字(工具名、技能名列表)
# 通用 UI 元素
ui_accent: "#FFBF00" # 通用强调色
ui_label: "#4dd0e1" # 标签颜色
ui_ok: "#4caf50" # 成功指示符(绿色)
ui_error: "#ef5350" # 错误指示符
ui_warn: "#ffa726" # 警告指示符
# 输入区域
prompt: "#FFF8DC" # 输入提示文字颜色
input_rule: "#CD7F32" # 输入框上下分隔线颜色
# 响应框
response_border: "#FFD700" # 响应框边框颜色(ANSI)
# 会话信息
session_label: "#DAA520" # 会话标签颜色
session_border: "#8B8682" # 会话 ID 暗色颜色值格式:十六进制 #RRGGBB,由 Rich 库渲染,支持标准 Web 颜色值。
3. Spinner 动画
Spinner 是等待 API 响应或工具执行时显示的动画。
yaml
spinner:
# 等待 API 响应时轮流显示的"面孔"
waiting_faces:
- "(。◕‿◕。)"
- "(◕‿◕✿)"
- "٩(◕‿◕。)۶"
# 进行 extended thinking(推理)时显示的面孔
thinking_faces:
- "(。•́︿•̀。)"
- "(◔_◔)"
- "(¬‿¬)"
# Spinner 消息动词(如 "pondering your request...")
thinking_verbs:
- "pondering"
- "contemplating"
- "musing"
# 可选:Spinner 左右两侧的装饰(wings)
# 每条是 [左装饰, 右装饰] 对
wings:
- ["⟪⚔", "⚔⟫"]
- ["⟪▲", "▲⟫"]不同主题的 Spinner 风格对比:
| 皮肤 | 等待面孔 | 动词风格 |
|---|---|---|
| default | 呆萌表情包 | 通用(thinking / pondering) |
| ares | 战斗符号 (⚔) (▲) | 战争语气(forging, marching) |
| poseidon | 波浪符号 (≈) (Ψ) | 航海语气(charting currents) |
| sisyphus | 圆形符号 (◉) (◬) | 苦行语气(pushing uphill) |
4. 界面文字(Branding)
yaml
branding:
agent_name: "Hermes Agent" # 横幅标题和状态显示
welcome: "欢迎!输入 /help 查看命令" # CLI 启动时的欢迎语
goodbye: "再见!⚕" # 退出时的告别语
response_label: " ⚕ Hermes " # 响应框的标题标签
prompt_symbol: "❯ " # 输入提示符符号
help_header: "(^_^)? 可用命令" # /help 命令的标题response_label 显示在每条 AI 回复的边框标题中。如果你部署了多个角色的 Hermes Bot,可以通过这个字段区分:
yaml
# work 皮肤
branding:
agent_name: "Work Assistant"
response_label: " 💼 Work "
# personal 皮肤
branding:
agent_name: "Personal Hermes"
response_label: " ⚕ Personal "5. 工具输出前缀
yaml
tool_prefix: "┊" # 工具执行输出的每行前缀字符可选的前缀字符:
┊(默认,细竖线)╎(轻三段竖线)▏(左八分之一块)│(标准竖线)┃(粗竖线)
6. 工具 Emoji 覆盖
yaml
tool_emojis:
terminal: "⚔" # 覆盖 terminal 工具的 Emoji
web_search: "🔮" # 覆盖 web_search 工具的 Emoji
# 未列出的工具使用注册表默认 Emoji工具 Emoji 出现在 Spinner 消息中(如 ⚔ executing command...)和工具进度提示里。
7. ASCII 艺术 Logo(高级)
yaml
banner_logo: |
[bold #FFD700]██╗ ██╗███████╗██████╗ ███╗ ███╗███████╗███████╗[/]
...(Rich 标记语言 ASCII 艺术)
banner_hero: |
[#CD7F32]⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀[/]
...(字符画,支持 Rich 颜色标记)banner_logo 替换启动横幅的 ASCII 艺术标题,banner_hero 替换右侧的字符画装饰。这两个字段使用 Rich 标记语法,可以用 [bold #FF0000]文字[/] 格式加颜色和样式。
自定义皮肤制作流程
第一步:复制模板
bash
cp D:/project/ai/hermes-agent/docs/skins/example-skin.yaml ~/.hermes/skins/mytheme.yaml或者直接创建 ~/.hermes/skins/mytheme.yaml(所有字段都是可选的,可以只改你关心的部分):
yaml
name: mytheme
description: 我的定制皮肤
colors:
banner_border: "#2E86C1"
banner_title: "#85C1E9"
banner_accent: "#3498DB"
prompt: "#EBF5FB"
input_rule: "#2E86C1"
response_border: "#85C1E9"
branding:
response_label: " 🤖 My Bot "
prompt_symbol: "→ "第二步:激活
bash
/skin mytheme # 临时激活(重启后失效)永久激活写入 config.yaml:
yaml
display:
skin: mytheme第三步:调试
激活后 CLI 立即应用皮肤,不需要重启。修改 YAML 文件后再次 /skin mytheme 重新加载。
皮肤和 Profile 的关系
皮肤和 Profile 是两个独立的系统,可以组合使用:
- 皮肤只影响视觉外观,不影响功能
- 每个 Profile 可以配置不同皮肤(在各自的 config.yaml 里设置)
- Profile 目录里有独立的
skins/目录,可以存放只对该 Profile 有效的皮肤文件
典型组合:
yaml
# ~/.hermes/profiles/work/config.yaml
display:
skin: slate # 工作环境:简洁蓝色
# ~/.hermes/profiles/personal/config.yaml
display:
skin: ares # 个人环境:战神主题
# ~/.hermes/profiles/coding/config.yaml
display:
skin: mono # 编程环境:纯单色,减少视觉干扰皮肤 Hub(社区共享)
和技能系统类似,Hermes 也有皮肤分享机制:
bash
/skin browse # 浏览社区皮肤
/skin install <url> # 从 URL 安装皮肤自制皮肤可以上传到 GitHub Gist 或个人 Hub 与他人分享——对方只需要你的 YAML 文件 URL。
FAQ
Q: 切换皮肤需要重启 Hermes 吗?
不需要。/skin <name> 命令立即生效,当前会话实时变更。
Q: 在 Gateway/Telegram 模式下皮肤有效吗?
皮肤主要影响 CLI 终端界面。Gateway 模式下消息平台(Telegram/Discord)的外观由平台本身决定,Hermes 皮肤不影响那边的显示。但如果你开启了带 Web 界面的 API 模式,某些皮肤元素(如 agent_name)会在 Web UI 里显示。
Q: 皮肤 YAML 里能用中文吗?
可以,branding 字段的文本支持中文。比如 welcome: "你好!请输入你的问题或 /help 查看帮助" 完全有效。
Q: 颜色不对劲,怎么调试?
Rich 的颜色渲染依赖终端的 True Color 支持。如果颜色显示不对:
- 确认终端支持 24-bit 颜色(大多数现代终端支持)
- 检查
TERM环境变量(xterm-256color或xterm-truecolor) - 某些 SSH 会话可能降级颜色深度
Q: 默认皮肤里金色的 ⚕ 符号是什么?
⚕ 是医神阿斯克勒庇俄斯的权杖(不是赫尔墨斯的双蛇杖 ☿),但 Hermes 团队选了它作为默认 Logo 符号。Ares 皮肤用 ⚔,Poseidon 用 Ψ(海神三叉戟)——每个皮肤都有自己的「神祇符号」。
本系列文章
Provider 与成本优化
能力扩展
部署与集成
- 消息网关部署:把 AI 助手接入 Telegram、Discord 和 Slack
- ACP 集成:在 VS Code 和 Zed 编辑器里使用 Hermes
- MCP Server 模式:让 Claude Code 读取你的 Telegram / Discord 消息记录