皮肤与主题
皮肤控制的是 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_borderbanner_titlebanner_accentbanner_dimbanner_textui_accentui_labelui_okui_errorui_warnpromptinput_ruleresponse_bordersession_labelsession_border
spinner
用于控制等待和推理时的加载动画:
waiting_faces:等待 API 时循环显示的表情thinking_faces:模型推理时循环显示的表情thinking_verbs:加载提示里使用的动词wings:可选的左右装饰对,例如["⟪⚔", "⚔⟫"]
如果这些字段为空,就会回退到 CLI 内部的默认动画。
branding
用于控制 CLI 文本品牌内容:
agent_namewelcomegoodbyeresponse_labelprompt_symbolhelp_header
其他顶层字段
tool_prefix:工具输出行前缀,默认是┊tool_emojis:按工具名覆盖默认 emojibanner_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_logo和banner_hero支持 Rich 标记,例如[bold #FF0000]text[/]