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 保护,以及图片/文件路径附件的规范化处理。
同样支持 skins 和 personalities。你可以在会话中使用 /skin ares、/personality pirate 中途切换,界面会实时重绘。有关所有可自定义键以及哪些键适用于经典 CLI 或 TUI,请参阅 Skins & Themes。TUI 支持横幅配色、UI 颜色、提示符字形与颜色、会话显示、补全菜单、选区背景、tool_prefix 和 help_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 接管,会显示更丰富的输出,或以浮层形式呈现,而不是内联面板:
| Command | TUI behavior |
|---|---|
/help | 分类命令帮助浮层,可用方向键导航 |
/sessions | 模态会话选择器,可预览、查看标题、token 总数并直接恢复 |
/model | 按大模型提供商(provider)分组的模态模型选择器,并显示成本提示 |
/skin | 实时预览,浏览时就会应用主题变化 |
/details | 切换转录中工具调用详情的显示级别 |
/usage | 更丰富的 token / 成本 / 上下文信息面板 |
其他所有斜杠命令,包括已安装技能、快速命令和 personality 切换,在行为上都与经典 CLI 完全一致。详见 Slash Commands Reference。
Status line
TUI 的状态行会实时显示 agent 状态:
| Status | Meaning |
|---|---|
starting agent… | 会话 ID 已建立,但工具和技能仍在初始化。你现在就可以输入,消息会排队并在就绪后发送。 |
ready | agent 空闲并可接受输入。 |
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
- CLI Interface - 完整的斜杠命令与按键绑定参考(两者共用)
- Sessions - 恢复、分支和历史记录
- Skins & Themes - 自定义横幅、状态栏和浮层界面
- Voice Mode - 两种界面都支持
- Configuration - 全部配置项