Hermes Agent:从“会聊天”到“会长期工作的系统”
一份面向工程师的源码导读:不只说明功能在哪里,还追踪数据如何穿过入口、循环、工具、上下文、记忆、网关和调度器。
为什么值得拆
很多 Agent 教程停在一个函数:调用模型、解析 tool call、再调用一次模型。Hermes Agent 展示的是另一种问题:当 Agent 要长期运行、跨平台接收消息、执行高风险命令、记住用户、创建技能、定时工作并且能在多种后端执行时,原本的“循环”如何被扩展成一套运行时。
这份拆解把 Hermes 看成五个相互咬合的系统:
| 系统 | 它解决的问题 | 主要源码入口 |
|---|---|---|
| Agent Runtime | 一轮对话怎样持续到任务完成 | run_agent.py、agent/conversation_loop.py |
| Capability Runtime | 工具、技能、MCP 和子 Agent 怎样被发现、授权、执行 | tools/、agent/subagent_lifecycle.py |
| Context Runtime | 有限上下文怎样装入当前任务、历史、记忆和压缩摘要 | agent/prompt_builder.py、agent/context_compressor.py |
| Gateway Runtime | 同一个 Agent 怎样被 CLI、Telegram、Discord 等入口共享 | gateway/ |
| Operations Runtime | 定时任务、远程后端、ACP、桌面与观测怎样托住长期运行 | cron/、acp_adapter/、tools/environments/、website/ |
十章阅读地图
- 架构与入口:先建立模块地图,跟一条消息从
hermes进入系统。 - Agent Loop:看
AIAgent如何把模型、历史、重试、停止和工具串起来。 - 模型与凭证:解释多 Provider、多 transport、OAuth、failover 与 billing 边界。
- 工具与安全:从注册表到并发执行、审批、checkpoint、输出预算。
- 上下文与压缩:理解 system prompt、上下文文件、动态记忆和两级压缩。
- 记忆/学习/技能:拆开“自我改进”的闭环,而不是把它当成一句产品文案。
- 会话与网关:看持久化 session、平台适配、流式事件和 profile 路由。
- 调度/委托/后端:解释 cron、子 Agent、relay 和 local/Docker/SSH/云沙箱。
- 前端与 ACP:看 TUI、Web、Desktop、API Server 和编辑器协议如何消费运行时。
- 测试与工程化:从测试目录、锁文件、插件边界和发布配置反推项目的质量策略。
一张总图
一条需要记住的主线
Hermes 的核心不是某一个模型适配器,也不是某一个工具,而是“把不可控的长链路拆成可恢复的边界”:
输入边界 → Prompt 边界 → API 边界 → Tool 边界 → 持久化边界 → Delivery 边界
每个边界都做至少一件事:清洗、限流、重试、记账、授权、持久化或降级。后文所有设计都围绕这条主线展开。