Hermes Agent 框架¶
Hermes Agent 是由 Nous Research 开发的开源 AI Agent 框架。它被设计为一个自我改进、持久化的 AI 助手,可以跨多个平台运行并从经验中学习。
什么是 Hermes Agent?¶
Hermes Agent 属于一类被称为**自主代理(Autonomous Agent)**的新型 AI 工具。与传统的聊天机器人只能回答问题不同,Hermes 可以:
- 执行任务 — 运行 Shell 命令、读写文件、浏览网页
- 从经验中学习 — 将可复用的流程保存为"技能(Skills)"
- 记住上下文 — 跨会话保持持久化记忆
- 随处运行 — 终端、Telegram、Discord、Slack、WhatsApp 等
核心差异¶
| 特性 | 传统聊天机器人 | Hermes Agent |
|---|---|---|
| 工具访问 | ❌ 无 | ✅ 68+ 内置工具 |
| 记忆 | ❌ 每次重置 | ✅ 跨会话持久化 |
| 学习 | ❌ 静态 | ✅ 从经验中创建技能 |
| 平台 | ❌ 单一界面 | ✅ 15+ 平台 |
| 可定制性 | ❌ 有限 | ✅ 完全控制 |
核心架构¶
1. Agent 循环¶
Hermes 的核心是**对话循环**:
┌─────────────────────────────────────────────────────────────┐
│ Agent 循环 │
├─────────────────────────────────────────────────────────────┤
│ 1. 构建系统提示词 │
│ ├── 加载人设 (SOUL.md) │
│ ├── 注入记忆 │
│ ├── 加载技能 │
│ └── 添加工具 Schema │
│ │
│ 2. 调用 LLM │
│ ├── 发送消息 + 工具 Schema │
│ └── 接收响应(文本或 tool_calls) │
│ │
│ 3. 处理响应 │
│ ├── 如果是 tool_calls → 执行工具 → 追加结果 │
│ └── 如果是文本 → 返回给用户 │
│ │
│ 4. 循环直到完成或达到 max_turns │
└─────────────────────────────────────────────────────────────┘
2. 工具系统¶
Hermes 拥有 68+ 内置工具,按工具集组织:
| 工具集 | 工具 | 描述 |
|---|---|---|
terminal |
Shell 命令 | 执行 bash/zsh 命令 |
file |
read_file, write_file, patch | 文件操作 |
web |
web_search, web_extract | 网页访问 |
browser |
browser_navigate, browser_click | 浏览器自动化 |
vision |
vision_analyze | 图像分析 |
memory |
memory save/load | 持久化记忆 |
skills |
skill_manage, skill_view | 技能管理 |
delegation |
delegate_task | 子代理生成 |
cronjob |
cronjob create/list | 定时任务 |
3. 技能系统¶
技能是 Hermes 从经验中创建的**可复用流程**:
~/.hermes/skills/
├── devops/
│ ├── docker/
│ │ └── SKILL.md
│ └── kubernetes/
│ └── SKILL.md
├── programming/
│ ├── python-debugging/
│ │ └── SKILL.md
│ └── git-workflow/
│ └── SKILL.md
└── research/
└── paper-analysis/
└── SKILL.md
技能文件示例:
---
name: python-debugging
description: 有效调试 Python 应用程序
tags: [python, debugging, pdb]
---
# Python 调试指南
## 使用场景
- 应用崩溃
- 意外行为
- 性能问题
## 步骤
1. 阅读错误追踪信息
2. 使用 `pdb` 设置断点
3. 检查变量
4. 修复问题
## 常见陷阱
- 忘记导入模块
- 类型不匹配
- 偏移量错误
4. 记忆系统¶
Hermes 维护跨会话的**持久化记忆**:
# 用户档案(你是谁)
user:
name: "Alice"
role: "ML 工程师"
preferences:
language: "Python"
editor: "VS Code"
# 记忆(环境事实)
memory:
- "项目使用 PyTorch 2.0"
- "部署在 AWS EC2"
- "使用 pytest 测试"
记忆会注入到每次对话中,因此 Hermes 能记住: - 你的偏好和习惯 - 项目细节和约定 - 从过去会话中学到的经验
5. 多平台网关¶
同一个代理可以运行在多个平台上:
┌─────────────────────────────────────────────────────────────┐
│ 网关架构 │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Telegram │ │ Discord │ │ Slack │ │ WhatsApp │ │
│ └────┬─────┘ └────┬─────┘ └────┬─────┘ └────┬─────┘ │
│ │ │ │ │ │
│ └─────────────┼─────────────┼─────────────┘ │
│ │ │ │
│ ▼ ▼ │
│ ┌───────────────────────────┐ │
│ │ 网关服务器 │ │
│ │ (消息路由) │ │
│ └───────────┬───────────────┘ │
│ │ │
│ ▼ │
│ ┌───────────────────────────┐ │
│ │ Agent 核心 │ │
│ │ (共享 Agent 循环) │ │
│ └───────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘
工作原理:逐步解析¶
第 1 步:用户输入¶
当你发送消息时(通过终端、Telegram 等):
第 2 步:构建系统提示词¶
Hermes 构建包含以下内容的系统提示词:
你是 Hermes Agent,一个 AI 助手...
## 记忆
- 用户是 Python 开发者
- 项目使用 FastAPI
## 可用技能
- python-debugging: 调试 Python 应用
- git-workflow: Git 最佳实践
## 可用工具
- terminal: 运行 Shell 命令
- file: 读写文件
- vision: 分析图像
第 3 步:调用 LLM¶
Hermes 使用以下参数调用 LLM:
{
"model": "claude-sonnet-4",
"messages": [
{"role": "system", "content": "..."},
{"role": "user", "content": "帮我调试这个 Python 脚本"}
],
"tools": [...]
}
第 4 步:工具执行¶
如果 LLM 请求工具:
Hermes 执行它并返回结果:
{
"role": "tool",
"content": "Traceback (most recent call last):\n File \"script.py\", line 5\n ..."
}
第 5 步:生成响应¶
LLM 基于工具输出生成响应:
核心概念¶
1. 自我改进¶
Hermes 通过创建技能来学习:
用户: "你是怎么修复那个 bug 的?"
Agent: "让我把这个保存为技能..."
→ 创建 ~/.hermes/skills/debugging/syntax-error.md
→ 下次自动加载这个技能
2. 上下文压缩¶
当对话变长时,Hermes 会压缩上下文:
这使得对话可管理,同时不丢失重要信息。
3. 任务委派¶
Hermes 可以生成子代理进行并行工作:
4. 凭证池¶
多个 API 密钥自动轮换:
# ~/.hermes/.env
OPENROUTER_API_KEY_1=sk-...
OPENROUTER_API_KEY_2=sk-...
OPENROUTER_API_KEY_3=sk-...
Hermes 在它们之间轮换以避免速率限制。
架构图¶
┌─────────────────────────────────────────────────────────────┐
│ Hermes Agent 架构 │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 用户界面层 │ │
│ │ 终端 │ Telegram │ Discord │ Slack │ WhatsApp │ │
│ └─────────────────────┬───────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 网关层 │ │
│ │ (消息路由和平台适配器) │ │
│ └─────────────────────┬───────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Agent 核心 │ │
│ │ ┌─────────────────────────────────────────────┐ │ │
│ │ │ 对话循环 │ │ │
│ │ │ 构建提示 → 调用 LLM → 处理响应 │ │ │
│ │ └─────────────────────────────────────────────┘ │ │
│ │ │ │ │
│ │ ┌─────────────────────┼─────────────────────┐ │ │
│ │ │ ▼ │ │ │
│ │ │ ┌─────────────────────────────────────┐ │ │ │
│ │ │ │ 工具调度 │ │ │ │
│ │ │ │ terminal │ file │ web │ browser │ … │ │ │ │
│ │ │ └─────────────────────────────────────┘ │ │ │
│ │ └───────────────────────────────────────────┘ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │ │
│ ┌─────────────────────┼─────────────────────┐ │
│ │ ▼ │ │
│ │ ┌─────────────────────────────────────┐ │ │
│ │ │ 持久化存储 │ │ │
│ │ │ 记忆 │ 技能 │ 会话 │ 配置 │ │ │
│ │ └─────────────────────────────────────┘ │ │
│ └───────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘
使用场景¶
1. 软件开发¶
2. 研究¶
3. 系统管理¶
与其他框架的比较¶
| 特性 | Hermes Agent | Claude Code | AutoGPT |
|---|---|---|---|
| 自我改进技能 | ✅ | ❌ | ❌ |
| 持久化记忆 | ✅ | ❌ | ❌ |
| 多平台 | ✅ 15+ | ❌ 仅终端 | ❌ 仅网页 |
| 提供商无关 | ✅ 20+ | ❌ 仅 Anthropic | ✅ OpenAI |
| 开源 | ✅ MIT | ❌ 专有 | ✅ MIT |
| 本地模型 | ✅ | ❌ | ✅ |
快速开始¶
安装¶
curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash
首次运行¶
配置¶
下一步¶
- CLI 参考 — 所有命令和标志
- 配置指南 — 详细配置选项
- 工具系统 — 工具如何工作
- 技能系统 — 创建和使用技能
- 记忆系统 — 持久化记忆
- 网关设置 — 多平台部署
- 贡献指南 — 扩展 Hermes