深度拆解 HermesAgent(一):从 Nous Research 出品的自我改进型 AI Agent 说起
深度拆解 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 领域,可能已经听说过 OpenClaw、AutoGPT、MetaGPT 等项目。而 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 步:
- 创建
tools/your_tool.py,定义 handler 并调用registry.register() - 在
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 对比分析系列,从记忆系统、安全架构、多通道、技能插件、本地控制等五大专题进行横向对比,敬请期待。
系列导航:
本文基于 HermesAgent v0.10.0 源码分析,项目持续迭代中,具体实现可能随版本更新而变化。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)