跳到主要内容

TUI

TUI 是 Hermes 的现代前端,底层仍然使用与 Classic CLI 相同的 Python 运行时。相同的 agent、相同的会话、相同的斜杠命令,只是提供了一个更整洁、响应更快的交互界面。

这是交互式使用 Hermes 的推荐方式。

Launch

# 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

经典 CLI 仍然可用并且仍是默认界面。CLI Interface 中记录的所有内容,例如斜杠命令、快速命令、技能预加载、personality、多行输入和中断,在 TUI 中都能以相同方式工作。

Why the TUI

  • 首帧立即可见,应用还没加载完时横幅就会先显示出来,因此启动 Hermes 时终端不会像卡住一样。
  • 输入不会阻塞,会话尚未就绪时你也可以先输入并排队消息,agent 一上线就会立刻发送。
  • 更丰富的浮层界面,模型选择器、会话选择器、审批提示和澄清提示都会以模态面板形式渲染,而不是内联流程。
  • 实时会话面板,工具和技能会随着初始化过程逐步填充。
  • 更适合鼠标选择,拖动时使用统一的选区背景,而不是 SGR 反色效果;复制时直接使用终端本身的复制手势即可。
  • 备用屏渲染,差量更新意味着流式输出时没有闪烁,退出后也不会把滚动缓冲区弄得一团乱。
  • 更强的输入框能力,包括长粘贴内容的内联折叠、Cmd+V / Ctrl+V 文本粘贴并带剪贴板图片回退、bracketed paste 保护,以及图片/文件路径附件的规范化处理。

同样支持 skinspersonalities。你可以在会话中使用 /skin ares/personality pirate 中途切换,界面会实时重绘。有关所有可自定义键以及哪些键适用于经典 CLI 或 TUI,请参阅 Skins & Themes。TUI 支持横幅配色、UI 颜色、提示符字形与颜色、会话显示、补全菜单、选区背景、tool_prefixhelp_header

Requirements

  • Node.js >= 20,TUI 会作为 Python CLI 启动的子进程运行,hermes doctor 会检查这一点。
  • TTY,和经典 CLI 一样,如果通过管道传入 stdin,或在非交互环境中运行,就会回退到单次查询模式。

首次启动时,Hermes 会把 TUI 的 Node 依赖安装到 ui-tui/node_modules 中,这只会发生一次,通常只需几秒。之后再次启动会很快。如果你拉取了新版本 Hermes,而源码比构建产物更新,TUI bundle 会自动重建。

External prebuild

如果你的发行方式已经附带预构建 bundle(例如 Nix 或系统包),可以让 Hermes 直接使用它:

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

该目录必须包含 dist/entry.js 和最新的 node_modules

Keybindings

按键绑定与 Classic CLI 完全一致,只有以下行为差异:

  • 鼠标拖动 会以统一的选区背景高亮文本。
  • Cmd+V / Ctrl+V 会先尝试普通文本粘贴,其次回退到 OSC52 / 原生剪贴板读取,最后在剪贴板或粘贴载荷被识别为图片时附加图片。
  • /terminal-setup 会为本地 VS Code / Cursor / Windsurf 终端安装更好的绑定,让 macOS 上的 Cmd+Enter 和撤销/重做体验更一致。
  • 斜杠命令补全 会以带描述的浮动面板显示,而不是内联下拉框。

Slash commands

所有斜杠命令都无需更改即可使用。少数命令由 TUI 接管,会显示更丰富的输出,或以浮层形式呈现,而不是内联面板:

CommandTUI behavior
/help分类命令帮助浮层,可用方向键导航
/sessions模态会话选择器,可预览、查看标题、token 总数并直接恢复
/model按大模型提供商(provider)分组的模态模型选择器,并显示成本提示
/skin实时预览,浏览时就会应用主题变化
/details切换转录中工具调用详情的显示级别
/usage更丰富的 token / 成本 / 上下文信息面板

其他所有斜杠命令,包括已安装技能、快速命令和 personality 切换,在行为上都与经典 CLI 完全一致。详见 Slash Commands Reference

Status line

TUI 的状态行会实时显示 agent 状态:

StatusMeaning
starting agent…会话 ID 已建立,但工具和技能仍在初始化。你现在就可以输入,消息会排队并在就绪后发送。
readyagent 空闲并可接受输入。
thinking… / running…agent 正在推理或运行工具。
interrupted当前轮次已取消,按 Enter 可以重新发送。
forging session… / resuming…正在建立初始连接,或正在进行 --resume 握手。

各个 skin 的状态栏配色和阈值与经典 CLI 共享,定制方式请见 Skins

Configuration

TUI 会遵循所有标准 Hermes 配置,包括 ~/.hermes/config.yaml、profiles、personalities、skins、快速命令、凭据池、记忆插件、工具 / 技能启用状态等。它没有单独的 TUI 专用配置文件。

其中有少量配置键会专门影响 TUI 表现:

display:
skin: default # any built-in or custom skin
personality: helpful
details_mode: compact # or "verbose" — default tool-call detail level
mouse_tracking: true # disable if your terminal conflicts with mouse reporting

可以通过 /details on/details off/details cycle 在运行时切换。

Sessions

TUI 和经典 CLI 共用同一套会话,两者都会写入同一个 ~/.hermes/state.db。你可以在一个界面里开始会话,再在另一个界面里恢复。会话选择器会显示来自两种来源的会话,并带有来源标签。

关于生命周期、搜索、压缩和导出,请参见 Sessions

Reverting to the classic CLI

直接运行 hermes(不带 --tui)时,仍然会进入经典 CLI。如果你希望某台机器默认使用 TUI,可在 shell 配置文件中设置 HERMES_TUI=1;如果想切回去,把它取消设置即可。

如果 TUI 启动失败,例如没有 Node、缺少 bundle 或存在 TTY 问题,Hermes 会打印诊断信息并自动回退,而不是让你卡在原地。

See also