My Blog
← Back to home

NousResearch Hermes Agent 深度分析

NousResearch Hermes Agent 深度分析

The agent that grows with you — 一个会自我进化的 AI Agent 系统


一、项目概况

维度 详情
仓库 NousResearch/hermes-agent
Stars 118k+ (GitHub 顶级开源 AI 项目)
Forks 17.4k
语言 Python 87.5%, TypeScript 8.8%
许可证 MIT
最新版本 v0.11.0 (2026.4.23)
提交数 5,974+ commits
开发方 Nous Research — Hermes/Nomos/Psyche 模型背后的实验室

一句话定位

不是一个绑定在 IDE 里的编程助手,也不是包装单个 API 的聊天机器人。 它是一个自主 Agent,运行你的服务器上,记住学到的东西,运行越久越强大。


二、核心特性

2.1 闭环学习系统(核心差异化)

Hermes 是唯一内置学习循环的 Agent:

  • Agent 策展记忆:自动整理和持久化知识,定期提醒保存
  • 自主技能创建:完成复杂任务后自动生成可复用技能
  • 技能自我进化:技能在使用过程中自我改进
  • FTS5 跨会话搜索:SQLite 全文搜索 + LLM 摘要,实现跨会话回忆
  • Honcho 辩证用户建模:构建越来越深的用户理解模型
  • 兼容 agentskills.io 开放标准:技能可移植、可分享

2.2 模型无关(无供应商锁定)

支持任意模型,一条命令切换:

提供商 说明
Nous Portal Nous 自有平台
OpenRouter 200+ 模型
NVIDIA NIM Nemotron 系列
Xiaomi MiMo 小米模型
z.ai / GLM 智谱模型
Kimi / Moonshot 月之暗面
MiniMax MiniMax 模型
Hugging Face 开源模型
OpenAI GPT 系列
自定义端点 任意 OpenAI 兼容 API
hermes model  # 交互式切换模型,无需改代码

2.3 多平台消息网关

18 个平台适配器,单一网关进程统一接入:

平台 状态
CLI (TUI) ✅ 完整终端界面
Telegram
Discord
Slack
WhatsApp
Signal
Matrix
Mattermost
Email
SMS
DingTalk (钉钉)
Feishu (飞书)
WeCom (企业微信)
BlueBubbles (iMessage)
QQBot
Home Assistant
Webhook
API Server

跨平台对话连续性:从 Telegram 开始,在 CLI 继续,上下文不丢失。

2.4 六种终端后端

Agent 可以在任何环境中执行命令:

后端 特点
Local 本地执行
Docker 容器隔离
SSH 远程服务器
Daytona 无服务器持久化(空闲时休眠,按需唤醒)
Singularity HPC 容器
Modal 无服务器 GPU 集群

2.5 定时自动化

内置 Cron 调度器,自然语言定义定时任务:

  • 每日报告
  • 夜间备份
  • 每周审计
  • 自动投递到任意平台

2.6 委托与并行

  • 生成隔离的子 Agent 处理并行工作流
  • 通过 execute_code 用 Python RPC 调用工具
  • 多步骤流水线折叠为零上下文成本的单次推理

2.7 研究就绪

  • 批量轨迹生成
  • Atropos RL 训练环境
  • 轨迹压缩(用于训练下一代工具调用模型)

三、系统架构

3.1 整体架构图

┌─────────────────────────────────────────────────────────────────────┐
│                        入口层 (Entry Points)                          │
│                                                                      │
│  CLI (cli.py)    Gateway (gateway/run.py)    ACP (acp_adapter/)     │
│  Batch Runner    API Server                  Python Library          │
└──────────┬──────────────┬───────────────────────┬───────────────────┘
           │              │                       │
           ▼              ▼                       ▼
┌─────────────────────────────────────────────────────────────────────┐
│                     AIAgent (run_agent.py)                          │
│                        核心对话引擎 (~10,700 行)                       │
│                                                                     │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐               │
│  │ Prompt       │  │ Provider     │  │ Tool         │               │
│  │ Builder      │  │ Resolution   │  │ Dispatch     │               │
│  └──────┬───────┘  └──────┬───────┘  └──────┬───────┘               │
│         │                 │                 │                       │
│  ┌──────┴───────┐  ┌──────┴───────┐  ┌──────┴───────┐               │
│  │ Compression  │  │ 3 API Modes  │  │ Tool Registry│               │
│  │ & Caching    │  │ chat_compl.  │  │ 47 tools     │               │
│  │              │  │ codex_resp.  │  │ 19 toolsets  │               │
│  │              │  │ anthropic    │  │              │               │
│  └──────────────┘  └──────────────┘  └──────────────┘               │
└─────────┴─────────────────┴─────────────────┴───────────────────────┘
           │                                    │
           ▼                                    ▼
┌───────────────────┐              ┌──────────────────────┐
│ Session Storage   │              │ Tool Backends         │
│ (SQLite + FTS5)   │              │ Terminal (6 backends) │
│                   │              │ Browser (5 backends)  │
│                   │              │ Web (4 backends)      │
│                   │              │ MCP (dynamic)         │
└──────────────────┘              └──────────────────────┘

3.2 目录结构

hermes-agent/
├── run_agent.py              # AIAgent — 核心对话循环 (~10,700 行)
├── cli.py                    # HermesCLI — 交互式终端 UI (~10,000 行)
├── model_tools.py            # 工具发现、Schema 收集、分发
├── toolsets.py               # 工具分组和平台预设
├── hermes_state.py           # SQLite 会话/状态数据库 + FTS5
├── hermes_constants.py       # HERMES_HOME, profile 感知路径
├── batch_runner.py           # 批量轨迹生成
│
├── agent/                    # Agent 内部逻辑
│   ├── prompt_builder.py     # 系统提示词组装
│   ├── context_engine.py     # ContextEngine 抽象类(可插拔)
│   ├── context_compressor.py # 默认引擎 — 有损摘要
│   ├── prompt_caching.py     # Anthropic 提示词缓存
│   ├── auxiliary_client.py   # 辅助 LLM(视觉、摘要)
│   ├── model_metadata.py     # 模型上下文长度、Token 估算
│   ├── memory_manager.py     # 记忆管理编排
│   ├── memory_provider.py    # 记忆提供者抽象类
│   └── trajectory.py         # 轨迹保存助手
│
├── hermes_cli/               # CLI 子命令和设置
│   ├── main.py               # 入口 — 所有 `hermes` 子命令 (~6,000 行)
│   ├── config.py             # 默认配置、可选环境变量、迁移
│   ├── commands.py           # 命令注册表 — 中心斜杠命令定义
│   ├── auth.py               # 提供者注册表、凭证解析
│   ├── runtime_provider.py   # Provider → api_mode + 凭证
│   ├── setup.py              # 交互式设置向导 (~3,100 行)
│   ├── plugins.py            # PluginManager — 发现、加载、钩子
│   └── gateway.py            # hermes gateway start/stop
│
├── tools/                    # 工具实现(每个工具一个文件)
│   ├── registry.py           # 中心工具注册表
│   ├── approval.py           # 危险命令检测
│   ├── terminal_tool.py      # 终端编排
│   ├── file_tools.py         # read_file, write_file, patch, search
│   ├── web_tools.py          # web_search, web_extract
│   ├── browser_tool.py       # 10 个浏览器自动化工具
│   ├── code_execution_tool.py # execute_code 沙箱
│   ├── delegate_tool.py      # 子 Agent 委托
│   ├── mcp_tool.py           # MCP 客户端 (~2,200 行)
│   └── environments/         # 终端后端 (local, docker, ssh, modal, daytona, singularity)
│
├── gateway/                  # 消息平台网关
│   ├── run.py                # GatewayRunner — 消息分发 (~9,000 行)
│   ├── session.py            # SessionStore — 对话持久化
│   ├── delivery.py           # 出站消息投递
│   ├── pairing.py            # DM 配对授权
│   ├── hooks.py              # 钩子发现和生命周期事件
│   └── platforms/            # 18 个适配器
│
├── cron/                     # 调度器 (jobs.py, scheduler.py)
├── acp_adapter/              # ACP 服务器 (VS Code / Zed / JetBrains)
├── plugins/                  # 插件系统
│   ├── memory/               # 记忆提供者插件
│   └── context_engine/       # 上下文引擎插件
├── environments/             # RL 训练环境 (Atropos)
├── skills/                   # 内置技能(始终可用)
├── optional-skills/          # 官方可选技能(显式安装)
├── website/                  # Docusaurus 文档站点
└── tests/                    # Pytest 套件 (~3,000+ 测试)

3.3 数据流

CLI 会话流

用户输入 → HermesCLI.process_input()
  → AIAgent.run_conversation()
    → prompt_builder.build_system_prompt()
    → runtime_provider.resolve_runtime_provider()
    → API 调用 (chat_completions / codex_responses / anthropic_messages)
    → 有 tool_calls? → model_tools.handle_function_call() → 循环
    → 最终响应 → 显示 → 保存到 SessionDB

网关消息流

平台事件 → Adapter.on_message() → MessageEvent
  → GatewayRunner._handle_message()
    → 授权用户
    → 解析会话键
    → 创建带会话历史的 AIAgent
    → AIAgent.run_conversation()
    → 通过适配器返回响应

Cron 任务流

调度器 tick → 从 jobs.json 加载到期任务
  → 创建全新 AIAgent(无历史)
  → 注入附加技能作为上下文
  → 运行任务提示词
  → 投递响应到目标平台
  → 更新任务状态和 next_run

四、工具系统

4.1 工具注册表

  • 47 个注册工具,分布在 19 个工具集
  • 每个工具文件在导入时自动注册(registry.register()
  • 注册表处理 Schema 收集、分发、可用性检查、错误包装

4.2 工具分类

类别 工具 说明
文件操作 read_file, write_file, patch, search_files 文件读写、补丁、搜索
终端执行 execute_command 6 种后端支持
代码执行 execute_code Python 沙箱,RPC 调用
网络 web_search, web_extract 搜索、提取
浏览器 10 个浏览器工具 自动化浏览、截图、交互
委托 delegate 生成子 Agent
MCP mcp_call 连接任意 MCP 服务器
凭证 credential_files, env_passthrough 凭证传递
视觉 vision 图像理解
技能 skill_manage 技能创建、改进、管理
记忆 memory_* 记忆读写

4.3 终端后端

terminal_tool.py
    ├── local (本地执行)
    ├── docker (容器隔离)
    ├── ssh (远程服务器)
    ├── daytona (无服务器,空闲休眠)
    ├── modal (无服务器 GPU)
    └── singularity (HPC 容器)

五、记忆与技能系统

5.1 记忆系统

~/.hermes/
├── memories/
│   ├── MEMORY.md          # Agent 策展的持久记忆
│   └── USER.md            # 用户画像(Honcho 辩证建模)
├── sessions/              # SQLite 会话存储 + FTS5 全文搜索
└── skills/                # Agent 创建的技能

关键特性:

  • Agent 主动整理记忆,不是被动存储
  • 定期提醒保存重要知识
  • FTS5 全文搜索 + LLM 摘要实现跨会话回忆
  • Honcho 辩证用户建模:通过对话构建用户理解

5.2 技能系统

~/.hermes/skills/           # 用户技能
├── openclaw-imports/       # 从 OpenClaw 迁移的技能
└── auto-generated/         # Agent 自动生成的技能

skills/                     # 内置技能(始终可用)
optional-skills/            # 官方可选技能

技能生命周期:

  1. Agent 遇到复杂任务 → 完成后自动创建技能
  2. 技能在使用中自我改进
  3. 兼容 agentskills.io 开放标准
  4. 可通过 Skills Hub 分享和安装社区技能

六、配置系统

6.1 配置优先级

1. CLI 参数          # 每次调用覆盖 (如 hermes chat --model anthropic/claude-sonnet-4)
2. ~/.hermes/config.yaml   # 主配置文件
3. ~/.hermes/.env          # 密钥回退 (API keys, tokens)
4. 内置默认值         # 硬编码安全默认值

6.2 配置目录

~/.hermes/
├── config.yaml     # 设置 (模型、终端、TTS、压缩等)
├── .env            # API 密钥和机密
├── auth.json       # OAuth 凭证
├── SOUL.md         # Agent 身份(系统提示词槽位 #1)
├── memories/       # 持久记忆
├── skills/         # Agent 创建的技能
├── cron/           # 定时任务
├── sessions/       # 网关会话
└── logs/           # 日志 (secrets 自动脱敏)

七、设计原则

原则 实践含义
提示词稳定性 系统提示词在对话中不变,除非用户显式操作(如 /model
可观察执行 每个工具调用对用户可见,CLI 有进度旋转器,网关有聊天消息
可中断 API 调用和工具执行可被用户输入或信号中途取消
平台无关核心 一个 AIAgent 类服务 CLI、网关、ACP、批量、API 服务器
松耦合 可选子系统(MCP、插件、记忆提供者、RL 环境)使用注册表模式
Profile 隔离 每个 profile 有独立的 HERMES_HOME、配置、记忆、会话

八、与我们的 Hermes V1.5 方案对比

8.1 相似之处

维度 Nous Hermes 我们的方案
多 Agent 子 Agent 委托 tmux 多 Agent 并行
任务系统 Cron 定时任务 tasks/todo → doing → review
日志 logs/ 目录 logs/{agent}/YYYY-MM-DD.md
交付物 outbox 概念 outbox/{agent}/{task_id}/
记忆 memories/ memory/
技能 skills/ 系统 未来 V5 方向

8.2 关键差异

维度 Nous Hermes 我们的方案
架构 单体 Python 应用 文件系统 + tmux + Claude/Codex
执行引擎 自有 AIAgent 循环 外部 LLM (Claude/Codex)
学习循环 内置技能创建和记忆进化 暂无(V5 方向)
消息平台 18 个平台适配器 暂无
工具系统 47 个内置工具 依赖 Claude/Codex 工具
部署 pip 安装,一行启动 需要 tmux + 多个 AI CLI
成熟度 118k stars, 5974 commits 概念阶段

8.3 我们可以借鉴的

  1. 技能系统:Agent 自动创建和进化技能的模式
  2. 记忆策展:不是被动存储,而是主动整理
  3. 工具注册表:自动发现、Schema 收集、分发
  4. Profile 隔离:多用户/多项目隔离
  5. Cron 调度:自然语言定义定时任务
  6. FTS5 搜索:跨会话回忆能力
  7. 插件系统:可扩展的工具、钩子、CLI 命令

8.4 我们的独特优势

  1. 利用最强 LLM:直接使用 Claude/Codex,不依赖自有模型
  2. tmux 可观察性:实时看到多个 Agent 工作
  3. 文件系统即数据库:V1 极简,无依赖
  4. 公司操作系统隐喻:更贴近真实组织行为
  5. 渐进式自动化:半自动 → 自动注入 → 自动回收

九、安装与快速开始

9.1 一键安装

curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash
source ~/.bashrc    # 或 source ~/.zshrc
hermes              # 开始对话!

支持:Linux, macOS, WSL2, Android (Termux)

9.2 开发者安装

git clone https://github.com/NousResearch/hermes-agent.git
cd hermes-agent
./setup-hermes.sh     # 安装 uv, 创建 venv, 安装依赖
./hermes              # 自动检测 venv

9.3 常用命令

hermes              # 交互式 CLI
hermes model        # 选择模型
hermes tools        # 配置工具
hermes gateway      # 启动消息网关
hermes setup        # 完整设置向导
hermes update       # 更新到最新版本
hermes doctor       # 诊断问题

十、版本历史

版本 日期 亮点
v0.11.0 2026.4.23 React/Ink TUI 重写、可插拔传输层、AWS Bedrock、17th 平台 (QQBot)
v0.10.0 - -
v0.9.0 - -
v0.8.0 - -
v0.7.0 - -
v0.6.0 - -
v0.5.0 - -
v0.4.0 - -
v0.3.0 - -
v0.2.0 - -

十一、社区与生态


十二、对我们的启示

12.1 架构层面

Nous Hermes 证明了单体 Agent 应用可以做到 118k stars。我们的 tmux 多 Agent 方案是另一种路径,两者不冲突:

  • Nous Hermes = 一个强大的 Agent + 丰富的工具 + 学习循环
  • 我们的方案 = 多个 Agent 并行 + 公司操作系统 + 任务调度

未来可以考虑融合:用 Nous Hermes 作为单个 Agent 的执行引擎,用我们的 Orchestrator 做多 Agent 调度。

12.2 技能系统

Nous 的技能系统非常成熟,我们应该:

  • 在 V5 中引入类似的技能创建和进化机制
  • 兼容 agentskills.io 标准
  • 让 Agent 在执行复杂任务后自动生成可复用技能

12.3 记忆系统

Nous 的记忆不是被动存储,而是主动策展

  • Agent 定期整理记忆
  • 跨会话搜索 + LLM 摘要
  • Honcho 辩证用户建模

这比简单的 memory/ 目录强大得多,是我们 V5 的重要方向。

12.4 工具系统

47 个内置工具 + 19 个工具集 + MCP 扩展 = 极强的自主能力。 我们的方案依赖 Claude/Codex 的工具,但可以考虑:

  • 引入 Nous 的工具注册表模式
  • 让 Agent 有更多自主执行能力

十三、参考链接


文档生成时间:2026-04-26 数据来源:GitHub 仓库、官方文档、Release Notes