Skip to main content

皮肤与主题

皮肤控制的是 Hermes CLI 的视觉呈现,包括横幅颜色、加载动画表情与动词、响应框标签、品牌文本,以及工具输出前缀。

它和对话风格是两套独立机制:

  • 个性(Personality) 影响 Hermes 说话的语气和风格
  • 皮肤(Skin) 影响 Hermes 在终端里的外观

如何切换皮肤

在当前会话中切换:

/skin
/skin ares
/skin slate

设置永久默认皮肤:

display:
skin: ares

用户自定义皮肤放在 ~/.hermes/skins/<name>.yaml,然后就可以通过 /skin <name>display.skin: <name> 启用。

内置皮肤

当前代码内置了这些皮肤:

皮肤名描述
default经典 Hermes 金色主题,带一点可爱风格
ares深红与青铜色的战神主题,带自定义加载动画装饰
mono灰阶单色主题,适合极简终端或录屏
slate冷蓝色开发者风格,克制、干净
poseidon深海蓝与海沫绿的海神主题
sisyphus高对比灰阶主题,强调坚持感
charizard焦橙与余烬色的火焰主题

皮肤结构

皮肤是纯 YAML 数据文件,缺失字段会自动继承 default 皮肤的值。

name: mytheme
description: My custom theme

colors:
banner_border: "#CD7F32"
banner_title: "#FFD700"
banner_accent: "#FFBF00"
banner_dim: "#B8860B"
banner_text: "#FFF8DC"
ui_accent: "#FFBF00"
ui_label: "#4dd0e1"
ui_ok: "#4caf50"
ui_error: "#ef5350"
ui_warn: "#ffa726"
prompt: "#FFF8DC"
input_rule: "#CD7F32"
response_border: "#FFD700"
session_label: "#DAA520"
session_border: "#8B8682"

spinner:
waiting_faces: ["(⚔)", "(⛨)"]
thinking_faces: ["(⌁)", "(<>)"]
thinking_verbs: ["thinking", "plotting"]
wings:
- ["⟪⚔", "⚔⟫"]

branding:
agent_name: "Hermes Agent"
welcome: "Welcome to Hermes Agent!"
goodbye: "Goodbye! ⚕"
response_label: " ⚕ Hermes "
prompt_symbol: "❯ "
help_header: "(^_^)? Available Commands"

tool_prefix: "┊"

tool_emojis:
terminal: "⚔"
web_search: "🔮"

banner_logo: ""
banner_hero: ""

可配置键

colors

用于控制 CLI 中的大部分颜色:

  • banner_border
  • banner_title
  • banner_accent
  • banner_dim
  • banner_text
  • ui_accent
  • ui_label
  • ui_ok
  • ui_error
  • ui_warn
  • prompt
  • input_rule
  • response_border
  • session_label
  • session_border

spinner

用于控制等待和推理时的加载动画:

  • waiting_faces:等待 API 时循环显示的表情
  • thinking_faces:模型推理时循环显示的表情
  • thinking_verbs:加载提示里使用的动词
  • wings:可选的左右装饰对,例如 ["⟪⚔", "⚔⟫"]

如果这些字段为空,就会回退到 CLI 内部的默认动画。

branding

用于控制 CLI 文本品牌内容:

  • agent_name
  • welcome
  • goodbye
  • response_label
  • prompt_symbol
  • help_header

其他顶层字段

  • tool_prefix:工具输出行前缀,默认是
  • tool_emojis:按工具名覆盖默认 emoji
  • banner_logo:替换默认 Logo 的富标记 ASCII 艺术
  • banner_hero:替换默认主视觉的富标记 ASCII 艺术

自定义皮肤示例

最小自定义皮肤通常只需要覆盖少量字段:

name: minimal
description: Minimal warm theme

colors:
banner_border: "#FFD700"
banner_title: "#FFA500"
banner_text: "#F5F5DC"
ui_accent: "#00CED1"

spinner:
thinking_verbs: ["thinking", "processing", "analyzing"]

branding:
agent_name: "MyAgent"
welcome: "Welcome to MyAgent!"
goodbye: "Goodbye!"
response_label: " Response "
prompt_symbol: "👉 "

保存到:

~/.hermes/skins/minimal.yaml

然后在 CLI 中执行:

/skin minimal

Hermes Mod

Hermes Mod 是社区提供的可视化皮肤编辑器,可以用图形界面来创建和管理皮肤,而不用手写 YAML。

它支持:

  • 实时预览皮肤效果
  • 可视化调整颜色、加载动画和品牌文本
  • 生成 banner_logo / banner_hero 艺术内容
  • 直接写入 ~/.hermes/skins/
  • 更新 config.yaml 中的 display.skin

常见启动方式:

npx -y hermes-mod

或手动安装:

git clone https://github.com/cocktailpeanut/hermes-mod.git
cd hermes-mod/app
npm install
npm start

Hermes Mod 支持 HERMES_HOME,因此也兼容 配置文件

运行说明

  • 内置皮肤定义在 skin_engine.py
  • 找不到的皮肤会自动回退到 default
  • /skin 会立即更新当前会话的 CLI 外观
  • 用户皮肤 ~/.hermes/skins/ 会优先覆盖同名内置皮肤
  • 通过 /skin 切换只影响当前会话;如果想设为永久默认,请修改 config.yaml
  • banner_logobanner_hero 支持 Rich 标记,例如 [bold #FF0000]text[/]