本节摘要:全书最后一节,先补齐「脸面」。UI 三件套:其一
cli.py(21663 行)——prompt_toolkit + rich 构筑的主交互 UI,hermes chat的默认体验,斜杠命令、审批对话、/moa、/review 全在此;其二ui-tui/——React + Ink 的 TypeScript TUI(hermes --tui),TypeScript 只管屏幕,Python 经tui_gateway/的 stdio JSON-RPC 管会话、工具与模型;其三apps/desktop/——Electron + React 桌面版,外加web/的 React Dashboard(hermes dashboard,9119 端口)。四张脸共享同一个后端,因为网关与会话层从不关心调用者是谁。随后沿双循环主线完成全书十章回顾,提炼 Hermes 四点核心哲学(双循环自我改进/器官化/中文生态原生/工程纪律),并给出下一步学习建议。
内容来源:原项目源码
cli.py、ui-tui/README.md、tui_gateway/、apps/desktop/、web/README.md;并回顾全书十章脉络。
⚠️ 注意:cli.py 约 2.17 万行是仓库最大的单文件,本节只讲它在 UI 版图中的定位,不逐段精读。另外
hermes dashboard服务的是构建产物(hermes_cli/web_dist/),改 web/src 后需 npm run build 才会生效;开发时用web --no-open+ Vite 热更新。
阅读完本节,你应当能够:
其一,cli.py——21663 行的旗舰终端 UI。hermes chat 默认进入:prompt_toolkit 提供输入编辑与补全,rich 提供富文本渲染(进度条、表格、markdown)。第 3 章的审批对话(o/s/a/D 四选项)、第 8 章的 /moa 与 /review 派遣单、kanban 的 SIGTERM 优雅退出、子代理树的 /agents 视图,全部落在这个文件。它也是 _BUILTIN_SUBCOMMANDS(第 9 章)的分发中枢——hermes 后面跟的一切子命令从这里路由。
其二,ui-tui + tui_gateway——TypeScript 与 Python 的楚河汉界。README 开篇一句话定纲:"React + Ink terminal UI for Hermes. TypeScript owns the screen. Python owns sessions, tools, model calls, and most command logic"。入口 src/entry.tsx 检测 TTY 后启动 GatewayClient,后者 spawn python -m tui_gateway.entry;传输是 stdio 上的换行分隔 JSON-RPC——请求/响应/事件走 stdout,Python 的 stderr 被收进内存环形缓冲仅作诊断(绝不上屏)。解释器解析链(HERMES_PYTHON → PYTHON → venv → python3)保证各种安装形态都能找到正确的 Python。这个架构的深意:TUI 想多花哨就多花哨,会话与工具的事实源永远在 Python 侧——UI 崩了重启,状态无损。
其三,apps/desktop + web——图形化的两端。desktop 是 Electron + React 桌面应用(e2e 测试、DESIGN.md 设计规范俱全);web 是 Vite + React 19 + Tailwind v4 的浏览器 Dashboard,管配置、API key 与活跃会话监控,由 hermes dashboard 服务构建产物、FastAPI 后端挂在 9119。第 7 章的 dash-admin 系列截图(频道/配对/MCP/技能中枢/curator 运维)全部来自这里——管理员视图也是网关的一个消费者,与 Telegram 消息无异。
三件套能共存的理由在全书反复出现过:网关与会话层面对的是 MessageEvent 与 session key,不是终端帧——UI 只是又一个平台。TUI、桌面、浏览器与微信消息享受同等的会话连续性、审批安全与外循环沉淀。
💡 循环要点:UI 三件套是「平台抽象」哲学的最后一次胜利——当核心循环不关心调用者,脸面就可以任意添加。这也反向解释了为什么 cli.py 能膨胀到 2.1 万行:它承载的是旗舰体验的全部交互细节,而这些细节从不泄漏进核心循环。
我们沿双循环走完全程。合卷回望:
第 1 章 Hermes 全貌与双循环架构:认识了这个 Nous Research 出品、MIT 协议的自我改进 agent——生产约 97 万行 Python + 58 万行 TypeScript、183 万行的巨兽。核心心法就位:内循环(会话循环:消息→prompt→LLM→工具→循环)+ 外循环(技能创建→curator 策展→使用中改进→learning_graph 沉淀→记忆反哺)。与 OpenClaw/Claude Code 的谱系经 hermes claw migrate 相连。
第 2 章 内循环 Agent Loop 全解剖:run_agent.py(9215 行)的 AIAgent,约 60 个构造参数;同步 while 循环 + 可中断 API 调用;三种 API 模式收敛(chat_completions/codex_responses/anthropic_messages 统一到 OpenAI 消息格式)——多协议世界的单心脏;消息交替规则与迭代预算的地基。
第 3 章 行动器官工具系统:133 个工具一工具一文件,中央 registry 与 schema 收集(model_tools.py);28 个 toolset 分组与平台预设(toolsets.py);危险命令审批(o/s/a/D)、路径安全与威胁模式;代表工具精读(terminal、五后端 browser、computer_use、delegate)。
第 4 章 外循环★技能自我改进(全书灵魂):SKILL.md 开放标准(agentskills.io),82 内置 + 117 可选技能;curator 生命周期(创建→评审→启用→退役);skill_ledger/usage/provenance 记账;使用中自改进;learning_graph 学习图谱。Hermes 区别于「能调工具的 agent」的全部灵魂在此——用得越多越强不是口号,是有账本、有图谱、有退役机制的工程系统。
第 5 章 记忆器官:有界策展式记忆(MEMORY.md 2200 字符/USER.md 1375 字符的硬边界);8 种可插拔记忆 provider 横向对比;FTS5 会话搜索与 native/fts5_cjk 中文分词 C 扩展——中文世界的一块基石。
第 6 章 上下文工程:prompt caching 神圣不可侵犯的设计铁律——组装顺序稳定换来缓存命中,省钱又提速;上下文压缩(context_engine/compressor)与 micro-compaction 微压缩;token 估算。压缩不是省钱技巧,是长任务的生存条件。
第 7 章 社交器官 34 平台网关:单进程 asyncio 撑起 34 平台(11.4 万行 gateway/);Platform 枚举 + 注册表 + 能力位的三层抽象;微信/飞书/钉钉/QQ/企微/元宝六大国内平台原生接入;跨平台会话连续性与语音转写。
第 8 章 协作器官多 Agent:delegate_task 委派与 SubagentLifecycleService 生命周期(HMAC 句柄防伪);迭代预算体系(父 500/子 50)与 spawn 深度/并发上限的组合防线;/review 验证引擎;kanban 多 Agent 工作队列(九态看板、认领锁租约、崩溃恢复、swarm 拓扑)与 MoA。
第 9 章 中文生态与模型 provider:37 个 provider 插件,国内七家(deepseek/kimi/minimax/qwen/xiaomi/zai-GLM/alibaba)原生支持且 quirk 修到位(reasoning_content 回显陷阱、GLM thinking 静默失效);5 种适配器正交组合;profile 路由;CLI 17 语言本地化;mcp_serve 把 Hermes 反向输出为 MCP server。
第 10 章 研究管线与工程纪律:batch_runner 批量轨迹生成;trajectory_compressor 的「保护首尾/压缩中间/摘要替换」把会话变训练数据;evals 三基准度量真实能力;供应链安全三件套(精确锁版/OSV/supply-chain-audit)与 30 个 CI——进化的燃料与免疫系统。
十章的因果链清晰可见:第 2 章的心脏需要第 3 章的手脚;第 4、5 章让经验跨越会话沉淀;第 6 章让长任务在有限上下文里活下来;第 7 章把一切送到人眼前(含中文国民级 IM);第 8 章把一个变一群;第 9 章接通全球与国产的粮草;第 10 章把轨迹炼成更强的模型再灌回心脏,并用工程纪律守住全部成果。没有一章是孤岛。
==X.Y.Z 且注释挂 CVE 编号;OSV 周扫 + 窄口径 supply-chain-audit;约 86 万行测试与 30 个 CI 工作流;预算/深度/并发三重防失控;连「失败提示措辞会毒化后续轮次」这种 prompt 级细节都有 issue 编号可溯。自我改进的系统必须先做到不可被投毒、不可被自己拖垮。按投入产出排序的四个方向:
~/.hermes/skills/,观察 curator 如何评审启用、usage 如何记账——这是验证你理解外循环的最短路径。hermes gateway setup,把 agent 接进飞书或钉钉(企业开发者权限最易得),配 deliver=feishu 的 cron 任务体验跨平台投递;有余力再读一个适配器(推荐 dingtalk,Stream 模式最简洁)。build_api_kwargs_extras,理解 quirk 修正如何落到请求体。agent 框架会继续演化,协议会来回摇摆,但 Hermes 留给读者的判断力不会过时:把改进做成有账本的系统,把差异锁进边界的抽象,把生态当一等公民,把纪律当生存条件。愿你的 agent 步步收敛、技能日增、账单可控、循环不息。全书完。