CLI / TUI / Web
源码版本v2026.7.20
职责
界面层是用户触达 agent 的另一组入口(除网关消息平台外):CLI(hermes_cli/,命令行子命令体系)、TUI(ui-tui/,TypeScript 终端 UI + tui_gateway/ Python 桥)、Web(web/,浏览器界面)。三者都最终把用户输入送进 agent 的 run_conversation,把输出渲染回来。它们和网关层是并列关系——网关接外部平台,界面层接本地用户。
关键文件
CLI
hermes_cli/__init__.py— 包入口_parser.py— 命令行参数解析auth.py/auth_commands.py— 认证(Nous Portal 等)active_sessions.py— 活跃会话管理backup.py/checkpoints.py— 备份与检查点blueprint_cmd.py— 蓝图命令browser_connect.py/bundles.py/callbacks.pybanner.py/build_info.py— 横幅与构建信息
TUI
ui-tui/README— 终端 UI(TypeScript,含 packages/src)ui-tui/package.json— 依赖与脚本tui_gateway/entry.py— TUI 网关入口server.py— TUI 服务端transport.py/ws.py— 传输与 WebSocketevent_publisher.py— 事件发布host_supervisor.py/compute_host.py— 宿主监管slash_worker.py/synthetic_turn.py/render.py/project_tree.py_stdin_recovery.py— stdin 恢复
Web
web/README— 浏览器界面web/index.html/vite.config.ts— Vite 入口web/src/— 前端源码
数据流
- CLI:
hermes <subcommand>→hermes_cli/_parser.py解析 → 子命令模块(auth/backup/blueprint/...)执行;对话类命令最终调AIAgent.run_conversation:6350。 - TUI:
ui-tui/(TS 前端)经 WebSocket 连tui_gateway/ws.py,tui_gateway把终端事件桥到 agent(tui_gateway/server.py持有 agent),输出经tui_gateway/event_publisher.py推回前端。 - Web:
web/(Vite 前端)同样经后端连 agent,渲染对话与工具结果。 - 三者的 agent 实例都经
init_agent:276装配,共享同一套能力层。
小结
界面层 = 三种壳(CLI/TUI/Web)+ 一个 tui_gateway 桥。它们不持业务,只负责输入输出形态。与网关层并列:网关接外部消息平台,界面层接本地终端/浏览器。ACP(见此)则接 IDE,构成完整的「触达面」。