乐于分享
好东西不私藏

Hermes Agent 源码解析(一):总览 —— 一个自进化 AI Agent 的骨架

Hermes Agent 源码解析(一):总览 —— 一个自进化 AI Agent 的骨架

Hermes Agent 源码解析(一):总览 —— 一个自进化 AI Agent 的骨架

Nous Research 出品的 Hermes Agent 是当前最活跃的开源 AI Agent 项目之一。从本篇开始,我们将用 12 篇文章逐层拆解它的源码架构。

想象一下这个场景:你在终端敲下 hermes deploy my-app,Agent 自动打开浏览器查文档、写 deploy 脚本、提 PR、审代码、合并、发 Slack 通知——全程没碰键盘。这不是 demo,这是 Hermes Agent 日常能做的事。

Hermes Agent 不是一个玩具 Agent。它是一个生产级的自主 AI 系统,核心特性可以概括为一句话:

能自我进化的 AI Agent —— 从经验中创建技能、在使用中改进技能、跨会话记忆用户画像。

它在一条指令中同时涵盖了:

  • • CLI 交互(类 Claude Code 的终端界面)
  • • 多平台消息网关(Telegram / Discord / Slack / 微信 / 飞书……)
  • • TUI 双进程架构(React Ink + Python JSON-RPC)
  • • 定时任务(cron 调度器)
  • • 多 Agent 协作(Kanban 看板 + 委派机制)
  • • 可插拔推理后端(支持 10+ provider 插件)

项目规模

以一个快速的代码量统计来感受一下:

层级
文件数
说明
核心入口
~5 个
run_agent.py
 (4123 行)、cli.py (14442 行)、model_tools.pytoolsets.py
agent/
~70 个 .py
适配器、内存、上下文压缩、system prompt 组装
hermes_cli/
~30 个 .py
子命令、配置、皮肤引擎、插件加载器
tools/
~70 个 .py
每个工具独立文件,通过 registry 自注册
gateway/
~30 个 .py
异步消息网关 + 平台适配器
plugins/
40+ 子目录
模型提供者、内存后端、看板、Image Gen 等
tests/
~1,100 个 .py
~17,000 个测试用例

模块全景图

模块全景图

手机端查看建议点击图片放大。完整架构关系图见 架构图-Mermaid.md。

依赖链

这是整个系统的核心依赖关系,从 AGENTS.md 中可以看到:

tools/registry.py        ← 纯注册中心,无外部依赖       ↑tools/*.py               ← 每个工具在模块顶层调用 registry.register()       ↑model_tools.py           ← 导入所有 tool 模块触发自动发现       ↑run_agent.py / cli.py / batch_runner.py / environments/

这条链意味着:每个工具文件在 import 时自动向全局注册中心声明自己,上层只需要 import model_tools 就能拿到所有工具的完整索引。

一次对话的完整链路

这篇系列想回答一个核心问题:"hermes" 回车之后到底发生了什么?

把 12 篇文章串起来,一次典型对话的路径是这样的:

用户输入 "帮我看一下这个文件"    │    ▼01. CLI 层:cli.py 接到输入,包装成 user message    │  (02 篇详讲)    ▼02. Agent 主循环:AIAgent.run_conversation() 开始循环    │  (03 篇详讲)    ├── 组装 system prompt(三层:stable + context + volatile)    │  (10 篇讲记忆注入)    ├── 加载已匹配的技能(user message 注入,不破坏 prefix cache)    │  (09 篇讲 Skills)    ├── 调用 LLM(provider 无关,统一 chat.completions API)    │  (08 篇讲模型提供者插件)    ├── LLM 返回 tool_calls → 派发给 tools/registry    │  (04 篇讲工具系统、05 讲 Toolsets 过滤)    └── 工具执行结果 → 追加到 messages → 继续循环    │    ▼03. 最终回复 → 返回给 CLI / Gateway / TUI    │  (06 篇讲 Gateway 多平台分发,07 讲 TUI 双进程)    ▼    记忆同步 → SessionDB 存储 → Curator 惰性检查    (10 篇讲记忆,09 篇讲 Curator 技能管理)

这 9 个子系统在一条指令中协同工作。12 篇文章逐层深入,每篇聚焦一个模块的源码细节。

12 篇文章路线图

篇次
主题
核心文件
01
总览:架构骨架
整体
02
入口与 CLI
cli.py
hermes_bootstrap.py
03
Agent 主循环
run_agent.py
04
工具系统
tools/registry.py
model_tools.py
05
Toolsets
toolsets.py
06
消息网关
gateway/run.py
gateway/platforms/
07
TUI
ui-tui/
tui_gateway/
08
插件系统
plugins/
hermes_cli/plugins.py
09
Skills
skills/
agent/curator.py
10
记忆与上下文
hermes_state.py
agent/memory_manager.py
11
Cron 与多 Agent
cron/
tools/delegate_tool.py
12
安全与 Profiles
hermes_constants.py
hermes_cli/config.py


欢迎一起讨论! 用 Hermes 部署过什么实际项目?它的多平台支持对你有用吗?留言聊聊。📢 关注我,第一时间收到更新推送。

下一篇我们从用户最直接的操作入手 —— 当你在终端输入 hermes 按下回车,发生了什么?