跳到主要内容

CLI 界面

Hermes Agent 的 CLI 是一个完整的终端用户界面(TUI)——而非 Web UI。它支持多行编辑、斜杠命令自动补全、对话历史、中断并重定向,以及流式工具输出。专为热爱终端的用户打造。

提示

Hermes 还提供了一个带有模态浮层、鼠标选择和非阻塞输入的现代 TUI。通过 hermes --tui 启动——详见 TUI 指南。

运行 CLI

# 启动交互式会话(默认)
hermes

# 单次查询模式(非交互式)
hermes chat -q "Hello"

# 使用指定模型
hermes chat --model "anthropic/claude-sonnet-4"

# 使用指定提供商
hermes chat --provider nous # 使用 Nous Portal
hermes chat --provider openrouter # 强制使用 OpenRouter

# 使用指定工具集
hermes chat --toolsets "web,terminal,skills"

# 启动时预加载一个或多个技能
hermes -s hermes-agent-dev,github-auth
hermes chat -s github-pr-workflow -q "open a draft PR"

# 恢复之前的会话
hermes --continue # 恢复最近的 CLI 会话(-c)
hermes --resume <session_id> # 通过 ID 恢复指定会话(-r)

# 详细模式(调试输出)
hermes chat --verbose

# 隔离的 git 工作树(用于并行运行多个 Agent)
hermes -w # 在工作树中交互模式
hermes -w -q "Fix issue #123" # 在工作树中单次查询

界面布局

Hermes CLI 布局预览,展示横幅、对话区域和固定输入提示符。

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+G$EDITOR(vim/nvim/nano/VS Code 等)中打开当前输入缓冲区。保存并退出后,编辑后的文本将作为下一条提示词发送——适合长篇、多段落提示词。
Ctrl+X Ctrl+EEmacs 风格的外部编辑器备用绑定(与 Ctrl+G 行为相同)。
Ctrl+C中断 Agent(2 秒内双击可强制退出)
Ctrl+D退出
Ctrl+Z将 Hermes 挂起到后台(仅 Unix)。在 shell 中运行 fg 可恢复。
Tab接受自动补全建议(幽灵文字)或补全斜杠命令

多行粘贴预览。 粘贴多行内容时,CLI 会回显一行紧凑预览([pasted: 47 lines, 1,842 chars — press Enter to send]),而非将全部内容倾倒到滚动缓冲区。发送的内容仍是完整内容,这只是显示优化。

最终回复中的 Markdown 剥离。 CLI 会从 Agent 的最终回复中剥离最冗余的 Markdown 围栏和 **粗体** / *斜体* 包裹,使其以可读的终端文本呈现,而非原始源码。代码块和列表保留原样。这不影响网关平台或工具结果——它们保留 Markdown 以供原生渲染。

斜杠命令

输入 / 查看自动补全下拉菜单。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
restart:
type: alias
target: /gateway restart

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

启动时预加载技能

如果你已知道本次会话需要哪些技能,可以在启动时传入:

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

# 仅输入技能名称会加载技能,让 Agent 询问你的需求:
/excalidraw

个性设置

设置预定义个性以改变 Agent 的语气:

/personality pirate
/personality kawaii
/personality concise

内置个性包括:helpful(友善)、concise(简洁)、technical(技术向)、creative(创意)、teacher(教师)、kawaii(可爱)、catgirl(猫娘)、pirate(海盗)、shakespeare(莎士比亚)、surfer(冲浪者)、noir(黑色电影)、uwuphilosopher(哲学家)、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..."
# 添加你自己的!

多行输入

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

  1. Alt+EnterCtrl+J — 插入换行
  2. 反斜杠续行 — 行尾加 \ 继续输入:
❯ Write a function that:\
1. Takes a list of numbers\
2. Returns the sum
信息

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

中断 Agent

你可以随时中断 Agent:

  • 输入新消息 + Enter 在 Agent 工作时——会中断并处理你的新指令
  • Ctrl+C — 中断当前操作(2 秒内按两次可强制退出)
  • 正在执行的终端命令会立即终止(SIGTERM,1 秒后 SIGKILL)
  • 中断期间输入的多条消息会合并为一条提示词

忙碌输入模式

display.busy_input_mode 配置键控制在 Agent 工作时按下 Enter 的行为:

模式行为
"interrupt"(默认)你的消息会中断当前操作并立即处理
"queue"你的消息静默排队,等 Agent 完成当前轮次后再发送
"steer"你的消息通过 /steer 注入当前运行,在下一次工具调用后到达 Agent——不中断,不创建新轮次
# ~/.hermes/config.yaml
display:
busy_input_mode: "steer" # 或 "queue" 或 "interrupt"(默认)

"queue" 模式适合想提前准备后续消息、又不想意外取消进行中工作的场景。"steer" 模式适合想在任务执行中途重定向 Agent 而不中断的场景——例如在 Agent 编辑代码时说"另外,也检查一下测试"。未知值会退回到 "interrupt"

"steer" 有两个自动退回情况:若 Agent 尚未启动,或消息附带了图片,消息会退回到 "queue" 行为以防丢失。

也可以在 CLI 内切换:

/busy queue
/busy steer
/busy interrupt
/busy status
首次提示

第一次在 Hermes 工作时按下 Enter,Hermes 会打印一行提示说明 /busy 设置("(tip) Your message interrupted the current run…")。每次安装只触发一次——config.yamlonboarding.seen.busy_input_prompt 下有一个标记位。删除该键可再次看到提示。

挂起到后台

在 Unix 系统上,按 Ctrl+Z 可将 Hermes 挂起到后台——就像普通终端进程一样。shell 会打印确认信息:

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

在 shell 中输入 fg 即可从中断处恢复会话。Windows 不支持此功能。

工具进度显示

CLI 在 Agent 工作时显示动画反馈:

思考动画(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 # 将工具预览截断到 80 字符(0 = 不限制)

在窄终端或工具参数包含很长文件路径时很有用。

会话管理

恢复会话

退出 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 # 恢复最近的 CLI 会话
hermes -c # 简写形式
hermes -c "my project" # 按名称恢复会话(系列中最新的)
hermes --resume 20260225_143052_a1b2c3 # 通过 ID 恢复指定会话
hermes --resume "refactoring auth" # 通过标题恢复
hermes -r 20260225_143052_a1b2c3 # 简写形式

恢复会从 SQLite 还原完整对话历史。Agent 能看到所有之前的消息、工具调用和回复——就像从未离开一样。

在聊天中使用 /title My Session Name 为当前会话命名,或从命令行使用 hermes sessions rename <id> <title>。使用 hermes sessions list 浏览历史会话。

会话存储

CLI 会话存储在 ~/.hermes/state.db 下的 Hermes SQLite 状态数据库中。数据库保存:

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

部分消息适配器还会在数据库旁边保留平台专属的转录文件,但 CLI 本身从 SQLite 会话存储中恢复。

上下文压缩

接近上下文限制时,长对话会自动摘要:

# 在 ~/.hermes/config.yaml 中
compression:
enabled: true
threshold: 0.50 # 默认在上下文限制的 50% 时压缩

# 摘要模型在 auxiliary 下配置:
auxiliary:
compression:
model: "google/gemini-3-flash-preview" # 用于摘要的模型

压缩触发时,中间轮次会被摘要,同时始终保留前 3 轮和最后 20 轮。

后台会话

在独立的后台会话中运行提示词,同时继续使用 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 提示词会在守护线程中生成一个完全独立的 Agent 会话

  • 隔离对话——后台 Agent 不了解当前会话的历史。它只接收你提供的提示词。
  • 相同配置——后台 Agent 继承当前会话的模型、提供商、工具集、推理设置和备用模型。
  • 非阻塞——前台会话保持完全交互。你可以聊天、运行命令,甚至启动更多后台任务。
  • 多任务——可同时运行多个后台任务,每个都有编号 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" 在你继续对话时运行
  • 并行调查——同时启动多个后台任务,从不同角度探索问题
信息

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

安静模式

默认情况下,CLI 以安静模式运行,其效果是:

  • 抑制工具的详细日志
  • 启用 kawaii 风格的动画反馈
  • 保持输出简洁友好

如需调试输出:

hermes chat --verbose