Hermes Agent ☤
The agent that grows with you — 由 Nous Research 开发的自我进化 AI Agent
项目定位
Hermes Agent 是一个具有内置学习循环的 AI Agent 框架:
- 从经验中创建 Skills(技能)
- 使用过程中自动改进 Skills
- 主动持久化知识到 Memory
- 搜索历史对话(跨会话召回)
- 跨会话构建用户画像
核心差异化:不是简单的 LLM Wrapper,而是一个持续学习的 Agent 系统。
技术栈
| 层级 | 技术 |
|---|---|
| 语言 | Python 3.11 |
| TUI | Ink (React) + TypeScript |
| 数据库 | SQLite + FTS5(全文搜索) |
| 包管理 | uv (Astral) |
| 容器化 | Docker, Nix, Singularity |
| CI/CD | GitHub Actions |
| 测试 | Pytest (~17k tests, ~900 files) |
| RL训练 | Atropos |
| 文档 | Docusaurus |
系统架构
graph TB
subgraph "入口层"
CLI[CLI Terminal]
TUI[TUI - Ink/React]
GW[Gateway 消息网关]
end
subgraph "核心引擎"
AA[AIAgent<br/>run_agent.py ~12k LOC]
MT[Model Tools<br/>工具编排]
TS[Toolsets<br/>工具集定义]
end
subgraph "平台适配"
TG[Telegram]
DC[Discord]
SL[Slack]
WA[WhatsApp]
SIG[Signal]
EMAIL[Email]
MORE[更多...]
end
subgraph "终端后端"
LOCAL[Local]
DOCKER[Docker]
SSH[SSH]
MODAL[Modal]
DAYTONA[Daytona]
SING[Singularity]
end
subgraph "学习系统"
MEM[Memory<br/>持久记忆]
SKILL[Skills<br/>程序性记忆]
SS[Session Search<br/>FTS5]
UPROF[User Profile<br/>用户画像]
end
subgraph "扩展系统"
MCP[MCP Servers]
PLUG[Plugins]
CRON[Cron Scheduler]
SUB[Subagents]
end
CLI --> AA
TUI --> AA
GW --> TG & DC & SL & WA & SIG & EMAIL
AA --> MT --> TS
AA --> MEM & SKILL & SS & UPROF
AA --> MCP & PLUG & CRON & SUB
TS --> LOCAL & DOCKER & SSH & MODAL & DAYTONA & SING
核心模块
1. AIAgent (run_agent.py)
- 核心对话循环,约 12k 行代码
- 初始化参数约 60 个(凭证、路由、回调、会话上下文、预算等)
- 支持多 Provider 切换(OpenRouter 200+ 模型、OpenAI、Anthropic、NVIDIA NIM 等)
2. Model Tools (model_tools.py)
- 工具编排层
discover_builtin_tools()— 工具发现handle_function_call()— 函数调用处理- 动态工具注册机制
3. Gateway (gateway/)
- 多平台消息网关
- 统一消息处理:Telegram、Discord、Slack、WhatsApp、Signal、Email、微信、钉钉等
- 平台适配器模式(base.py + 各平台实现)
4. Skills System (skills/)
- 程序性记忆 — 可复用的任务执行流程
- 使用过程中自动改进
- 支持 Skills Hub (agentskills.io) 开放标准
5. Memory System (agent/)
- 持久化记忆 — 跨会话保持
- 定期 nudge 机制主动保存知识
- User Profile 构建
6. Session Search (hermes_state.py)
- SQLite + FTS5 全文搜索
- LLM 摘要的跨会话召回
7. Terminal Backends (tools/environments/)
- 7 种终端后端:Local、Docker、SSH、Singularity、Modal、Daytona、Vercel Sandbox
- Modal/Daytona 支持 Serverless 持久化(休眠唤醒)
请求链路
sequenceDiagram
participant U as 用户
participant CLI as CLI/Gateway
participant Agent as AIAgent
participant Model as LLM Provider
participant Tools as Tool System
participant Memory as Memory/Skills
U->>CLI: 发送消息
CLI->>Agent: 转发请求
Agent->>Memory: 加载上下文(Memory+Skills+Profile)
Agent->>Model: 调用 LLM
Model-->>Agent: 返回响应/工具调用
loop 工具调用循环(max 90次)
Agent->>Tools: 执行工具
Tools-->>Agent: 返回结果
Agent->>Model: 继续对话
Model-->>Agent: 返回响应/更多工具调用
end
Agent->>Memory: 保存会话记忆
Agent-->>CLI: 返回最终响应
CLI-->>U: 展示结果
数据流
graph LR
subgraph "输入"
CLI_IN[CLI输入]
MSG_IN[消息平台输入]
VOICE[语音备忘录]
end
subgraph "处理"
PARSE[解析]
CONTEXT[上下文组装]
LLM[LLM推理]
TOOLS[工具执行]
end
subgraph "存储"
CONFIG[config.yaml]
MEMORY[MEMORY.md]
SESSION[SQLite Sessions]
SKILLS[Skills文件]
end
subgraph "输出"
TEXT[文本响应]
TTS[语音合成]
CRON_OUT[Cron任务]
end
CLI_IN & MSG_IN & VOICE --> PARSE --> CONTEXT --> LLM --> TOOLS
CONFIG --> CONTEXT
MEMORY --> CONTEXT
SESSION --> CONTEXT
SKILLS --> CONTEXT
TOOLS --> SESSION
LLM --> MEMORY
LLM --> TEXT & TTS & CRON_OUT
核心设计思想
1. 闭环学习 (Closed Learning Loop)
经验 → 技能创建 → 使用中改进 → 持久化 → 跨会话复用
- 不是无状态的问答,而是持续积累的系统
- Skills 自动从复杂任务中提取
- Memory 定期 nudge 保存
2. 平台无关 (Platform Agnostic)
- 单一 Gateway 进程支持所有平台
- 适配器模式,易于扩展新平台
- CLI 和消息平台共享命令体系
3. Provider 无关 (Provider Agnostic)
- 支持 200+ 模型(通过 OpenRouter)
hermes model一键切换,无代码改动- 无厂商锁定
4. 环境抽象 (Environment Abstraction)
- 7 种终端后端统一接口
- 从 $5 VPS 到 GPU 集群,从本地到 Serverless
- Daytona/Modal 实现休眠唤醒,闲置零成本
5. 安全优先 (Security First)
- 命令审批机制
- DM 配对
- 容器隔离
- Profile 隔离(多用户/多场景)
6. 可扩展性 (Extensibility)
- Plugin 系统(Memory、Context Engine、Model Providers 等)
- MCP 协议集成
- Skills 开放标准 (agentskills.io)
- Cron 调度器
关键目录结构
hermes-agent/
├── run_agent.py # AIAgent 核心类 (~12k LOC)
├── model_tools.py # 工具编排
├── toolsets.py # 工具集定义
├── cli.py # CLI 交互 (~11k LOC)
├── hermes_state.py # SQLite 会话存储 (FTS5)
├── agent/ # Agent 内部实现
├── hermes_cli/ # CLI 子命令
├── tools/ # 工具实现 (auto-discovered)
│ └── environments/ # 终端后端
├── gateway/ # 消息网关
│ └── platforms/ # 平台适配器
├── plugins/ # 插件系统
├── skills/ # 内置 Skills
├── cron/ # 调度器
├── environments/ # RL 训练环境 (Atropos)
├── ui-tui/ # Ink TUI
└── tests/ # 测试 (~17k tests)
安装与使用
快速安装
# Linux/macOS/WSL2/Termux
curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash
# Windows PowerShell
irm https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.ps1 | iex
常用命令
hermes # 启动交互式 CLI
hermes model # 选择 LLM Provider 和模型
hermes tools # 配置启用的工具
hermes gateway # 启动消息网关
hermes setup # 完整设置向导
hermes update # 更新到最新版本
hermes doctor # 诊断问题
Tradeoff 分析
| 优势 | 代价 |
|---|---|
| 闭环学习,持续进化 | 系统复杂度高 |
| 多平台统一入口 | Gateway 维护成本 |
| Provider 无关 | 需要适配不同 API 格式 |
| 7种终端后端 | 环境测试矩阵大 |
| 17k+ 测试 | CI 时间长 |
| 安全机制完善 | 用户体验有审批摩擦 |
可复用模式
- 适配器模式 — Gateway 平台适配、终端后端适配
- 注册表模式 — 工具自动发现 (
registry.py) - Profile 隔离 — 多用户/多场景配置隔离
- 闭环学习 — 经验→技能→改进→持久化
- FTS5 搜索 — SQLite 全文搜索 + LLM 摘要
- Nudge 机制 — 主动提醒 Agent 保存知识
值得学习的重点
- Agent 架构设计 — 如何构建可持续学习的 Agent 系统
- 工具系统设计 — 自动发现、动态注册、工具集管理
- 多平台统一 — 一套代码支持 10+ 消息平台
- 安全模型 — 命令审批、容器隔离、Profile 隔离
- 测试策略 — 17k 测试的 CI/CD 实践
- RL 集成 — Atropos 训练环境设计
相关链接
- 📖 官方文档
- 💬 Discord
- 🎯 Skills Hub
- 🔑 Nous Portal