Translates the full English docs corpus (335 files) into Simplified Chinese under website/i18n/zh-Hans/. Combined with PR #31895 (cross- locale link fix), the 简体中文 locale toggle now serves a complete Chinese site with working cross-page navigation. Pipeline: - Claude Sonnet 4.6 via OpenRouter, 8-way concurrent - Preserves frontmatter keys, code blocks, MDX/JSX, link URLs, brand names, and technical jargon (prompt/token/hook/MCP/ACP/etc.) - Translates only frontmatter title/description and prose - Two largest files (configuration.md 93KB, research-paper-writing.md 107KB) retried with 64K max_tokens after initial fence-drift - 3 manual post-fixes for MDX edge cases the model didn't escape: < in optional-skills-catalog table, double-quotes in an alt= tag, and a bare URL adjacent to a full-width period Cost: ~$30 total (Sonnet 4.6 input $3/M + output $15/M). Verified `npm run build` succeeds for both en and zh-Hans locales, no double-prefixed /docs/zh-Hans/docs/ URLs in rendered output, all in-page navigation resolves correctly. Translations are machine-generated and may need human review on specific pages — but they're an enormous improvement over the previous state (3 zh-Hans pages out of 335).
15 KiB
| sidebar_position | title | description |
|---|---|---|
| 2 | TUI | 启动 Hermes 的现代终端 UI——支持鼠标操作、丰富的浮层面板和非阻塞输入。 |
TUI
TUI 是 Hermes 的现代前端——一个终端 UI(用户界面),与 Classic CLI 共享同一 Python 运行时。相同的 agent、相同的会话、相同的斜杠命令;交互界面更简洁、响应更流畅。
这是以交互方式运行 Hermes 的推荐方式。
启动
# 启动 TUI
hermes --tui
# 恢复最近的 TUI 会话(若无则回退到最近的 classic 会话)
hermes --tui -c
hermes --tui --continue
# 通过 ID 或标题恢复指定会话
hermes --tui -r 20260409_000000_aa11bb
hermes --tui --resume "my t0p session"
# 直接运行源码——跳过预构建步骤(供 TUI 贡献者使用)
hermes --tui --dev
也可以通过环境变量启用:
export HERMES_TUI=1
hermes # 现在使用 TUI
hermes chat # 同上
Classic CLI 仍作为默认方式保留。CLI 界面中记录的所有内容——斜杠命令、快捷命令、skill 预加载、personality、多行输入、中断——在 TUI 中均完全一致。
为什么选择 TUI
- 即时首帧 — banner 在应用加载完成前就已渲染,因此 Hermes 启动时终端不会出现卡顿感。
- 非阻塞输入 — 会话就绪前即可输入并排队消息。agent 上线后立即发送第一条 prompt(提示词)。
- 丰富的浮层面板 — 模型选择器、会话选择器、审批和澄清提示均以模态面板形式渲染,而非内联流程。
- 实时会话面板 — 工具和 skill 在初始化过程中逐步填充。
- 鼠标友好的选择 — 拖拽高亮时使用统一背景色,而非 SGR 反色。使用终端的常规复制手势即可复制。
- 备用屏幕渲染 — 差量更新意味着流式传输时无闪烁,退出后无滚动历史残留。
- 编辑器增强 — 长片段的内联折叠粘贴、
Cmd+V/Ctrl+V文本粘贴(带剪贴板图片回退)、括号粘贴安全保护,以及图片/文件路径附件规范化。
同样的 skins 和 personalities 均适用。会话中途使用 /skin ares、/personality pirate 切换,UI 实时重绘。完整的可定制键列表及其对 classic 与 TUI 的适用范围,请参阅 Skins & Themes——TUI 支持 banner 调色板、UI 颜色、prompt 字形/颜色、会话显示、补全菜单、选区背景色、tool_prefix 和 help_header。
可折叠的 banner 区块
TUI 启动 banner 将运行时信息分为四个可折叠区块,每个区块标题旁渲染 ▸ / ▾ 折叠箭头:
| 区块 | 默认状态 |
|---|---|
| Tools | 展开 |
| Skills | 折叠 |
| System Prompt | 折叠 |
| MCP Servers | 折叠 |
点击区块标题(或其折叠箭头)的任意位置即可切换展开/折叠状态。Tools 列表默认展开,因为它是会话开始时最常查看的区块;Skills、System Prompt 和 MCP Servers 默认折叠,即使安装了大量 skill 或接入了多个 MCP server,banner 也能保持紧凑。状态仅对当前 banner 实例有效,下次启动将重置为默认值。
环境要求
- Node.js ≥ 20 — TUI 作为从 Python CLI 启动的子进程运行。
hermes doctor会验证此项。 - TTY — 与 classic CLI 一样,通过管道传入 stdin 或在非交互式环境中运行时,将回退到单次查询模式。
首次启动时,Hermes 会将 TUI 的 Node 依赖安装到 ui-tui/node_modules(一次性操作,耗时数秒)。后续启动速度很快。拉取新版 Hermes 后,若源文件比 dist 更新,TUI bundle 将自动重新构建。
外部预构建
发行版若附带预构建 bundle(如 Nix、系统包),可将 Hermes 指向该 bundle:
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— 当排队消息被高亮(在 agent 仍在运行时发送的消息)时,从队列中删除该消息。Esc取消编辑并取消高亮,但不删除。Ctrl+G/Ctrl+X Ctrl+E— 在$EDITOR中打开当前输入缓冲区,用于多行/长 prompt 编写;保存并退出后,内容将作为 prompt 发送回来。
斜杠命令
所有斜杠命令均可正常使用。部分命令由 TUI 独有——它们会产生更丰富的输出或以浮层而非内联面板形式渲染:
| 命令 | TUI 行为 |
|---|---|
/help |
带分类命令的浮层,可用方向键导航 |
/sessions |
模态会话选择器——预览、标题、token 总量、内联恢复 |
/model |
按提供商分组的模态模型选择器,带费用提示 |
/skin |
实时预览——浏览时主题变更即时生效 |
/details |
切换详细工具调用详情(全局或按区块) |
/usage |
丰富的 token / 费用 / 上下文面板 |
/agents(别名 /tasks) |
可观测性浮层——带终止/暂停控制的实时子 agent 树、按分支的费用/token/文件汇总、逐轮历史记录 |
/reload |
将 ~/.hermes/.env 重新读入运行中的 TUI 进程,使新添加的 API 密钥无需重启即可生效 |
/mouse [on|off|toggle|wheel|buttons|all] |
在运行时选择鼠标跟踪预设(同时持久化到 config.yaml 的 display.mouse_tracking)。wheel(1000+1006)保留滚轮滚动而不产生悬停事件,避免在 tmux 中向 prompt 行发送"No image in clipboard"垃圾信息;buttons 添加 1002 以支持终端侧拖拽选择;all 是带悬停 UI 的默认值。 |
其他所有斜杠命令(包括已安装的 skill、快捷命令和 personality 切换)与 classic CLI 完全一致。请参阅斜杠命令参考。
LaTeX 数学渲染
TUI 的 Markdown 渲染管线支持内联 LaTeX 数学:$E = mc^2$ 和 $$\frac{a}{b}$$ 渲染为 Unicode 格式的数学表达式,而非原始 TeX 源码。支持内联和块级数学;不支持的语法将回退为显示包裹在代码 span 中的原始 TeX,以保持可复制性。
此功能始终开启,无需配置。Classic CLI 保留原始 TeX。
浅色终端检测
TUI 自动检测浅色终端并相应切换到浅色主题。检测分三层进行:
HERMES_TUI_THEME环境变量——最高优先级。可选值:light、dark,或原始 6 位背景十六进制色值(如ffffff、1a1a2e)。COLORFGBG环境变量——xterm 衍生终端使用的经典"背景色查询"提示。- 通过 OSC 11 探测终端背景——适用于不设置
COLORFGBG的现代终端(Ghostty、Warp、iTerm2、WezTerm、Kitty)。
若要无论终端如何都永久使用浅色主题:
export HERMES_TUI_THEME=light
忙碌指示器样式
状态栏忙碌指示器可插拔——默认在 agent 工作期间每 2.5 秒轮换一次 Hermes 的 kawaii 表情调色板。通过配置或 /indicator 斜杠命令选择不同样式:
display:
tui_status_indicator: kaomoji # kaomoji | emoji | unicode | ascii
或在会话中:/indicator emoji(等)。各样式附带匹配的字形宽度,轮换时状态栏其余部分不会抖动。
自动恢复
默认情况下,hermes --tui 每次启动都会开启新会话。若要自动重新连接到最近的 TUI 会话(在终端或 SSH 连接意外断开时很有用),可选择启用:
export HERMES_TUI_RESUME=1 # 最近的 TUI 会话
# 或:
export HERMES_TUI_RESUME=<session-id> # 指定会话
取消设置该变量,或在每次启动时显式传入 --resume <id> 以覆盖。
状态栏
TUI 的状态栏实时跟踪 agent 状态:
| 状态 | 含义 |
|---|---|
starting agent… |
会话 ID 已激活;工具和 skill 仍在上线中。可以输入——消息将排队,就绪后发送。 |
ready |
Agent 空闲,等待输入。 |
thinking… / running… |
Agent 正在推理或运行工具。 |
interrupted |
当前轮次已取消;按 Enter 重新发送。 |
forging session… / resuming… |
初始连接或 --resume 握手中。 |
各 skin 的状态栏颜色和阈值与 classic CLI 共享——请参阅 Skins 了解自定义方式。
状态栏还显示:
- 工作目录及 git 分支 —
~/projects/hermes-agent (docs/two-week-gap-sweep)。在旁边的终端执行git checkout时,分支后缀会更新(mtime 缓存),TUI 反映的是实际活跃分支,而非启动时的分支。 - 每条 prompt 的耗时 — 轮次运行时显示
⏱ 12s/3m 45s(实时),轮次完成后冻结为⏲ 32s / 3m 45s。第一个数字是自上次用户消息以来的时间;第二个是会话总时长。每次新 prompt 时重置。 🗜️ N— 当前会话被自动压缩的次数。首次压缩触发后显示。▶ N— 当前会话中正在运行的/background任务数量。至少有一个任务在执行时显示。⚠ YOLO— 每当 YOLO 模式开启时(hermes --yolo、/yolo或HERMES_YOLO_MODE=1)显示的可见警告。同一徽章也出现在启动 banner 中,确保你不会在未注意到的情况下启动自动审批会话。
配置
TUI 遵循所有标准 Hermes 配置:~/.hermes/config.yaml、profile、personality、skin、快捷命令、凭证池、内存提供商、工具/skill 启用状态。不存在 TUI 专属配置文件。
少数键专门用于调整 TUI 界面:
display:
skin: default # 任意内置或自定义 skin
personality: helpful
details_mode: collapsed # hidden | collapsed | expanded — 全局折叠面板默认值
sections: # 可选:按区块覆盖(任意子集)
thinking: expanded # 始终展开
tools: expanded # 始终展开
activity: collapsed # 重新启用 activity 面板(默认隐藏)
mouse_tracking: all # off | wheel | buttons | all(或 true/false 以向后兼容)
# wheel — 1000+1006(滚轮+点击;无拖拽,无悬停——
# 在 tmux 内推荐使用,可消除悬停事件导致的
# prompt 行"No image in clipboard"垃圾信息)
# buttons — 添加 1002 以支持终端侧拖拽选择
# all — 添加 1003 以支持悬停(滚动条悬停翻页、
# 链接 mouseenter 等)
运行时切换:
/details [hidden|collapsed|expanded|cycle]— 设置全局模式/details <section> [hidden|collapsed|expanded|reset]— 覆盖单个区块 (区块:thinking、tools、subagents、activity)
默认可见性
TUI 附带有主见的按区块默认值,将轮次以实时转录形式流式展示,而非一堆折叠箭头:
thinking— 展开。推理过程随模型输出内联流式显示。tools— 展开。工具调用及其结果以展开状态渲染。subagents— 沿用全局details_mode(默认折叠在箭头下——在实际发生委托之前保持安静)。activity— 隐藏。环境元信息(gateway 提示、终端一致性提醒、后台通知)对日常使用来说是噪音。工具失败仍会在失败的工具行内联渲染;当所有面板均隐藏时,环境错误/警告通过浮动警告兜底显示。
按区块覆盖优先于区块默认值和全局 details_mode。调整布局的方式:
display.sections.thinking: collapsed— 将 thinking 折叠到箭头下display.sections.tools: collapsed— 将工具调用折叠到箭头下display.sections.activity: collapsed— 重新启用 activity 面板- 运行时使用
/details <section> <mode>
在 display.sections 中显式设置的内容优先于默认值,因此现有配置保持不变。
会话
会话在 TUI 和 classic CLI 之间共享——两者均写入同一个 ~/.hermes/state.db。可以在一个界面开始会话,在另一个界面恢复。会话选择器显示来自两个来源的会话,并带有来源标签。
会话生命周期、搜索、压缩和导出,请参阅会话。
连接到运行中的 gateway
默认情况下,TUI 会在进程内启动自己的 gateway,因此每个 TUI 实例是自包含的。如果你已有一个长期运行的 gateway(例如在 tmux 中运行 hermes gateway run,或 systemd / launchd 服务),可以将 TUI 指向该 gateway——TUI 将成为一个瘦客户端,与连接到同一 gateway 的所有其他界面(消息平台、Web 仪表板、其他 TUI 会话)共享状态。
启动前通过环境变量设置 websocket URL:
export HERMES_TUI_GATEWAY_URL="ws://localhost:8765/api/ws?token=<auth-token>"
hermes --tui
token 来自 gateway 的 API 认证配置(参见 API Server)。设置该环境变量后,TUI 将:
- 完全跳过启动本地 gateway——无重复平台适配器,无端口冲突。
- 通过 websocket 将所有操作(斜杠命令、图片附件、浏览器进度、语音事件等)路由到共享 gateway。
- 在请求之间 gateway URL 轮换(新 token)时自动重连。
这与 Web 仪表板内嵌 TUI 使用的是同一通道(参见 Web Dashboard)——一个 gateway,多个客户端。
回退到 Classic CLI
不带 --tui 启动 hermes 将继续使用 classic CLI。若要让某台机器默认使用 TUI,在 shell profile 中设置 HERMES_TUI=1。若要回退,取消设置即可。
如果 TUI 启动失败(无 Node、缺少 bundle、TTY 问题),Hermes 会打印诊断信息并回退——而不是让你陷入困境。
另请参阅
- CLI 界面 — 完整的斜杠命令和快捷键参考(共享)
- 会话 — 恢复、分支和历史记录
- Skins & Themes — 自定义 banner、状态栏和浮层主题
- 语音模式 — 在两种界面中均可使用
- 配置 — 所有配置键