一、引言:为什么需要 Hermes Agent?
问题背景
当前的 AI 应用存在的痛点:
- 能力固化:传统 LLM 应用是静态的,模型能力在部署后无法通过使用而改进
- 记忆断裂:每次对话都是孤立的,无法建立跨多轮的上下文,更谈不上记住用户画像
- 工作流复杂:要实现自动化任务需要编排复杂的 workflow,使用体验割裂
- 部署受限:需要 GPU 服务器、常驻进程,无法轻量化部署
- 多渠道协作困难:需要在 CLI、Telegram、Discord 等多个平台与 AI 交互时,往往需要多套系统
Hermes Agent 的创新答案
Hermes Agent 用一个统一的架构解决了这五大问题:
- ✅ 自进化:闭合学习循环,从任务中提炼技能(Skills),自动改进
- ✅ 记忆丰富:多层次持久化记忆系统,跨会话知识积累
- ✅ 开箱即用:47 个内置工具,无需编码直接使用
- ✅ 无处不在:支持 6 种终端后端(本地/Docker/SSH/Daytona/Modal 等),可无服务器部署
- ✅ 一处管理:单网关支持 15+ 通讯平台,统一对话界面
二、核心概念快速入门
2.1 它是什么?
Hermes Agent 是一个自进化的开源 AI 智能体框架,具有以下特点:
核心身份:
- 🤖 自主代理:能够独立分解任务、调用工具、执行操作
- 📚 学习系统:能从任务中自动生成和改进"技能"(可复用的知识单元)
- 🧠 记忆引擎:持久化多层次记忆,包括用户画像、过去对话、创建的技能
- 🔌 多模态:支持文本、语音、图像、网页等多种交互方式
非它为什么:
- ❌ 不是一个 Slack bot(虽然可以集成 Slack)
- ❌ 不是 ChatGPT 的简单包装(底层架构完全不同)
- ❌ 不是只能在笔记本上运行的 Tool(支持云端、无服务器部署)
2.2 三大标志性特性
特性 1:闭合学习循环(Closed Learning Loop)
普通 LLM 应用的流程:
用户提问 → 调用 API → 返回结果 → 结束
↓
每次都是孤立的,无法改进
Hermes 的流程:
用户提问
↓
执行任务 → 生成轨迹数据
↓ ↓
存储记忆 【定期触发】
↓ RL 改进算法
自动总结 ↓
↓ 创建并改进 Skills
改进 Skills←←←
↓
下次使用时,能更好地处理类似任务
实例说明:
- 你给 Hermes 一个复杂的数据分析任务
- Hermes 通过多步骤工具调用完成为你
- 系统自动记录"如何做数据清洗→数据转换→报告生成"的完整流程
- 过一段时间,系统自动总结这个流程为一个可复用的"数据分析 Skill"
- 下次你要做类似任务,Hermes 直接调用这个 Skill,更高效
特性 2:多平台统一部署(Platform-Agnostic Running)
支持 6 种运行后端:
| 后端 | 场景 | 成本 | 操作系统 |
|---|---|---|---|
| Local | 开发、个人使用 | 免费 | 本地机器 |
| Docker | 小团队、自建资源 | 低 | 容器化 |
| SSH | 远程服务器 | 按服务器计费 | 任何 Linux |
| Daytona | 生产部署、自动扩容 | 按使用计费 | 云原生 |
| Modal | 无服务器、超低成本 | ~$0 待命 | 云函数 |
| Singularity | HPC 集群 | 共享计费 | 学术机构 |
关键优势:你可以在笔记本开发,然后通过改一行配置,部署到企业级 Daytona 或 Modal,无需改代码。
特性 3:多渠道网关(Unified Messaging Gateway)
Hermes 用一个网关进程(Gateway)统一管理 15+ 通讯平台:
┌─────────────────────────────┐
│ Hermes Gateway(单一进程) │
│ 运行在云 VM 上 │
└────────────┬────────────────┘
│
┌────┼────┬──────┬──────┬──────┬──────┐
│ │ │ │ │ │ │
Telegram Discord Slack WhatsApp Signal Email
│ │ │ │ │ │
└────┼────┼──────┼──────┼──────┼──────┘
↓ ↓ ↓ ↓ ↓ ↓
你机器上的 Hermes-Agent 核心引擎(只需管理一个会话历史)
工作流:
- 用户在 Telegram 发消息
- Gateway 的 Telegram 适配器接收
- 创建/查找对应的会话
- 调用 AIAgent 核心引擎处理
- 返回结果通过 Telegram 发送
- 同时也可以通过 Discord 看到同样的对话历史
三、技术架构深度解析
3.1 系统全景图
3.2 核心组件详解
Agent Loop
Agent Loop 是一个同步编排引擎,核心功能在于统一调度智能体(Agent)运行过程中的关键环节。它在 run_agent.py 中实现,主要负责:
- provider选择:根据任务需求动态选定最优模型或服务后端
- 提示构建:生成适配当前上下文与目标的输入提示
- 工具执行:调用外部工具完成特定操作(如搜索、计算)
- 异常处理机制:支持自动重试、策略回退和状态回调
- 输出管理:实现响应的压缩与运行状态的持久性保存
- 多模式兼容:支持三种API模式,适配不同厂商的后端接口,提升灵活性
该设计使智能体具备更强的鲁棒性与可扩展性,适用于复杂任务链场景。
提示系统 (Prompt System)
工作流:
flowchart LR
A[SOUL.md个性定义] --> H[汇聚]
B[MEMORY.md 记忆库]--> H[汇聚]
C[USER.md 用户画像]--> H[汇聚]
D[AGENTS.md 项目上下文]--> H[汇聚]
E[当前对话历史]--> H[汇聚]
F[工具使用指南]--> H[汇聚]
G[模型特定指令]--> H[汇聚]
G --> H[汇聚]
H --> I[构建系统提示]
I -->jj[LLM模型]
dx[用户输入] -->jj[LLM模型]
cc[任务上下文]-->jj[LLM模型]
dd[工具响应]-->jj[LLM模型]
-
提示构建(prompt_builder.py) :该模块是系统的核心,负责从多个来源动态组装系统提示词。其整合的要素包括:
- 角色与人格:从
SOUL.md文件加载。 - 记忆与用户档案:整合
MEMORY.md和USER.md中的历史信息。 - 技能与上下文:引用
AGENTS.md和.hermes.md等文件定义的技能和背景知识。 - 操作指南:包含工具使用说明和针对特定模型的指令。
- 角色与人格:从
-
提示缓存优化(prompt_caching.py) :为了提升性能并降低成本,该模块应用了类似Anthropic的“缓存断点”技术。其原理是将提示词中相对静态的部分(如系统指令、角色设定)进行“前缀缓存”,使得在后续生成时,模型可以复用这部分已计算过的中间状态,从而显著加快响应速度并减少计算开销。
-
上下文压缩(context_compressor.py) :当对话轮次增多导致上下文长度超过预设阈值时,此模块会被激活。它的核心策略是对中间部分的对话轮次进行智能摘要,而非简单地丢弃最早的信息。这样可以在保留对话核心信息和最新进展的同时,有效控制输入给模型的令牌数量,确保长对话的可持续性。
工具系统 (Tool System)
47 个内置工具,分为 8 大类:
| 类别 | 工具数 | 代表工具 | 用途 |
|---|---|---|---|
| 终端操作 | 8 | terminal, execute_code, bash | 环境命令执行 |
| 文件管理 | 6 | read_file, write_file, patch | 文件读写修改 |
| 网络搜索 | 4 | web_search, web_extract | 信息采集 |
| 浏览自动化 | 11 | take_screenshot, click, type | 可视化交互 |
| 视觉处理 | 3 | vision, image_generation | 图像能力 |
| 代码执行 | 2 | execute_code, sandbox | 程序运行 |
| MCP 集成 | - | mcp_tool | 任意扩展 |
| 代理委托 | 1 | delegate | 子任务并行 |
示例工具调用流程:
flowchart LR
A["用户请求:查今天天气"] --> B["Hermes 分析"]
B --> C{是否需要web_search?}
C -- 是 --> D["调用web_search('today weather location')"]
D --> E["获取搜索结果"]
E --> F["解析关键信息(温度,湿度,预报)"]
F --> G["返回用户"]
C -- 否 --> H["直接返回结果"]
会话存储 (Session Storage)
技术实现:
- 数据库:SQLite(轻量、无服务依赖)
- 全文搜索:FTS5(快速、正确的模糊匹配)
- 数据结构:
Sessions (id, user_id, platform, created_at, ...) Messages (id, session_id, role, content, turn_number, ...) Memories (id, user_id, key, value, metadata, ...) Skills (id, name, trigger, procedure, usage_count, ...)
跨会话能力:
- 搜索过去 6 个月的对话:
/search 数据分析问题 - 自动总结关键信息:
对这个用户的性格特征进行 LLM 总结 - 技能复用:检测相似任务时,自动调用已有 Skill
网关系统 (Gateway)
架构:
┌────────────────────────────────────────┐
│ GatewayRunner (7500 行) │
├────────────────────────────────────────┤
│ • 消息路由 │
│ • 用户授权 (DM Pairing) │
│ • 会话隔离 (per-platform) │
│ • 持久化连接 (long-polling/webhook) │
│ • Hook 系统 (事件回调) │
└────────────────────────────────────────┘
↓
┌────┬──────┬──────┬─────┬───────┬──────┐
│Tg │Discord│Slack │WhatsApp Signal│Email│...
└────┴──────┴──────┴─────┴───────┴──────┘
工作流:
- 用户在平台发消息:
@hermes 帮我分析这个问题 - 平台适配器接收消息
- 检查用户授权(DM pairing 验证)
- 创建 AIAgent 实例,加载该会话历史
- 调用 AIAgent.run_conversation()
- 返回结果通过原平台发送
多平台对话连贯性:
时间 Telegram Discord
08:00 给 Hermes 一个任务 -
|
└→ Hermes 执行 + 保存结果
09:00 - "@hermes /search 刚才任务"
|
└→ Discord 可查看完整历史
3.3 agent loop 执行流程
单轮对话的完整流程:
user_input
↓
HermesCLI.process_input()
↓
AIAgent.run_conversation()
├─① 构建系统提示
│ ├─ 加载 SOUL.md (性格)
│ ├─ 加载 MEMORY.md (记忆)
│ ├─ 加载上下文文件 (.hermes.md)
│ ├─ 添加工具使用指南
│ └─ 应用缓存策略
│
├─② 调用 LLM
│ ├─ 选择提供商 (OpenRouter/Anthropic/OpenAI...)
│ ├─ 选择模型
│ ├─ 流式返回结果
│ └─ 实时显示到 UI
│
├─③ 检查工具调用
│ ├─ 是否返回 tool_call?
│ ├─ 解析工具名 + 参数
│ ├─ 安全检查 (approval callbacks)
│ ├─ 执行工具
│ └─ 捕获 stdout/stderr
│
├─④ 工具结果回馈
│ ├─ 添加到上下文
│ ├─ 检查是否需要压缩
│ └─ 回到 ②(继续 LLM loop)
│
└─⑤ 持久化
├─ 保存到 SessionDB
├─ 检查是否可生成 Skill
└─ 触发记忆更新
输出到 UI + 存储
关键特点:
- 流式响应:用户实时看到 Hermes 的思考过程
- 可中断:用户可按 Ctrl+C 中止,任务状态正确保存
- 智能重试:工具失败时自动重试(带指数退避)
- 压缩机制:对话过长时自动总结,保持成本可控
四、Hermes 的 5 大核心优势
优势 1:真正的自进化
数据对比:
| 对标方案 | 能否学习任务 | 自动改进 | 技能复用 | 跨会话记忆 |
|---|---|---|---|---|
| ChatGPT Plugin | ❌ | ❌ | ❌ | 仅同会话 |
| LangChain Agent | ❌ | ❌ | 手动编码 | 需要自己管理 |
| AutoGPT | ⚠️ 部分 | ❌ | 有限 | ❌ |
| Hermes | ✅ | ✅ 自动 | ✅ 自动生成 | ✅ 跨会话 |
实例:
第 1 次任务:
- 用户:"帮我清洗 CSV,转换为 JSON"
- Hermes:读文件 → 验证 → 转换 → 保存
- 结果:✅ 成功
第 7 天(自动触发):
- 系统:检测任务类型相同但参数不同的轨迹
- 系统:自动生成 Skill "CSV-to-JSON Converter"
- 系统:测试并改进 Skill
第 2 次任务
- 用户:"帮我处理这个 Excel"
- Hermes:识别相似任务 → 调用 CSV-to-JSON Skill → 优化参数
- 结果:比第 1 次快 60%
优势 2:真正的多平台
成本对比(月成本):
| 方案 | CLI | Telegram | Discord | 视觉能力 | 总成本 | |
|---|---|---|---|---|---|---|
| 5 个独立 Bot | $300 | $150 | $150 | $200 | 需要额外 | ~$800+ |
| Hermes | 100 (云) | 包含 | 包含 | 包含 | 包含 | ~$100 |
网关的威力:
- 单个 Agent 实例 = 无限平台支持(新增平台只需实现 Adapter)
- 会话数据统一 = 用户在任何平台体验到的都是同一个 Hermes
优势 3:灵活的部署
典型场景的部署方式:
场景 1: 个人开发
笔记本 + `hermes` 命令 → 完成 ✅
场景 2: 小团队共享
AWS EC2 (t3.small) + Docker → $10/月
场景 3: 生产服务
Modal (无服务器) + Daytona (自动扩容)
→ 等待时 $0,执行时按秒计费
场景 4: 学术研究
大学 HPC 集群 + Singularity 后端
→ 共享计算资源,无额外成本
优势 4:丰富的开箱工具
47 个工具覆盖 90% 的自动化需求:
✅ 你可以直接:
- 自动化数据处理(读写、转换、清洗)
- 网络信息采集(搜索、提取、爬虫)
- 可视化交互(截图、点击、输入、OCR)
- 代码执行测试(Python/Bash 沙箱)
- 多任务并行(委托子代理)
❌ 什么不需要自己写:
- HTTP 客户端?内置 web_search
- 数据库连接?用 execute_code 动态加载
优势 5:开放的技能生态
支持的技能系统:
- OpenStandard:基于 agentskills.io 标准
- Skills Hub:社区共享技能市场
- 自动生成:任务完成后自动总结为 Skill
- 本地创建:
~/.hermes/skills/自定义技能
五、关键技术亮点
5.1 上下文管理的创新
问题:LLM 上下文窗口有限(通常 8K-200K tokens),对话过长怎么办?
传统方案:直接截断(丢失信息)或重新摘要(费时费钱)
Hermes 的方案:
对话长度监控
↓
如果 > threshold
↓
├─ 关键轮(需要保留)
├─ 中间轮(智能总结)
└─ 最近轮(完整保留)
↓
保留上下文连贯性
成本影响:
- 100 轮对话:不压缩 0.6(节省 76%)
- 信息丢失率 < 3%(重要信息保留)
5.2 工具调用的可观测性
传统 LLM 工具调用:
用户问题 → [LLM黑盒处理] → 结果
↓
看不到工具调用过程、参数、为什么用这个工具
Hermes 的做法:
用户问题
↓
【实时显示】正在调用: web_search
【实时显示】参数: {"query": "Python async tutorial"}
【显示进度】⏳ 搜索中...
【显示结果】✅ 得到 5 个相关页面
【显示下一步】正在提取内容...
↓
用户能看到每一步,完全可控
用户体验:信任度提升,出错时能快速定位问题
5.3 模型隔离与隔离性
Hermes 的设计:
AIAgent 核心 = 业务逻辑(不依赖特定模型)
|
├─ 支持 OpenAI API 格式
├─ 支持 Anthropic Messages API
├─ 支持 OpenRouter (200+ 模型)
└─ 支持自托管 LLM(via vLLM/Ollama)
切换模型 = 改一个参数(不改代码)
实战意义:
- 成本优化:便宜的模型做简单任务,高端模型做复杂任务
- 风险规避:新模型发布时,快速 A/B 测试
- 合规性:不想上云?用本地模型无需改代码
六、实战场景分析
场景 1:数据分析自动化
传统做法:
手写 Python 脚本
→ 调试 3 小时
→ 执行 → 检查结果
→ 下次要改参数重新写
Hermes 做法:
"Hermes,帮我分析这个 CSV,找出异常值、趋势、统计摘要"
↓
Hermes:
1️⃣ 检测到 CSV 文件
2️⃣ 调用 read_file + 数据验证
3️⃣ 使用 execute_code(内置 Pandas)进行分析
4️⃣ 生成可视化报告
5️⃣ 系统自动记录为 "数据分析" Skill
下次:直接调用 Skill,速度提升 70%
收益:
- ⏱️ 从 3 小时 → 5 分钟
- 💰 省去学习 Pandas 复杂 API 的时间
- 🔄 积累可复用经验
场景 2:跨平台客服助手
配置(一次性):
hermes gateway setup
→ 选择 Telegram + Discord + WhatsApp
→ 输入各平台 API Key
→ 配置 SOUL.md (客服助手人格定义)
→ 启动: hermes gateway start
工作流:
同时接收来自 3 个平台的 100 个用户消息
↓
Gateway 并发路由到 AIAgent 实例
↓
每个用户 ID 独立会话(自动隔离)
↓
根据对话历史 + Skill 做出回复
↓
结果同步回原平台
收益:
- 一套系统 = 3 个平台
- 用户体验一致(无论从哪个平台询问,看到的都是同一个助手)
- 月成本 ~500)
场景 3:研究数据生成
用途:为下一代 LLM 模型生成训练数据
Hermes 的角色:
调用 batch_runner.py
↓
生成 1000 条【问题 → 工具调用 → 结果】轨迹
↓
使用 Atropos RL 环境自动评价
↓
输出 ShareGPT 格式数据
↓
用于微调(Fine-tune)或 RL 训练
优势: 内置 RL framework = 不用自己实现评价函数、reward model
- 已验证的轨迹导出格式(兼容主流 LLM)
- 支持 GPU 加速评价
七、与其他 AI 智能体的对标
系统对比
| 维度 | Hermes | LangChain Agent | AutoGPT | MetaGPT |
|---|---|---|---|---|
| 自进化 | ✅ 自动 | ❌ 无 | ⚠️ 部分 | ⚠️ 项目级别 |
| 多平台网关 | ✅ 15+ | ❌ 无 | ❌ 无 | ❌ 无 |
| 记忆系统 | ✅ 丰富 | ⚠️ 基础 | ⚠️ 基础 | ⚠️ 基础 |
| 内置工具 | 47 个 | 200+ 集成 | 10 个 | 5 个 |
| 部署灵活性 | ✅ 6 种后端 | ⚠️ 2 种 | ⚠️ 本地+云 | ⚠️ 本地 |
| 成熟度 | ✅ 生产级 | ✅ 生产级 | ⚠️ 创新 | ⚠️ 创新 |
| 社区 | 43k Stars | 100k+ Stars | 16k Stars | 50k Stars |
| 学习曲线 | ⬇️ 友好 | ⬆️️ 陡 | ⬇️ 友好 | ⬆️️ 很陡 |
核心差异化
vs LangChain:
- Hermes = 完整产品(开箱即用)
- LangChain = 工具库(需要自己组装)
- 场景:LangChain 用于框架开发,Hermes 用于直接使用
vs AutoGPT:
- Hermes = 支持多模型、多平台、生产就绪
- AutoGPT = 主要演示概念、易出现任务漂移
- 场景:AutoGPT 用于研究/演示,Hermes 用于生产
vs MetaGPT:
- Hermes = 通用智能体框架
- MetaGPT = 专注多角色协作
- 场景:都开源,看具体需求(单独行动 → Hermes;多角色 → MetaGPT)
八、快速开始指南
安装(60 秒)
# 一行命令(支持 Linux, macOS, WSL2)
curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash
# 重新加载 shell
source ~/.bashrc # 或 source ~/.zshrc
# 第一次启动
hermes
发生了什么:
✅ 自动安装 Python 3.11
✅ 自动安装 Node.js(开发依赖)
✅ 自动解决所有依赖
✅ 创建 ~/.hermes/ 配置目录
基础命令
# 1. 开始对话
hermes
# 2. 选择模型
hermes model
# 输出选项:
# > 1) OpenRouter
# > 2) Nous Portal
# > 3) OpenAI
# > ...
# 3. 配置工具
hermes tools
# 选择开启/关闭的工具
# 4. 设置网关(多平台)
hermes gateway setup # 初始化
hermes gateway start # 启动
# 5. 查看技能
hermes skills / <skill-name>
# 6. 诊断问题
hermes doctor
首次配置流程
hermes setup # 完整设置向导
交互会引导你:
- 选择一个 LLM 提供商(OpenRouter/Anthropic/OpenAI)
- 粘贴 API Key
- 选择默认模型
- 选择启用的工具集
- (可选)配置网关平台
做完这些,需要 ≈ 3 分钟
九、Hermes 的局限与未来
当前局限
- 模型能力上限:自进化效果取决于底层 LLM(模型不好,技能也好不了)
- 工具调用成本:每个工具调用都有 LLM 推理成本(无法完全避免)
- 多平台延迟:跨时区/跨地域,网络延迟可能影响实时性
- 企业功能:当前缺少 RBAC、审计日志等企业级功能(但 roadmap 有计划)
发展趋势
基于 GitHub Issues 和讨论,未来方向:
| 功能 | 预期时间 | 用途 |
|---|---|---|
| 多代理协作 | 2026 年中 | 并行处理复杂问题 |
| 视觉模型原生支持 | 2026 年中 | multimodal 任务 |
| 企业 RBAC | 2026 年底 | 团队协作 |
| 本地 Embedding + 向量搜索 | 2026 年底 | 隐私保护 |
| GPU 加速工具执行 | 2026 年底 | 高性能计算 |
十、结论与建议
Hermes Agent 适合你吗?✅
适合的场景:
- ✅ 需要自动化复杂工作流的团队
- ✅ 想要一个跨平台 AI 助手的个人
- ✅ 在 AI 模型训练中需要数据生成的研究者
- ✅ 想体验最前沿 AI 代理技术的工程师
不太适合的场景:
- ❌ 只需要简单 AI 聊天的用户(ChatGPT 足够)
- ❌ 需要深度定制工作流的企业(可能需要 LangChain + 团队开发)
建议行动
Phase 1: 认知(本周)
- 阅读官方文档的 Quickstart 部分
- 在本地装一个试试 (
hermes命令) - 体验 3-5 个基础工具调用
Phase 2: 探索(第 2 周)
- 配置一个偏好的提供商(OpenRouter 最便宜)
- 尝试创建 1 个自定义 Skill
- 体验多轮对话的记忆能力
Phase 3: 生产(第 3 周+)
- 部署到云环境(Modal 最便宜)
- 配置 Telegram/Discord 网关
- 根据实际需求集成特定工具
十一、参考资源
官方资源
核心技术文章
学习路径
- 快速入门(30 分钟):Quickstart 示例 + 首次安装
- 概念理解(2 小时):本文 + 官方 Key Features
- 实战操作(1 天):部署 + 配置 + 创建自定义工具
- 深度研究(持续):发牌自定义 Skill、参与社区
十二、致谢与声明
本文基于:
- 📌 Hermes Agent 官方文档 (hermes-agent.nousresearch.com/)
- 📌 GitHub 项目主页 (github.com/NousResearc…)
- 📌 Nous Research 官方发布信息
- 📌 社区反馈和讨论
文章定位:技术科普 + 新手入门指南,面向对 AI Agent 感兴趣但缺乏深入了解的开发者和研究者。
常见问题 (FAQ)
Q1: Hermes 需要 GPU 吗?
A: 不需要(除非你本地运行大模型)。Hermes 只是提示编排器,真正的推理可以在任何 LLM 提供商(OpenRouter、Anthropic 等)进行,通过 API 调用。
Q2: 和 ChatGPT + Plugins 有什么区别?
A:
- ChatGPT Plugins = 被动选择,修复的工具集合
- Hermes = 主动学习、记忆积累、工作流编排的自进化系统
Q3: 用的多是不是会变得越来越贵?
A: 相反!使用得多,系统生成的 Skills 越多,下次任务成本越低。Hermes 还有自动上下文压缩,长对话成本不会失控。
Q4: 可以离线使用吗?
A: 部分可以(终端操作、执行代码),但 LLM 推理部分需要网络(调用 API)。可以与本地 LLM(Ollama/vLLM)配合离线运行。
Q5: 支持商业使用吗?
A: 是的,MIT License 完全允许商业使用。只需在代码中保留 MIT 许可证文本。