深度拆解 HermesAgent(一):从 Nous Research 出品的自我改进型 AI Agent 说起

系列导读:本文是 HermesAgent 深度拆解系列 的第一篇。我们将从项目全貌出发,剖析其核心架构设计,为后续深入分析闭环学习、工具系统、记忆体系等专题打下基础。

源码版本:v0.10.0 | 分析日期:2026-04-17
项目地址:https://github.com/NousResearch/hermes-agent
许可证:MIT


CSDN 分类:人工智能 > AI Agent > 架构设计
CSDN 标签:HermesAgent, AI Agent, 自我改进, Nous Research, 架构解析, Python Agent
阅读量:预计 10万+ | 收藏量:预计 5000+ | 点赞量:预计 2000+


一、HermesAgent 是什么?

如果你一直在关注 AI Agent 领域,可能已经听说过 OpenClawAutoGPTMetaGPT 等项目。而 HermesAgent 来自一个你可能不太熟悉但实力强劲的团队——Nous Research

与大多数 AI Agent 框架不同,HermesAgent 的核心定位非常聚焦:

“The self-improving AI agent” —— 一个具备自学习能力的 AI Agent。

它不只是一个"能调用工具的聊天机器人",而是一个能够从经验中创建技能、在使用中改进技能、自主决定记住什么、跨会话建立用户画像的智能体。这种"自我改进"的设计哲学,在整个开源 Agent 生态中都非常少见。

核心数据一览

属性 详情
开发者 Nous Research
许可证 MIT(完全自由)
主语言 Python(909+ 文件)
辅助语言 TypeScript/TSX(Web UI)
Python 要求 >= 3.11
总文件数 ~1717
测试用例 ~3000 个
工具数量 40+ 内置工具
支持平台 ~10 个消息平台
技能数量 288 内置 + 116 可选

一句话总结:这是一个"中等规模但设计精巧"的 Python Agent 项目,比 OpenClaw(14000+ 文件)更易理解,但功能深度不遑多让。


二、四大核心特性

在深入架构之前,先理解 HermesAgent 的四大"杀手级"特性:

1. 闭环学习系统(Closed Learning Loop)

这是 HermesAgent 最独特的设计。整个学习流程形成闭环:

执行任务 → 观察结果 → 提取经验 → 创建/改进技能 → 持久化知识
    ↑                                                    │
    └──────────── 下一轮任务使用改进后的技能 ←──────────────┘

Agent 不是被动等待人类更新它的 prompt 或配置,而是自主地从每次交互中学习:

  • 完成一个复杂任务后,自动生成可复用的技能文件
  • 使用中遇到问题,自动优化已有技能
  • 系统定期发送 “Nudge” 提醒 Agent 持久化重要知识

2. 技能系统(Skills System)

  • 兼容 agentskills.io 开放标准
  • 技能文件使用 Markdown 格式,人类可读可编辑
  • 支持在线 Skills Hub(技能市场),类似"Agent 版的插件商店"
  • 通过 /skills 命令即可浏览、搜索、安装

3. 跨会话记忆与用户建模

  • 基于 SQLite FTS5 的全文搜索,实现跨会话语义回忆
  • 集成 Honcho 辩证用户建模系统,跨会话构建用户画像
  • Agent 自主策展记忆——它自己决定什么值得记住

4. 研究就绪(Research-ready)

这是 HermesAgent 区别于绝大多数 Agent 项目的另一大亮点:

  • 内置 Atropos RL 训练环境,支持强化学习训练
  • 轨迹记录与压缩,可用于模型训练数据
  • 批量运行器,支持并行评估
  • SWE-bench 迷你运行器,软件工程能力基准测试

如果你在做 Agent 相关的学术研究或模型训练,HermesAgent 可能是目前最开箱即用的研究平台


三、整体架构

一张图看懂 HermesAgent 的架构全貌:

┌────────────────────────────────────────────────────────┐
│                    HermesAgent                          │
│                                                        │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐             │
│  │  CLI TUI │  │ Telegram │  │ Discord  │  ...        │
│  └────┬─────┘  └────┬─────┘  └────┬─────┘             │
│  ─────┴──────────────┴──────────────┴─── Interface     │
│                        │                               │
│              ┌─────────▼─────────┐                     │
│              │   AIAgent Core    │ ← run_agent.py      │
│              │  (同步 Agent 循环) │                     │
│              └─────────┬─────────┘                     │
│                        │                               │
│  ┌─────────┬───────────┼───────────┬──────────┐       │
│  ▼         ▼           ▼           ▼          ▼       │
│ ┌─────┐ ┌──────┐ ┌──────────┐ ┌──────┐ ┌───────┐    │
│ │Tools│ │Memory│ │ Skills   │ │Model │ │Cron  │     │
│ │Reg. │ │Manager│ │ System  │ │Meta  │ │Sched.│     │
│ └──┬──┘ └──┬───┘ └────┬─────┘ └──┬───┘ └───┬───┘    │
│  ──┴────────┴──────────┴──────────┴─────────┴──       │
│                                                        │
│  ┌───────────────────────────────────────────────┐    │
│  │          Tool Implementations (40+)           │    │
│  │  terminal | file | web | browser | code_exec  │    │
│  │  delegate | mcp | vision | tts | cron | ...  │    │
│  └───────────────────────────────────────────────┘    │
│                                                        │
│  ┌───────────────────────────────────────────────┐    │
│  │        Terminal Backends (6种)                 │    │
│  │  local | docker | ssh | daytona | modal | ... │    │
│  └───────────────────────────────────────────────┘    │
└────────────────────────────────────────────────────────┘
          │                              │
     ┌────▼────┐                    ┌────▼────┐
     │ SessionDB│                   │ RL Env  │
     │ (SQLite) │                   │(Atropos)│
     └─────────┘                    └─────────┘

架构设计的五个关键决策

1. 同步 Agent 循环

run_conversation() 是一个完全同步的 while 循环,没有使用 async/await。这种设计看似"保守",实则大大降低了理解和调试的复杂度:

while api_call_count < self.max_iterations and self.iteration_budget.remaining > 0:
    response = client.chat.completions.create(model=model, messages=messages, tools=tool_schemas)
    if response.tool_calls:
        for tool_call in response.tool_calls:
            result = handle_function_call(tool_call.name, tool_call.args, task_id)
            messages.append(tool_result_message(result))
        api_call_count += 1
    else:
        return response.content

对比 OpenClaw 的复杂异步架构,HermesAgent 的同步设计对于快速迭代的初创团队更友好。

2. 中心化工具注册

所有工具通过 tools/registry.py 统一注册和分发。添加新工具只需 2 步:

  1. 创建 tools/your_tool.py,定义 handler 并调用 registry.register()
  2. toolsets.py 的工具列表中添加

3. OpenAI 消息格式统一

无论使用哪个 LLM Provider,内部统一使用 OpenAI 兼容的消息格式(role: system/user/assistant/tool),大幅降低了多 Provider 适配的复杂度。

4. Profile 多实例隔离

通过 HERMES_HOME 环境变量实现完全隔离的多实例支持,代码中 119+ 处引用 get_hermes_home() 确保路径隔离。这对于多租户场景至关重要。

5. 研究导向的模块设计

RL 训练环境、轨迹压缩、批量运行器这些模块不是"后来加的",而是从一开始就融入架构设计的核心组件。


四、目录结构速览

理解一个项目最快的方式就是看目录结构。HermesAgent 的组织非常清晰:

hermes-agent/
├── run_agent.py              # ★ 核心:AIAgent 类与对话循环
├── model_tools.py            # 工具编排与函数调用分发
├── toolsets.py               # 工具集定义(40+ 工具列表)
├── cli.py                    # 交互式 CLI 编排器
├── hermes_state.py           # SessionDB — SQLite 会话存储
│
├── agent/                    # Agent 内部模块(33 文件)
│   ├── prompt_builder.py     # 系统提示词组装
│   ├── context_compressor.py # 自动上下文压缩
│   ├── memory_manager.py     # 记忆上下文构建
│   └── error_classifier.py   # API 错误分类与故障转移
│
├── tools/                    # 工具实现(71 文件)
│   ├── registry.py           # ★ 中央工具注册表
│   ├── terminal_tool.py      # 终端编排
│   ├── file_tools.py         # 文件操作
│   ├── browser_tool.py       # 浏览器自动化
│   └── environments/         # 6种终端后端实现
│       ├── local.py          # 本地终端
│       ├── docker.py         # Docker 容器
│       ├── ssh.py            # SSH 远程
│       └── ...
│
├── hermes_cli/               # CLI 子命令(48 文件)
│   ├── main.py               # 所有 hermes 子命令入口
│   ├── skin_engine.py        # ★ 皮肤/主题引擎
│   └── skills_hub.py         # 技能市场
│
├── gateway/                  # 消息平台网关(42 文件)
│   └── platforms/            # Telegram/Discord/Slack/WhatsApp/QQ...
│
├── acp_adapter/              # VS Code / Zed / JetBrains 集成
├── skills/                   # 288 个内置技能(Markdown)
├── optional-skills/          # 116 个可选技能
├── tests/                    # ~3000 个测试
└── environments/             # RL 训练环境(Atropos)

五、技术栈选择

HermesAgent 的技术栈选择非常务实:

组件 选择 理由
核心语言 Python AI/ML 生态最广泛
LLM 客户端 OpenAI SDK 统一接口,兼容大多数 Provider
交互式 CLI prompt_toolkit + Rich 成熟组合,功能强大
数据存储 SQLite 零依赖,FTS5 全文搜索
配置 YAML + Pydantic 人类可读 + 类型安全
Web UI React + FastAPI 现代前后端分离
测试 pytest + pytest-xdist 并行测试,速度快

一个值得注意的设计:大量功能通过可选依赖组管理。比如你要用 Telegram 就装 messaging 组,要用 RL 训练就装 rl 组,保持核心安装的精简。


六、为什么 HermesAgent 值得关注?

如果你在做 AI Agent 相关的产品或研究,HermesAgent 至少在三个维度上有独特价值:

1. 学习闭环的设计范式

目前绝大多数 Agent 都是"无状态"的——每次对话从零开始,或者依赖简单的上下文窗口。HermesAgent 的闭环学习系统提供了一种"Agent 如何持续进化"的参考实现。

2. 研究友好

内置 RL 训练环境、轨迹记录、批量评估器,如果你在做 Agent 能力评估或模型训练,这几乎是唯一一个开箱即用的开源平台。

3. 代码可读性

~1700 文件,~3000 测试,清晰的模块边界,Python 语言。相比 OpenClaw 的 14000+ TypeScript 文件,理解和贡献的门槛低得多。


七、系列预告

在后续文章中,我们将逐一深入以下专题:

篇目 内容
第二篇 闭环学习系统深度解析 —— Agent 如何"自我进化"
第三篇 工具注册与技能系统 —— 40+ 工具和 400+ 技能的组织之道
第四篇 多终端后端与 Gateway 网关 —— 从本地到云端到 HPC
第五篇 记忆系统与用户建模 —— Agent 如何"记住"你
第六篇 研究功能与测试体系 —— Agent 的学术之路

此外,我们还将发布 OpenClaw vs HermesAgent 对比分析系列,从记忆系统、安全架构、多通道、技能插件、本地控制等五大专题进行横向对比,敬请期待。


系列导航

相关阅读OpenClaw 架构深度分析 | HermesAgent 源码分析报告


本文基于 HermesAgent v0.10.0 源码分析,项目持续迭代中,具体实现可能随版本更新而变化。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐