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
界面布局
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 可获取详细分解,包括按类别划分的成本(输入与输出 Token)。
会话恢复显示
当恢复之前的会话时(hermes -c 或 hermes --resume <id>),在标题栏和输入提示之间会出现一个“上一次对话”面板,显示对话历史的紧凑摘要。详情及配置请参见 会话 —— 恢复时的对话摘要。
快捷键
| 键 | 动作 |
|---|---|
Enter | 发送消息 |
Alt+Enter 或 Ctrl+J | 新增一行(多行输入) |
Alt+V | 在终端支持的情况下,从剪贴板粘贴图像 |
Ctrl+V | 粘贴文本,并在可能时附上剪贴板中的图像 |
Ctrl+B | 在启用语音模式时,开始/停止语音录制(voice.record_key,默认为 ctrl+b) |
Ctrl+C | 中断代理(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 语音使用,请参见 语音模式。
命令不区分大小写——/HELP 与 /help 效果相同。已安装的技能也会自动成为斜杠命令。
快捷命令
你可以定义自定义命令,这些命令无需调用 LLM 即可立即运行 shell 命令。这些命令在 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
内置个性包括:helpful、concise、technical、creative、teacher、kawaii、catgirl、pirate、shakespeare、surfer、noir、uwu、philosopher、hype。
你也可以在 ~/.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!
多行输入
有两种方式输入多行消息:
Alt+Enter或Ctrl+J— 插入换行符- 反斜杠续行 — 以
\结尾表示继续下一行:
❯ Write a function that:\
1. Takes a list of numbers\
2. Returns the sum
支持粘贴多行文本 —— 使用 Alt+Enter 或 Ctrl+J 插入换行,或直接粘贴内容即可。
中断代理
您可以在任何时候中断代理:
- 在代理工作时 输入新消息 + Enter —— 会中断当前操作并立即处理您的新指令
Ctrl+C—— 中断当前操作(在 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、标题、时间戳、令牌计数器)
- 消息历史
- 压缩/恢复会话之间的关联关系
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 文件并列出潜在安全问题
- 并行调查 — 启动多个后台任务,同时从不同角度进行探索
后台会话不会出现在您的主对话历史中。它们是独立的会话,拥有自己的任务 ID(例如 bg_143022_a1b2c3)。
静音模式
默认情况下,CLI 以静音模式运行,该模式具备以下特性:
- 抑制工具的详细日志输出
- 启用可爱的动画反馈效果
- 保持输出简洁且用户友好
如需调试输出:
hermes chat --verbose