CLI 界面
Hermes Agent 的 CLI 是一个完整的终端用户界面(TUI),而不是 Web UI。它支持多行编辑、slash-command 自动补全、对话历史、可中断并重定向的交互,以及流式 tool output。专为长期使用终端的人设计。
运行 CLI
# 启动交互式会话(默认)hermes# 单次查询模式(非交互式)hermes chat -q "Hello"# 指定 modelhermes chat --model "anthropic/claude-sonnet-4"# 指定 providerhermes chat --provider nous # 使用 Nous Portalhermes chat --provider openrouter # 强制使用 OpenRouter# 指定 toolsetshermes chat --toolsets "web,terminal,skills"# 启动时预加载一个或多个 skillshermes -s hermes-agent-dev,github-authhermes chat -s github-pr-workflow -q "open a draft PR"# 恢复之前的 sessionshermes --continue # 恢复最近一次 CLI session(-c)hermes --resume <session_id> # 通过 ID 恢复指定 session(-r)# Verbose 模式(debug 输出)hermes chat --verbose# 隔离的 git worktree(用于并行运行多个 agents)hermes -w # 在 worktree 中进入交互模式hermes -w -q "Fix issue #123" # 在 worktree 中执行单次查询
界面布局
Hermes CLI 的横幅、对话流和固定输入提示,以稳定的文档插图形式展示,而不是脆弱的文本艺术图。
欢迎横幅会一目了然地显示你的 model、terminal backend、working directory、可用工具以及已安装的 skills。
状态栏
输入区域上方有一个持久状态栏,会实时更新:
⚕ claude-sonnet-4-20250514 │ 12.4K/200K │ [██████░░░░] 6% │ $0.06 │ 15m
| 元素 | 说明 |
|---|---|
| Model name | 当前 model 名称(如果超过 26 个字符会被截断) |
| Token count | 已使用的 context tokens / 最大 context window |
| Context bar | 带颜色阈值的可视化填充指示条 |
| Cost | 预估的 session 成本(若未知或模型价格为零则显示 n/a) |
| Duration | 已经过的会话时长 |
该状态栏会根据终端宽度自适应——当宽度 ≥ 76 列时显示完整布局,52–75 列时显示紧凑布局,小于 52 列时则显示最简布局(仅 model + duration)。
Context 颜色编码:
| 颜色 | 阈值 | 含义 |
|---|---|---|
| Green | < 50% | 空间充足 |
| Yellow | 50–80% | 开始接近上限 |
| Orange | 80–95% | 接近限制 |
| Red | ≥ 95% | 即将溢出 —— 建议使用 /compress |
使用 /usage 可查看更详细的分解,包括分项成本(例如 input tokens 与 output tokens)。
Session 恢复显示
当恢复之前的 session(hermes -c 或 hermes --resume <id>)时,横幅和输入提示之间会出现一个 “Previous Conversation” 面板,用于显示对话历史的紧凑回顾。详情与配置请参阅 Sessions — Conversation Recap on Resume。
快捷键
| 按键 | 操作 |
|---|---|
Enter |
发送消息 |
Alt+Enter 或 Ctrl+J |
新起一行(多行输入) |
Alt+V |
在终端支持时,从剪贴板粘贴图片 |
Ctrl+V |
粘贴文本,并在可能时附加剪贴板中的图片 |
Ctrl+B |
在启用 voice mode 时开始 / 停止录音(voice.record_key,默认:ctrl+b) |
Ctrl+C |
中断 agent(2 秒内连按两次则强制退出) |
Ctrl+D |
退出 |
Ctrl+Z |
将 Hermes 挂起到后台(仅 Unix)。在 shell 中运行 fg 可恢复。 |
Tab |
接受自动建议(ghost text)或自动补全 slash commands |
Slash Commands
输入 / 可看到自动补全下拉菜单。Hermes 支持大量 CLI slash commands、动态 skill commands,以及用户自定义 quick commands。
常见示例:
| 命令 | 说明 |
|---|---|
/help |
显示命令帮助 |
/model |
显示或修改当前 model |
/tools |
列出当前可用工具 |
/skills browse |
浏览 skills hub 和官方可选 skills |
/background <prompt> |
在单独的后台 session 中运行一个 prompt |
/skin |
显示或切换当前 CLI skin |
/voice on |
启用 CLI voice mode(按 Ctrl+B 录音) |
/voice tts |
开关 Hermes 回复的语音播放 |
/reasoning high |
提高 reasoning effort |
/title My Session |
为当前 session 命名 |
完整的内置 CLI 与 messaging 命令列表,请参阅 Slash Commands Reference。
关于 setup、providers、silence tuning,以及 messaging / Discord voice 的使用,请参阅 Voice Mode。
Quick Commands
你可以定义自定义命令,在不调用 LLM 的情况下即时运行 shell commands。这些命令在 CLI 和消息平台(Telegram、Discord 等)中都可使用。
# ~/.hermes/config.yamlquick_commands:status:type: execcommand: systemctl status hermes-agentgpu:type: execcommand: nvidia-smi --query-gpu=utilization.gpu,memory.used --format=csv,noheader
之后你可以在任意聊天中输入 /status 或 /gpu。更多示例请参阅 Configuration guide。
启动时预加载 Skills
如果你已经知道本次 session 需要启用哪些 skills,可以在启动时直接传入:
hermes -s hermes-agent-dev,github-authhermes chat -s github-pr-workflow -s github-auth
Hermes 会在第一轮对话开始前,将每个已命名的 skill 加载进 session prompt。这个参数在交互模式和单次查询模式中都可使用。
Skill Slash Commands
安装在 ~/.hermes/skills/ 中的每个 skill,都会自动注册成一个 slash command。Skill 名称本身就是命令名:
/gif-search funny cats/axolotl help me fine-tune Llama 3 on my dataset/github-pr-workflow create a PR for the auth refactor# 只输入 skill 名称,会先加载它,并让 agent 询问你的需求:/excalidraw
Personalities
设置一个预定义 personality 来改变 agent 的语气风格:
/personality pirate/personality kawaii/personality concise
内置 personalities 包括:helpful、concise、technical、creative、teacher、kawaii、catgirl、pirate、shakespeare、surfer、noir、uwu、philosopher、hype。
你也可以在 ~/.hermes/config.yaml 中定义自定义 personalities:
personalities:helpful: "You are a helpful, friendly AI assistant."kawaii: "You are a kawaii assistant! Use cute expressions..."pirate: "Arrr! Ye be talkin' to Captain Hermes..."# Add your own!
多行输入
有两种方式输入多行消息:
Alt+Enter或Ctrl+J—— 插入新的一行- 反斜杠续行 —— 在行尾加上
\继续输入:
❯ Write a function that:\1. Takes a list of numbers\2. Returns the sum
中断 Agent
你可以在任意时刻中断 agent:
- 当 agent 正在工作时,直接输入新消息并按 Enter —— 它会中断当前任务并处理你的新指令
Ctrl+C—— 中断当前操作(2 秒内按两次则强制退出)- 正在运行的 terminal commands 会立即被终止(先发 SIGTERM,1 秒后发 SIGKILL)
- 在中断期间输入的多条消息会被合并成一个 prompt
Busy Input Mode
display.busy_input_mode 配置项控制当 agent 正在工作时你按下 Enter 会发生什么:
| 模式 | 行为 |
|---|---|
"interrupt"(默认) |
你的消息会中断当前操作,并立即处理 |
"queue" |
你的消息会被静默排队,等 agent 完成后作为下一轮发送 |
# ~/.hermes/config.yamldisplay:busy_input_mode: "queue" # 或 "interrupt"(默认)
Queue 模式适合你提前准备后续消息,而不想意外打断当前工作。未知值会自动回退为 "interrupt"。
挂起到后台
在 Unix 系统上,按 Ctrl+Z 可将 Hermes 挂起到后台——就像普通终端进程一样。Shell 会显示确认信息:
Hermes Agent has been suspended. Run `fg` to bring Hermes Agent back.
在 shell 中输入 fg,即可从上次离开的地方继续 session。Windows 不支持该功能。
Tool Progress Display
CLI 会在 agent 工作时显示动态反馈:
Thinking animation(API 调用期间):
◜ (。•́︿•̀。) pondering... (1.2s)◠ (⊙_⊙) contemplating... (2.4s)✧٩(ˊᗜˋ*)و✧ got it! (3.1s)
Tool execution feed:
┊ 💻 terminal `ls -la` (0.3s)┊ 🔍 web_search (1.2s)┊ 📄 web_extract (2.1s)
使用 /verbose 可以在这些显示模式之间切换:off → new → all → verbose。这个命令也可以为消息平台启用——详见 configuration。
Tool Preview Length
display.tool_preview_length 配置项用于控制 tool call 预览行中最多显示多少字符(例如文件路径、terminal commands)。默认值为 0,表示不限制——会显示完整路径和命令。
# ~/.hermes/config.yamldisplay:tool_preview_length: 80 # 将 tool previews 截断为 80 个字符(0 = 不限制)
这在窄终端中,或 tool 参数包含非常长的文件路径时特别有用。
Session 管理
恢复 Sessions
当你退出一个 CLI session 时,系统会打印恢复命令:
Resume this session with:hermes --resume 20260225_143052_a1b2c3Session: 20260225_143052_a1b2c3Duration: 12m 34sMessages: 28 (5 user, 18 tool calls)
恢复方式:
hermes --continue # 恢复最近一次 CLI sessionhermes -c # 简写hermes -c "my project" # 恢复某个命名 session(同 lineage 中最新的一次)hermes --resume 20260225_143052_a1b2c3 # 通过 ID 恢复指定 sessionhermes --resume "refactoring auth" # 通过标题恢复hermes -r 20260225_143052_a1b2c3 # 简写
恢复后会从 SQLite 中还原完整对话历史。agent 能看到之前的所有消息、tool calls 和 responses —— 就像你从未离开过一样。
你可以在聊天中使用 /title My Session Name 为当前 session 命名,或者在命令行中使用 hermes sessions rename <id> <title> 重命名。使用 hermes sessions list 可浏览历史 sessions。
Session 存储
CLI sessions 存储在 Hermes 的 SQLite 状态数据库 ~/.hermes/state.db 中。数据库保存的内容包括:
- session 元数据(ID、title、timestamps、token counters)
- 消息历史
- 压缩 / 恢复 sessions 之间的 lineage
session_search使用的全文搜索索引
某些 messaging adapters 也会在数据库之外保存平台级 transcript 文件,但 CLI 本身的恢复依赖的是 SQLite session store。
Context Compression
长对话在接近 context limit 时会被自动摘要压缩:
# 在 ~/.hermes/config.yaml 中compression:enabled: truethreshold: 0.50 # 默认在达到 context limit 的 50% 时压缩summary_model: "google/gemini-3-flash-preview" # 用于摘要的 model
当压缩触发时,中间轮次会被摘要,而最前面的 3 轮和最后面的 4 轮始终会被保留。
Background Sessions
你可以在单独的后台 session 中运行一个 prompt,同时继续使用 CLI 做其他事情:
/background Analyze the logs in /var/log and summarize any errors from today
Hermes 会立即确认任务,并把输入权交还给你:
🔄 Background task #1 started: "Analyze the logs in /var/log and summarize..."Task ID: bg_143022_a1b2c3
工作方式
每个 /background prompt 都会在守护线程中启动一个完全独立的 agent session:
- 隔离的对话 —— 后台 agent 不知道你当前 session 的历史。它只接收你提供的 prompt。
- 相同配置 —— 后台 agent 会继承你当前 session 的 model、provider、toolsets、reasoning settings 和 fallback model。
- 非阻塞 —— 你的前台 session 仍保持完全可交互。你可以继续聊天、运行命令,甚至再启动更多后台任务。
- 支持多个任务 —— 你可以同时运行多个后台任务。每个任务都有单独编号。
结果
当后台任务完成后,结果会以一个面板形式显示在终端中:
╭─ ⚕ Hermes (background #1) ──────────────────────────────────╮│ Found 3 errors in syslog from today: ││ 1. OOM killer invoked at 03:22 — killed process nginx ││ 2. Disk I/O error on /dev/sda1 at 07:15 ││ 3. Failed SSH login attempts from 192.168.1.50 at 14:30 │╰──────────────────────────────────────────────────────────────╯
如果任务失败,你会看到错误通知。如果配置中启用了 display.bell_on_complete,任务完成时终端还会响铃提醒。
使用场景
- 长时间研究 ——
"/background research the latest developments in quantum error correction",同时你继续写代码 - 文件处理 ——
"/background analyze all Python files in this repo and list any security issues",同时继续对话 - 并行调查 —— 同时启动多个后台任务,从不同角度展开探索
Quiet Mode
默认情况下,CLI 运行在 quiet mode,这会:
- 抑制来自 tools 的冗长日志
- 启用 kawaii 风格的动态反馈
- 让输出更干净、更友好
若要查看 debug 输出:
hermes chat --verbose
