Hermes Agent 架构与特点
理解 Hermes 的内部结构,能帮助你更高效地配置、扩展与排错。本章拆解它的整体架构与关键设计。
总体架构
Hermes 由若干松耦合的子系统组成,围绕一个 Agent 主循环协作:
┌──────────────────────────────────────────────────────────────┐
│ 入口 / 触达层 │
│ CLI 终端 UI │ 消息网关(Telegram/Discord/Slack…) │
└───────────────┬──────────────────────────┬───────────────────┘
│ │
▼ ▼
┌──────────────────────────────────────────────────────────────┐
│ Agent 主循环 │
│ 读取上下文 → 调用 LLM → 解析工具调用 → 执行 → 写回结果 │
└───┬───────────┬───────────┬───────────┬───────────┬──────────┘
│ │ │ │ │
▼ ▼ ▼ ▼ ▼
┌──────┐ ┌────────┐ ┌────────┐ ┌────────┐ ┌──────────┐
│ 记忆 │ │ 技能 │ │ 工具 │ │ Cron │ │ 执行后端 │
│MEMORY│ │SKILLS │ │ TOOLS │ │调度器 │ │Local/Docker│
└──────┘ └────────┘ └────────┘ └────────┘ └──────────┘
│ │
▼ ▼
┌──────────────────────────┐ ┌────────────────────────┐
│ ~/.hermes/ 本地存储 │ │ LLM Provider(模型) │
│ config / SOUL / MEMORY │ │ Portal/OpenRouter/vLLM│
└──────────────────────────┘ └────────────────────────┘
Agent 主循环
Hermes 的核心是一个经典的 "感知—思考—行动" 循环:
- 组装上下文:加载 SOUL(人设)、相关记忆、可用工具/技能、当前会话历史
- 调用 LLM:把上下文交给所选模型,得到回复或工具调用请求
- 解析与执行:若模型请求调用工具,则在选定的执行后端中运行
- 写回结果:把工具输出回灌给模型,继续推理,直到任务完成
- 沉淀:必要时更新记忆、生成新技能
Hermes 支持 11 种 tool-call 解析器,以兼容不同模型输出工具调用的格式,这也是它"模型无关"的关键。
本地存储布局:~/.hermes/
所有状态都保存在用户目录下,便于备份、迁移与审计:
~/.hermes/
├── config.yaml # 主配置(模型、工具、平台、后端…)
├── SOUL.md # 智能体人格 / 系统提示
├── MEMORY.md # 沉淀的事实与模式(长期记忆)
├── USER.md # 用户画像与偏好
├── skills/ # 自定义与自动生成的技能
├── conversations/ # 会话历史
└── cache/ # 缓存数据
可用环境变量 HERMES_CONFIG_DIR 覆盖该目录位置。
三层分离的设计特点
Hermes 把"是谁、记得什么、会做什么"清晰拆开:
这种分离让你可以单独调整任意一层——换个人设不会丢记忆,清理记忆不影响人设。详见 记忆系统。
执行后端(Terminal Backends)
工具中的命令并不总在本机裸跑,Hermes 提供 6 种可切换的执行后端,兼顾便捷与隔离:
执行后端是 Hermes 安全治理的重要一环:把高风险操作放进容器或远程沙箱,可显著降低误操作影响。
网关(Gateway)
网关是连接外部消息平台的适配层。它把 Telegram、Discord 等平台的消息统一翻译为 Agent 循环的输入,并把回复发回对应平台:
[用户在 Telegram 发消息] → 网关适配器 → Agent 循环 → 回复 → 网关 → [Telegram]
一个网关可同时挂多个平台,配合 DM 配对与用户白名单做访问控制。详见 消息通道。
关键特点小结
- 模型无关:11 种工具解析器 + 200+ 模型,随时
/model 切换
- 本地优先:状态全在
~/.hermes/,无云锁定
- 分层清晰:人设 / 记忆 / 用户三层独立可调
- 执行可隔离:6 种后端按风险选择
- 主动可调度:内置 Cron,无人值守执行
- 可成长:技能自动沉淀、提示词可演化(GEPA)
下一步