Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help


TUI

TUI 是 Hermes 的现代化前端界面——它是一种终端用户界面,与 经典 CLI 使用相同的 Python 运行时。同样的智能体、相同的会话、相同的斜杠命令;仅为与它们交互提供了更简洁、响应更迅速的体验。

这是交互式运行 Hermes 的推荐方式。

启动

# Launch the TUI
hermes --tui

# Resume the latest TUI session (falls back to the latest classic session)
hermes --tui -c
hermes --tui --continue

# Resume a specific session by ID or title
hermes --tui -r 20260409_000000_aa11bb
hermes --tui --resume "my t0p session"

# Run source directly — skips the prebuild step (for TUI contributors)
hermes --tui --dev

您也可以通过环境变量来启用它:

export HERMES_TUI=1
hermes          # now uses the TUI
hermes chat     # same

或者将其设置为 ~/.hermes/config.yaml 中的永久默认值:

display:
  interface: tui   # "cli" (default) or "tui"

当设置 display.interface: tui 后,纯版的 hermes(以及 hermes chat)将会启动 TUI 模式。显式的命令参数始终具有优先级——若希望单次调用时切换回传统的 REPL 模式,可运行 hermes --cli;而当配置默认值为 cli 时,若想强制使用 TUI,则可使用 hermes --tuiHERMES_TUI=1

传统 CLI 仍是预装的默认模式。所有在 CLI 接口文档 中提及的功能——斜杠命令、快捷命令、技能预加载、角色设定、多行输入、中断处理等——在 TUI 模式下都能以完全相同的方式正常工作。

为何选择 TUI 模式

  • 即时显示首屏:应用尚未完全加载完毕,标题栏就已呈现,因此 Hermes 启动时终端不会出现卡顿现象。
  • 非阻塞输入:可在会话准备就绪之前输入并排队发送消息。代理上线后,您的第一个提示符就会立即显示。
  • 丰富的叠加界面:模型选择器、会话选择器以及确认和澄清提示等元素均以模态面板的形式呈现,而非内联流程。
  • 实时会话面板:各类工具和技能会在初始化过程中逐步显示出来。
  • 便于鼠标操作的选择功能:可通过拖动高亮选中内容,背景颜色统一,无需依赖 SGR 反向显示效果;复制操作可使用终端常规的复制手势完成。
  • 多屏幕渲染支持:差异更新机制确保流式传输时无闪烁现象,退出后也不会留下滚动历史记录的杂乱内容。
  • 强大的文本编辑功能:支持长文本片段的内联折叠、Cmd+V / Ctrl+V 的文本粘贴(同时支持剪贴板中的图片作为替代)、括号包裹式粘贴保护,以及图像/文件路径的标准化附加。

原有的 皮肤样式角色设定 功能同样适用。您可以在会话进行中通过 /skin ares/personality pirate 等命令切换样式,界面会实时重新渲染。有关所有可自定义参数的完整列表,以及哪些参数适用于传统 CLI 模式、哪些适用于 TUI 模式,请参阅 皮肤与主题——TUI 模式会继承标题栏配色、界面颜色、提示符符号/颜色、会话显示内容、补全菜单、选中区域背景、tool_prefix 以及 help_header 等设置。

可折叠的标题栏区域

TUI 启动时的标题栏会将运行时信息分为四个可折叠的区域,每个区域标题旁都有一个 / 的箭头图标:

区域默认状态
工具展开
技能折叠
系统提示符折叠
MCP 服务器折叠

点击任意区域标题(或其箭头图标)即可切换该区域的显示状态。工具列表默认处于展开状态,因为它是会话启动时最常被查看的区域;而技能、系统提示符和 MCP 服务器默认为折叠状态,这样即便您安装了数十种技能或配置了众多 MCP 服务器,标题栏依然保持简洁。这些状态仅作用于当前标题栏实例,因此下次启动时将会恢复为默认设置。

系统要求

  • Node.js ≥ 20——TUI 是作为从 Python CLI 启动的子进程运行的。可使用 hermes doctor 命令验证该环境是否满足要求。
  • TTY 接口——与传统 CLI 一样,若通过标准输入管道传输数据或运行在非交互式环境中,系统将自动切换为单次查询模式。

首次启动时,Hermes 会将 TUI 所需的 Node 依赖项安装到 ui-tui/node_modules 目录中(仅需执行一次,耗时几秒)。后续启动速度会更快。如果您升级了 Hermes 版本,只要源代码比已发布的二进制文件更新,TUI 组件就会自动重新构建。

外部预编译版本

那些预先打包好了 TUI 组件的发行版(如 Nix 包、系统包),可以让 Hermes 直接加载这些预编译版本:

export HERMES_TUI_DIR=/path/to/prebuilt/ui-tui
hermes --tui

该目录中必须包含 dist/entry.js 文件。

键绑定

键绑定与 Classic CLI 完全一致。唯一的差异在于操作行为:

  • 鼠标拖动 时会以统一的选中背景高亮显示文本。
  • Cmd+V / Ctrl+V 首先尝试常规文本粘贴,若失败则尝试从 OSC52 或系统剪贴板读取内容;当剪贴板或粘贴的内容为图片时,最终会以图片形式附加。
  • /terminal-setup 会安装适用于本地 VS Code、Cursor 和 Windsurf 终端的键绑定,从而在 macOS 上实现更完善的 Cmd+Enter 操作以及撤销/重做功能。
  • 斜杠命令自动补全 会以带有说明的浮动面板形式显示,而非内联下拉菜单。
  • Ctrl+X 会打开实时会话切换器。当有排队消息被高亮显示(即在智能体仍在运行时发送的消息)时,该命令仍会删除该排队消息。Esc 则会取消编辑操作,取消高亮显示但不会删除内容。
  • Ctrl+G / Ctrl+X Ctrl+E — 会在 $EDITOR 中打开当前输入缓冲区,便于编写多行或较长的提示语;保存并退出后,这些内容会作为新的提示语发送出去。

斜杠命令

所有斜杠命令均保持原有功能不变。其中部分命令由 TUI 管理——它们会生成更丰富的输出,或以覆盖层而非内联面板的形式呈现:

命令TUI 行为
/help以分类形式的覆盖层显示命令列表,可使用方向键导航
/sessions(别名 /switch实时会话切换器——列出所有正在运行的 TUI 会话,可在其间切换、关闭会话或启动新会话
/model按提供方分类的模态模型选择器,同时显示成本提示
/skin实时预览功能——在浏览主题时即可立即应用更改
/details切换是否显示详细的工具调用信息(可全局或针对特定部分显示)
/usage显示丰富的令牌、成本及上下文信息面板
/agents(别名 /tasks可视化监控覆盖层——展示实时的子智能体树结构,提供终止/暂停控制功能,以及各分支的成本、令牌和文件使用统计,还会记录逐步执行历史
/reload重新读取 ~/.hermes/.env 文件并将其内容注入正在运行的 TUI 进程,这样新增的 API 密钥无需重启即可生效
/mouse [on|off|toggle|wheel|buttons|all]允许在运行时选择鼠标跟踪预设(该设置也会保存到 config.yaml 文件中的 display.mouse_tracking 选项中)。wheel(1000+1006)模式可保持滚轮滚动功能,同时避免因悬停事件导致 tmux 在提示行上方频繁显示“剪贴板中没有图片”的提示;buttons 模式则支持拖动选择功能;默认值为 all,即采用基于悬停的 UI 方式。

其余所有斜杠命令(包括已安装的技能、快捷命令以及个性设置切换功能)的运行方式都与 Classic CLI 完全相同。详情请参阅 斜杠命令参考文档

实时会话切换器

当您希望使用一个终端作为多个 TUI 会话的调度器时,可使用实时会话切换器。它仅列出当前在该 TUI 进程中正在运行的会话;已关闭的会话仍会被保存为记录,可通过 /resume 命令或 hermes --tui --resume <id-or-title> 重新打开。

您可以通过以下任意方式打开该切换器:

  • 在 TUI 中按下 Ctrl+X
  • 输入 /sessions/switch
  • 输入 /sessions new 立即创建一个新的实时会话。
  • 点击状态行中的 “N 个实时会话” 显示数字。
Hermes TUI Session Orchestrator with one live session and a +new row