基于 Textual 的独立终端 UI,连接 Hermes Agent Gateway,提供三栏布局: 会话列表 | 分层聊天 + 输入 | 全局状态概览
需要在目标机器上已经安装好 Hermes Agent。TUI 依赖 Hermes 的 tui_gateway 模块作为后端通信。
# 使用 Hermes Agent 的 venv 安装 Textual
~/.hermes/hermes-agent/venv/bin/pip install textual验证:
~/.hermes/hermes-agent/venv/bin/python -c "import textual; print(textual.__version__)"能看到版本号(如 8.2.7)即成功。
# 方式 A:从 Git 克隆(推荐)
git clone <你的仓库地址> ~/hermes-tui
# 方式 B:手动拷贝整个 hermes-tui/ 目录到目标机器cat > /usr/local/bin/hermes-tui << 'SCRIPTEOF'
#!/bin/bash
exec ~/.hermes/hermes-agent/venv/bin/python3 ~/hermes-tui/main.py "$@"
SCRIPTEOF
chmod +x /usr/local/bin/hermes-tuihermes-tui或直接:
~/.hermes/hermes-agent/venv/bin/python3 ~/hermes-tui/main.py首次启动会自动 spawn Hermes gateway 子进程,等待 gateway.ready 事件后显示界面。
三栏布局示意:
- 左栏 (Col 1) --- 会话列表,支持方向盘上下选择 + Enter 切换
- 中栏 (Col 2) --- 三层聊天面板:层1系统提示词(折叠)、层2对话记录、层3当前步骤状态
- 右栏 (Col 3) --- 全局状态概览:模型名、Token用量、耗时、子代理数量、活动状态
- 切换会话(Col 1 选会话):自动加载聊天历史到 Col 2,更新模型/用量到 Col 3
- 发送消息(Col 2 输入):流式输出实时更新 Col 2 + Col 3,完成后再刷新 Col 1 列表
- 网关事件(thinking/reasoning/message 流):同步更新 Col 2 步骤指示 + Col 3 活动状态
| 按键 | 功能 |
|---|---|
| Ctrl+Q | 退出 |
| Ctrl+L | 切换左侧会话栏显隐 |
| Ctrl+R | 切换右侧全局视图显隐 |
| F5 | 刷新会话列表 |
| Esc | 聚焦到输入框 |
| 上/下 | 导航会话列表 |
| Enter | 选中会话 / 发送消息 |
~/hermes-tui/
main.py 应用入口 + CSS 主题
client.py Gateway 子进程管理 + JSON-RPC 2.0 通信
README.md 本文件
run.sh 启动脚本
screens/
__init__.py 包初始化
main_screen.py 三栏布局 + 事件路由 + 联动逻辑
session_sidebar.py 左侧:会话列表组件
chat_panel.py 中间:三层聊天面板
global_view.py 右侧:全局状态概览
.gitignore
使用 Hermes Agent 默认 Gold and Kawaii 配色方案:
- 背景底色: #1a1a2e (dark navy)
- 面板底色: #16162a
- 强调色: #FFD700 (gold)
- 副标色: #DAA520 (goldenrod)
- 文字色: #FFF8DC (cornsilk)
- 边框色: #CD7F32 (bronze)
- 弱化色: #8B8682 (gray-brown)
- 选中色: #333355 (dark purple)
TUI 与 Gateway 通过 stdin/stdout 以 JSON-RPC 2.0 通信:
START -> gateway.ready (event)
session.list -> Col 1 填充会话列表
session.most_recent -> 找回最近会话
session.activate -> Col 2 + Col 3 填充
session.history -> 加载历史消息
session.usage -> 加载用量数据
用户输入 -> prompt.submit -> 流式事件:
message.start -> Col 3 状态更新
thinking.delta -> Col 2 步骤: "Thinking..."
reasoning.delta -> Col 2 步骤: "Reasoning..."
message.delta -> 追加流式文字到 Col 2
message.complete -> 完成 + 刷新 Col 1 + Col 3
session.info -> 更新模型/用量到 Col 3
ModuleNotFoundError: No module named 'tui_gateway'
确保从 hermes-agent 目录运行,或设置 PYTHONPATH:
cd ~/.hermes/hermes-agent
PYTHONPATH=~/.hermes/hermes-agent python3 -m tui_gateway.entrytextual 未找到
~/.hermes/hermes-agent/venv/bin/pip install textualGateway 启动失败
日志文件:~/.hermes/logs/tui_gateway_crash.log
cat ~/.hermes/logs/tui_gateway_crash.log