跳转到内容

Hermes Agent 源码深度解析

Nous Research 自进化 AI Agent 源码深度解析 — 基于 Python 源码全面剖析 Agentic Loop、工具生态、学习闭环、多平台网关

30 章深度解析

从产品特性到 RL 训练,逐层拆解 227K 行 Python 源码。每章附源码锚点,可边读边对照。

30+ 交互组件

每章配备可交互的架构图、流程动画、对比卡片,帮助理解复杂的 Agent 架构。

自进化闭环

业界少见的”从经验学习”架构 — Skills 自动创建、使用中改进、持久记忆、跨会话召回。

开源 MIT

Hermes Agent 完全开源,本书基于 v0.8.0 版本源码分析。可自由阅读、修改、商用。


核心数据

指标值
版本v0.8.0 (2026-04-08)
语言Python 3.11+
代码量~227K 行 Python
核心文件run_agent.py (10.6K 行), cli.py (10K 行), gateway/run.py (9K 行)
工具数40+ 内置工具,6 种终端后端
Skills27 类内置 + 50+ 可选
平台CLI + 15 个消息平台
源码github.com/NousResearch/hermes-agent

本书结构

全书分为 7 部分 30 章 + 2 附录,从鸟瞰概览到引擎内核、工具生态、学习闭环、多平台网关,最终到扩展与展望:

第一部分 · 鸟瞰 Hermes Agent

章节主题核心问题
第 1 章产品特性与设计目标自进化 Agent 与传统 AI 工具的本质区别?
第 2 章运行形态与入口点六种运行模态如何共享同一个 AIAgent 核心?
第 3 章十分钟心智模型一张总图建立全局认知?

第二部分 · 智能体引擎

章节主题核心问题
第 4 章AIAgent 类全貌构造参数、状态字段、生命周期?
第 5 章主循环解剖run_conversation() 的完整时序?
第 6 章System Prompt装配七层 Prompt 如何组装?注入检测?
第 7 章上下文压缩ContextEngine 的可插拔设计?
第 8 章消息模型与 API 适配多模型如何统一抽象?
第 9 章错误分类与路由降级自动 failover 如何工作?

第三部分 · 工具生态

章节主题核心问题
第 10 章Tool Registry工具如何自注册、发现、调度?
第 11 章Toolset 代数40+ 工具如何分组与组合?
第 12 章六种 Terminal 后端统一抽象如何适配 6 种执行环境?
第 13 章文件与 Web 工具族fuzzy patch 与多后端 Web 搜索?
第 14 章Browser 与 MCP无视觉浏览器操控与开放工具扩展?
第 15 章代码执行与子 AgentPTC 的 UDS RPC 与委派隔离模型?

第四部分 · 学习闭环

章节主题核心问题
第 16 章会话存储 SessionDBSQLite + FTS5 的持久化设计?
第 17 章Memory 系统MEMORY.md/USER.md 的冻结快照模式?
第 18 章Skills 系统渐进式披露与 Skills Hub?
第 19 章Session SearchFTS5 + LLM 摘要的跨会话回忆?
第 20 章封闭学习循环自我进化闭环的完整数据流?

第五部分 · 多平台网关

章节主题核心问题
第 21 章Gateway 架构一个 Agent 如何服务 15 个平台?
第 22 章Platform Adapter 模式适配器的抽象与差异化实现?
第 23 章Cron 调度与 ACP定时任务投递与 IDE 集成?

第六部分 · 横切关注点

章节主题核心问题
第 24 章CLI 与 Skin EngineRich + prompt_toolkit 的交互设计?
第 25 章配置、凭据与 Profiles分层配置与多密钥轮换?
第 26 章安全纵深命令审批、路径安全、注入防御?
第 27 章线程模型同步↔异步桥接的设计权衡?

第七部分 · 扩展与展望

章节主题
第 28 章扩展实战 — 新增工具、平台与后端
第 29 章RL 训练与 Trajectory 生成
第 30 章设计哲学与同类对比

附录

附录主题
附录 A源码锚点索引与 Slash 命令速查
附录 B配置 YAML Schema 与环境变量参考

源码目录速览

本书分析的源码位于 hermes-agent/ 仓库根目录,以下是核心模块结构:

hermes-agent/
├── run_agent.py # AIAgent 类 — 核心会话循环 (10.6K 行)
├── model_tools.py # 工具编排层 — 发现 + 分发
├── toolsets.py # 工具集定义 — 40+ 工具的分组与组合
├── cli.py # HermesCLI 类 — 交互式 CLI 编排器 (10K 行)
├── hermes_state.py # SessionDB — SQLite + FTS5 状态存储
├── agent/ # Agent 内部模块
│ ├── prompt_builder.py # System Prompt 组装 (含注入检测)
│ ├── context_compressor.py # 上下文压缩引擎
│ ├── context_engine.py # ContextEngine 抽象基类
│ ├── memory_manager.py # 记忆管理器 (builtin + 外部插件)
│ ├── credential_pool.py # 多凭据池 + 自动 failover
│ ├── anthropic_adapter.py # Anthropic Messages API 适配器
│ ├── smart_model_routing.py # cheap/strong 模型路由
│ └── ...
├── tools/ # 工具实现 (每工具一文件)
│ ├── registry.py # 中央工具注册表
│ ├── terminal_tool.py # 终端编排 (6 种后端)
│ ├── environments/ # 终端后端 (local/docker/ssh/modal/daytona/singularity)
│ ├── browser_tool.py # 浏览器自动化
│ ├── mcp_tool.py # MCP 客户端
│ ├── skills_tool.py # Skills 系统
│ ├── delegate_tool.py # 子 Agent 委派
│ └── ...
├── gateway/ # 消息平台网关
│ ├── run.py # GatewayRunner (9K 行)
│ ├── platforms/ # 15 个平台适配器
│ └── ...
├── hermes_cli/ # CLI 子命令系统
├── cron/ # 定时任务调度器
├── plugins/ # 可插拔插件
├── skills/ # 内置 Skills
└── acp_adapter/ # ACP 服务器 (IDE 集成)

阅读约定

本书基于 Python 源码分析,使用真实的文件名、函数名、类名。标注格式如下:

AIAgent.run_conversation() in run_agent.py:7544 — 核心会话循环

  • 前者是源码中的真实函数名
  • 后者是文件路径:行号(基于 v0.8.0 版本)

每章末尾的速查表汇总了该章涉及的所有关键文件和函数。

阅读建议

  • 快速了解:先读第 3 章(十分钟心智模型),建立全局地图
  • 深入核心:接着读第 5 章(主循环解剖),理解 Agent 的心跳
  • 按部分阅读:每部分相对独立,可根据兴趣选择
  • 源码对照:每章都附有源码锚点,建议 clone 仓库后边读边对照

关于


声明

本书仅供学习和研究目的使用。

  • 开源许可:Hermes Agent 采用 MIT 许可证,由 Nous Research 构建。本书引用的代码片段遵循 MIT 许可的合理使用。
  • 非官方:本书为独立的第三方研究作品,未经 Nous Research 授权、赞助或认可。
  • 商标:Hermes Agent、Nous Research 均为 Nous Research 的商标,本书中的使用仅为描述性引用。
  • 免责:本书内容仅供参考,不构成任何形式的技术建议或保证。