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 | ✅ |
| ✅ | |
| Signal | ✅ |
| Matrix | ✅ |
| Mattermost | ✅ |
| ✅ | |
| 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/ # 官方可选技能
技能生命周期:
- Agent 遇到复杂任务 → 完成后自动创建技能
- 技能在使用中自我改进
- 兼容 agentskills.io 开放标准
- 可通过 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 我们可以借鉴的
- 技能系统:Agent 自动创建和进化技能的模式
- 记忆策展:不是被动存储,而是主动整理
- 工具注册表:自动发现、Schema 收集、分发
- Profile 隔离:多用户/多项目隔离
- Cron 调度:自然语言定义定时任务
- FTS5 搜索:跨会话回忆能力
- 插件系统:可扩展的工具、钩子、CLI 命令
8.4 我们的独特优势
- 利用最强 LLM:直接使用 Claude/Codex,不依赖自有模型
- tmux 可观察性:实时看到多个 Agent 工作
- 文件系统即数据库:V1 极简,无依赖
- 公司操作系统隐喻:更贴近真实组织行为
- 渐进式自动化:半自动 → 自动注入 → 自动回收
九、安装与快速开始
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 # 自动检测 venv9.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 | - | - |
十一、社区与生态
- Discord: discord.gg/NousResearch
- Skills Hub: agentskills.io — 开放技能标准
- HermesClaw: 社区微信桥接(Hermes + OpenClaw 同微信号)
- 自进化项目: hermes-agent-self-evolution — 用 DSPy + GEPA 优化技能、提示词和代码
十二、对我们的启示
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 有更多自主执行能力
十三、参考链接
- GitHub: https://github.com/NousResearch/hermes-agent
- 文档: https://hermes-agent.nousresearch.com/docs/
- 架构文档: https://hermes-agent.nousresearch.com/docs/developer-guide/architecture
- Skills Hub: https://agentskills.io
- Nous Research: https://nousresearch.com
- Discord: https://discord.gg/NousResearch
- 自进化项目: https://github.com/NousResearch/hermes-agent-self-evolution
文档生成时间:2026-04-26 数据来源:GitHub 仓库、官方文档、Release Notes