Hermes Agent 开发指南:构建企业级 AI Agent 平台

什么是 Hermes?

Hermes 是一个强大的 AI Agent 开发框架,专为构建企业级 AI 助手而设计。它提供了:

  • 🤖 多 Agent 协作能力
  • 🔧 丰富的工具集成
  • 💾 持久化记忆系统
  • 🎯 技能系统(Skills)
  • 📊 任务管理和调度
  • 🔌 多平台适配(CLI、Web、IM)

核心架构

1. Agent 架构

1
2
3
4
5
6
7
Hermes Agent
├── Core Engine # 核心引擎
├── Tool System # 工具系统
├── Memory System # 记忆系统
├── Skill System # 技能系统
├── Session Manager # 会话管理
└── Platform Adapter # 平台适配

2. 工具系统

Hermes 提供丰富的内置工具:

工具集 功能
browser 浏览器操作(导航、截图、交互)
terminal 命令行执行、脚本运行
file 文件读写、搜索、编辑
web 网络请求、API 调用
search 搜索引擎、信息检索
vision 图像识别、视觉理解
cronjob 定时任务、调度管理

快速开始

安装配置

1
2
3
4
5
6
7
8
9
# 克隆项目
git clone https://github.com/nousresearch/hermes.git
cd hermes

# 安装依赖
npm install

# 配置
cp config.example.yaml config.yaml

配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# config.yaml
model:
provider: openrouter
model: anthropic/claude-sonnet-4

providers:
openrouter:
api_key: ${OPENROUTER_API_KEY}
base_url: https://openrouter.ai/api/v1

agents:
defaults:
tools:
- browser
- terminal
- file
- web
max_tokens: 4096
temperature: 0.7

启动 Agent

1
2
3
4
5
6
7
8
# CLI 模式
hermes

# 指定配置
hermes --config config.yaml

# Web 模式
hermes web --port 3000

实战案例

案例 1:构建开发助手

创建一个能帮助开发的 Agent:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# skills/dev-assistant/SKILL.md

---
name: dev-assistant
description: AI 开发助手,帮助代码开发和调试
triggers:
- 开发
- 写代码
- debug
---

# 开发助手

## 能力
1. 代码生成和优化
2. 代码审查
3. Bug 调试
4. 测试生成
5. 文档编写

## 工作流程

### 代码生成
1. 理解需求
2. 设计方案
3. 生成代码
4. 运行测试
5. 优化改进

### Bug 调试
1. 分析错误信息
2. 定位问题代码
3. 提出修复方案
4. 实施修复
5. 验证修复

使用

1
2
3
4
5
6
7
8
9
# 用户:帮我创建一个用户登录 API
hermes> 帮我创建一个用户登录 API

# Agent 会自动:
# 1. 创建 API 接口
# 2. 添加参数验证
# 3. 实现认证逻辑
# 4. 生成测试代码
# 5. 编写 API 文档

案例 2:多 Agent 协作

使用 delegate_task 创建多 Agent 协作:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# 代码审查流程
from hermes import Agent, Task

# 创建专家 Agent
architect = Agent(
role="架构师",
goal="审查架构设计",
tools=["file", "search"]
)

reviewer = Agent(
role="代码审查员",
goal="检查代码质量",
tools=["file", "search"]
)

tester = Agent(
role="测试工程师",
goal="验证测试覆盖",
tools=["terminal", "file"]
)

# 分配任务
tasks = [
Task(
description="审查项目架构",
agent=architect
),
Task(
description="检查代码质量",
agent=reviewer
),
Task(
description="验证测试覆盖",
agent=tester
)
]

# 执行
result = delegate_task(tasks=tasks)

案例 3:创建自动化工作流

使用 Cronjob 创建定时任务:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 创建日报生成任务
cronjob(
action='create',
name='daily-report',
schedule='0 9 * * *', # 每天早上 9 点
prompt="""
生成今日工作日报:
1. 统计 Git 提交记录
2. 分析任务完成情况
3. 生成进度报告
4. 发送到团队群
""",
skills=['git-analyzer', 'report-generator'],
deliver='telegram:team_group'
)

技能系统(Skills)

创建自定义技能

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# skills/code-review/SKILL.md

---
name: code-review
description: 代码审查技能
triggers:
- 审查代码
- code review
---

# 代码审查流程

## 触发条件
用户请求审查代码

## 执行步骤

### 1. 收集代码
使用 `search_files` 搜索需要审查的文件

### 2. 静态分析
- 检查代码规范
- 检查潜在 Bug
- 检查安全问题

### 3. 生成报告
输出格式化的审查报告

## 输出模板

```markdown
# 代码审查报告

## 概览
- 文件数:X
- 问题数:Y
- 严重程度:高/中/低

## 问题列表

### 文件:src/api/users.js
- ⚠️ Line 45: 潜在的 SQL 注入风险
- 💡 Line 78: 建议使用异步方法
- ✅ Line 92: 良好的错误处理

## 改进建议
...
1
2
3
4
5
6
7
8
9
10

### 使用技能

```bash
# 方式一:直接调用
hermes> 使用 code-review 技能审查 src/api 目录

# 方式二:自动触发
hermes> 审查一下最近的代码改动
# Agent 会自动识别并加载 code-review 技能

记忆系统

用户记忆(User Memory)

存储用户偏好和习惯:

1
2
3
4
5
memory(
action='add',
target='user',
content='用户偏好简洁的回复风格'
)

会话记忆(Session Memory)

自动保存会话历史:

1
2
3
4
5
# 搜索历史会话
session_search(
query="讨论过的架构方案",
limit=3
)

持久化技能(Skill Memory)

保存可复用的程序:

1
2
3
4
5
6
# 创建技能
skill_manage(
action='create',
name='api-generator',
content='快速生成 REST API 的模板'
)

平台适配

Telegram Bot

1
2
3
4
5
6
7
# config.yaml
platforms:
telegram:
enabled: true
bot_token: ${TELEGRAM_BOT_TOKEN}
allowed_users:
- 123456789

Discord Bot

1
2
3
4
5
6
7
platforms:
discord:
enabled: true
bot_token: ${DISCORD_BOT_TOKEN}
channels:
- "engineering"
- "general"

Web Interface

1
2
3
4
5
# 启动 Web 界面
hermes web --port 3000

# 访问
open http://localhost:3000

高级功能

1. 子任务委托

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
delegate_task(
tasks=[
{
"goal": "分析用户需求",
"toolsets": ["web", "search"]
},
{
"goal": "设计技术方案",
"toolsets": ["file", "search"]
},
{
"goal": "实现代码",
"toolsets": ["terminal", "file"]
}
],
role="orchestrator" # 编排者模式
)

2. 流式执行

1
2
3
4
5
6
# 实时输出执行过程
result = agent.run(
prompt="重构整个项目",
stream=True,
on_progress=lambda x: print(x)
)

3. 上下文压缩

1
2
3
4
5
6
agents:
defaults:
compaction:
enabled: true
reserveTokensFloor: 20000
strategy: summarize

最佳实践

1. 技能设计原则

  • 单一职责:每个技能专注一件事
  • 可复用:设计通用的技能模板
  • 可测试:包含验证步骤
  • 文档化:清晰的使用说明

2. 工具使用规范

1
2
3
4
5
6
7
8
9
10
11
12
13
# ✅ 好的实践
# 明确指定工具
Agent(
tools=["file", "search"], # 只启用需要的工具
...
)

# ❌ 不好的实践
# 启用所有工具(性能差、成本高)
Agent(
tools="all",
...
)

3. 错误处理

1
2
3
4
5
6
7
8
9
try:
result = agent.run(prompt)
except TokenLimitExceeded:
# 压缩上下文
agent.compact()
result = agent.run(prompt)
except ToolExecutionError as e:
# 回退或重试
logger.error(f"Tool error: {e}")

性能优化

1. Token 优化

  • 使用 reserveTokensFloor 保留缓冲
  • 定期压缩上下文
  • 使用 .hermesignore 排除大文件

2. 并发控制

1
2
3
delegation:
max_concurrent_children: 3 # 最多 3 个并发子任务
max_spawn_depth: 1 # 限制嵌套深度

3. 缓存策略

1
2
3
4
cache:
enabled: true
ttl: 3600 # 1 小时
maxSize: 100MB

与 CrewAI 对比

特性 Hermes CrewAI
企业级 ✅ 完整框架 ⚠️ 需要自己扩展
记忆系统 ✅ 内置 ⚠️ 需要配置
技能系统 ✅ 强大 ❌ 无
多平台 ✅ 支持 ❌ 无
工具数量 50+ 20+
学习曲线 中等 简单

总结

Hermes 是构建企业级 AI Agent 的最佳选择:

  • ✅ 开箱即用的完整方案
  • ✅ 强大的工具和技能系统
  • ✅ 灵活的多 Agent 协作
  • ✅ 持久化记忆和会话管理
  • ✅ 多平台适配

推荐资源


下一步:尝试用 Hermes 构建你的第一个 AI Agent!