Skip to main content

CLI 界面

Hermes Agent 的 CLI 是一个完整的终端用户界面(TUI)—— 不是网页 UI。它支持多行编辑、斜杠命令自动补全、对话历史记录、中断并重定向,以及流式工具输出。专为长期在终端中工作的人设计。

运行 CLI

# Start an interactive session (default)
hermes

# Single query mode (non-interactive)
hermes chat -q "Hello"

# With a specific model
hermes chat --model "anthropic/claude-sonnet-4"

# With a specific provider
hermes chat --provider nous # Use Nous Portal
hermes chat --provider openrouter # Force OpenRouter

# With specific toolsets
hermes chat --toolsets "web,terminal,skills"

# Start with one or more skills preloaded
hermes -s hermes-agent-dev,github-auth
hermes chat -s github-pr-workflow -q "open a draft PR"

# Resume previous sessions
hermes --continue # Resume the most recent CLI session (-c)
hermes --resume <session_id> # Resume a specific session by ID (-r)

# Verbose mode (debug output)
hermes chat --verbose

# Isolated git worktree (for running multiple agents in parallel)
hermes -w # Interactive mode in worktree
hermes -w -q "Fix issue #123" # Single query in worktree

界面布局

Stylized preview of the Hermes CLI layout showing the banner, conversation area, and fixed input prompt.

Hermes CLI 的欢迎横幅、对话流和固定输入提示以稳定文档图示形式呈现,而非脆弱的文本艺术。

欢迎横幅会一目了然地显示你的模型、终端后端、工作目录、可用工具以及已安装的技能。

状态栏

一个持续可见的状态栏位于输入区域上方,实时更新:

 ⚕ claude-sonnet-4-20250514 │ 12.4K/200K │ [██████░░░░] 6% │ $0.06 │ 15m
元素说明
模型名称当前使用的模型(超过 26 个字符时将被截断)
Token 数量已使用上下文 token / 最大上下文窗口
上下文条带有颜色编码阈值的视觉填充指示器
成本预估会话成本(或 n/a 表示未知/零成本模型)
持续时间会话已运行时长

该状态栏会根据终端宽度自适应:≥76 列时显示完整布局,52–75 列时为紧凑模式,低于 52 列时仅保留模型名与持续时间。

上下文颜色编码:

颜色阈值含义
绿色< 50%仍有充足空间
黄色50–80%正在接近满载
橙色80–95%接近上限
红色≥ 95%即将溢出 — 考虑 /compress

使用 /usage 可获取详细分析,包括各分类成本(输入 vs 输出 token)。

会话恢复显示

当恢复之前的会话(hermes -chermes --resume <id>)时,会在横幅与输入提示之间出现“上一次对话”面板,展示对话历史的简洁摘要。详情请参见 会话 — 恢复时的对话摘要 及相关配置。

快捷键

快捷键动作
Enter发送消息
Alt+EnterCtrl+J新建一行(多行输入)
Alt+V在终端支持的情况下从剪贴板粘贴图片
Ctrl+V粘贴文本,并尽可能附加剪贴板中的图片
Ctrl+B启用语音模式时开始/停止录音(voice.record_key,默认:ctrl+b
Ctrl+C中断代理(双击 within 2 秒内强制退出)
Ctrl+D退出
Ctrl+Z将 Hermes 暂停至后台(仅限 Unix 系统)。在 shell 中运行 fg 以恢复。
Tab接受自动建议(幽灵文本)或补全斜杠命令

斜杠命令

输入 / 可查看自动补全下拉菜单。Hermes 支持大量 CLI 斜杠命令、动态技能命令及用户自定义快捷命令。

常见示例:

命令说明
/help显示命令帮助
/model查看或更改当前模型
/tools列出当前可用工具
/skills browse浏览技能中心及官方可选技能
/background <prompt>在独立后台会话中运行提示
/skin查看或切换当前 CLI 皮肤
/voice on启用 CLI 语音模式(按 Ctrl+B 开始录音)
/voice tts切换 Hermes 回复的语音播放功能
/reasoning high提高推理努力程度
/title My Session为当前会话命名

完整内置 CLI 与消息命令列表,请参见 斜杠命令参考

关于设置、提供者、静音调优,以及消息平台/Discord 语音使用,请参见 语音模式

tip

命令不区分大小写 — /HELP/help 效果相同。已安装的技能也会自动成为斜杠命令。

快捷命令

你可以定义自定义命令,直接执行 shell 命令而无需调用 LLM。这些命令在 CLI 和消息平台(Telegram、Discord 等)中均适用。

# ~/.hermes/config.yaml
quick_commands:
status:
type: exec
command: systemctl status hermes-agent
gpu:
type: exec
command: nvidia-smi --query-gpu=utilization.gpu,memory.used --format=csv,noheader

然后在任意聊天中输入 /status/gpu。更多示例请参见 配置指南

启动时预加载技能

如果你已知本次会话需要哪些技能处于激活状态,可在启动时指定:

hermes -s hermes-agent-dev,github-auth
hermes chat -s github-pr-workflow -s github-auth

Hermes 会在第一轮对话前将每个指定的技能加载到会话提示中。该标志在交互模式和单次查询模式下均有效。

技能斜杠命令

~/.hermes/skills/ 中安装的每个技能都会自动注册为斜杠命令。技能名称即为命令名:

/gif-search funny cats
/axolotl help me fine-tune Llama 3 on my dataset
/github-pr-workflow create a PR for the auth refactor

# Just the skill name loads it and lets the agent ask what you need:
/excalidraw

人格设定

设置预设人格以改变代理的语气:

/personality pirate
/personality kawaii
/personality concise

内置人格包括:helpfulconcisetechnicalcreativeteacherkawaiicatgirlpirateshakespearesurfernoiruwuphilosopherhype

你也可以在 ~/.hermes/config.yaml 中定义自定义人格:

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!

多行输入

有两种方式输入多行消息:

  1. Alt+EnterCtrl+J — 插入新行
  2. 反斜杠续行 — 以 \ 结尾,继续下一行:
❯ Write a function that:\
1. Takes a list of numbers\
2. Returns the sum
info

支持粘贴多行文本 — 使用 Alt+EnterCtrl+J 插入换行符,或直接粘贴内容即可。

中断代理

你可以在任何时候中断代理:

  • 在代理运行时输入新消息并按 Enter — 会中断当前操作并处理你的新指令
  • Ctrl+C — 中断当前操作(双击 within 2 秒内可强制退出)
  • 进行中的终端命令会被立即终止(先发送 SIGTERM,1 秒后若未结束则发送 SIGKILL)
  • 中断期间输入的多条消息会被合并为一条提示

忙碌输入模式

display.busy_input_mode 配置项控制你在代理工作时按 Enter 的行为:

模式行为
"interrupt"(默认)你的消息会中断当前操作并立即处理
"queue"你的消息会被静默排队,在代理完成后再作为下一轮发送
# ~/.hermes/config.yaml
display:
busy_input_mode: "queue" # or "interrupt" (default)

队列模式适用于你想准备后续消息而不至于意外取消正在进行的工作。未知值将回退至 "interrupt"

暂停至后台

在 Unix 系统上,按下 Ctrl+Z 可将 Hermes 暂停至后台 — 就像任何终端进程一样。shell 会打印确认信息:

Hermes Agent has been suspended. Run `fg` to bring Hermes Agent back.

在 shell 中输入 fg 可以从你离开的位置精确恢复会话。Windows 不支持此功能。

工具进度显示

CLI 会在代理工作时显示动画反馈:

思考动画(API 调用期间):

  ◜ (。•́︿•̀。) pondering... (1.2s)
◠ (⊙_⊙) contemplating... (2.4s)
✧٩(ˊᗜˋ*)و✧ got it! (3.1s)

工具执行流程:

  ┊ 💻 terminal `ls -la` (0.3s)
┊ 🔍 web_search (1.2s)
┊ 📄 web_extract (2.1s)

通过 /verbose 切换显示模式:off → new → all → verbose。该命令也可在消息平台启用 — 详见 配置

工具预览长度

display.tool_preview_length 配置项控制工具调用预览行中显示的最大字符数(例如文件路径、终端命令)。默认值为 0,表示无限制 — 完整路径和命令将全部显示。

# ~/.hermes/config.yaml
display:
tool_preview_length: 80 # Truncate tool previews to 80 chars (0 = no limit)

这在窄屏终端或工具参数包含超长文件路径时非常有用。

会话管理

恢复会话

退出 CLI 会话时,系统会打印出恢复命令:

Resume this session with:
hermes --resume 20260225_143052_a1b2c3

Session: 20260225_143052_a1b2c3
Duration: 12m 34s
Messages: 28 (5 user, 18 tool calls)

恢复选项:

hermes --continue                          # Resume the most recent CLI session
hermes -c # Short form
hermes -c "my project" # Resume a named session (latest in lineage)
hermes --resume 20260225_143052_a1b2c3 # Resume a specific session by ID
hermes --resume "refactoring auth" # Resume by title
hermes -r 20260225_143052_a1b2c3 # Short form

恢复将从 SQLite 恢复完整的对话历史。代理会看到所有之前的对话、工具调用和回复 — 就像你从未离开过一样。使用 /title My Session Name 在聊天中为当前会话命名,或通过命令行使用 hermes sessions rename <id> <title>。使用 hermes sessions list 浏览过往会话。

会话存储

CLI 会话存储在 Hermes 的 SQLite 状态数据库中,路径为 ~/.hermes/state.db。该数据库保存以下内容:

  • 会话元数据(ID、标题、时间戳、token 计数器)
  • 消息历史记录
  • 压缩/恢复会话之间的关联关系
  • session_search 使用的全文搜索索引

部分消息适配器还会在数据库之外保留各平台的对话文件,但 CLI 本身从 SQLite 会话存储中恢复。

上下文压缩

当对话接近上下文限制时,系统会自动对长对话进行摘要:

# In ~/.hermes/config.yaml
compression:
enabled: true
threshold: 0.50 # Compress at 50% of context limit by default
summary_model: "google/gemini-3-flash-preview" # Model used for summarization

触发压缩时,中间的对话轮次将被摘要,而最前的 3 轮和最后的 4 轮始终会被保留。

后台会话

在后台运行一个提示任务的同时,继续使用 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 提示都会在守护线程中启动一个完全独立的代理会话

  • 独立对话 —— 后台代理不会知晓你当前会话的历史记录。它仅接收你提供的提示。
  • 相同配置 —— 后台代理继承自当前会话的模型、提供商、工具集、推理设置以及回退模型。
  • 非阻塞 —— 你的前台会话保持完全可交互状态。你可以继续聊天、执行命令,甚至启动更多后台任务。
  • 多任务支持 —— 你可以同时运行多个后台任务,每个任务都会获得一个编号 ID。

结果

当后台任务完成时,结果将以终端面板形式呈现:

╭─ ⚕ 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”分析仓库中所有 Python 文件的安全问题
  • 并行调查 —— 启动多个后台任务,同时探索不同角度
info

后台会话不会出现在主对话历史中。它们是独立的会话,拥有自己的任务 ID(例如 bg_143022_a1b2c3)。

静音模式

默认情况下,CLI 以静音模式运行,具备以下特性:

  • 抑制工具的详细日志输出
  • 启用可爱的动画反馈效果
  • 保持输出简洁友好

如需调试输出:

hermes chat --verbose