Skip to content

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: ares

Skin 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 支持。如果颜色显示不对:

  1. 确认终端支持 24-bit 颜色(大多数现代终端支持)
  2. 检查 TERM 环境变量(xterm-256colorxterm-truecolor
  3. 某些 SSH 会话可能降级颜色深度

Q: 默认皮肤里金色的 ⚕ 符号是什么?

⚕ 是医神阿斯克勒庇俄斯的权杖(不是赫尔墨斯的双蛇杖 ☿),但 Hermes 团队选了它作为默认 Logo 符号。Ares 皮肤用 ⚔,Poseidon 用 Ψ(海神三叉戟)——每个皮肤都有自己的「神祇符号」。


本系列文章

Provider 与成本优化

能力扩展

部署与集成

内部机制深度解析