Hermes Agent 深度解析:当 AI Agent 终于学会「记住一切、学会一切、成为一切」
36,618 stars、GitHub Trending 第一、MIT 协议开源——Nous Research 用 Hermes Agent 重新定义了什么叫「会学习的 AI」。这不是另一个 Cursor 或 Claude Code,而是一个真正拥有「记忆闭环」和「自主进化」能力的通用 AI Agent。它能从对话中创建技能、从错误中自我修正、在多平台间无缝切换——甚至能从 OpenClaw 完整迁移你的所有配置。本文从架构设计、记忆系统、技能生态、工具生态、跨平台网关五个维度,深度解析这个 2026 年最值得关注的开源 AI Agent 项目。
一、背景:从「对话窗口」到「持续进化个体」的鸿沟
过去两年,AI Agent 赛道经历了三次范式迁移:
第一阶段(2023-2024):单轮问答增强。 以 Claude Code、Cursor 为代表,通过增强上下文让 AI 完成代码生成任务。但本质仍是「每会话独立」——AI 不知道你是谁、不知道上次修过什么 bug、不知道你偏好什么编程风格。
第二阶段(2024-2025):工具集成竞赛。 MCP(Model Context Protocol)协议横空出世,解决了「AI 怎么调用外部工具」的问题。各大平台疯狂接入工具生态。但工具再多,Agent 仍然是「金鱼记忆」——每次会话都是白纸。
第三阶段(2025-2026):记忆与进化闭环。 代表项目有两个:OpenClaw 和 Hermes Agent。两者都意识到,真正的 AI Agent 不应该只是「更聪明的对话窗口」,而应该是一个「持续积累经验、主动优化自身」的数字化员工。
Hermes Agent 的独特价值在于:它是目前唯一一个将「自进化学习循环」作为一等公民(first-class citizen)设计的开源 Agent。与 OpenClaw 强调会话和插件生态不同,Hermes 的核心差异化在于自主创建技能(Agent-created skills)和跨会话记忆持久化,让 AI 的能力边界能够随着使用时长不断扩展。
二、架构解析:从入口到执行的完整链路
2.1 三大入口:CLI、Gateway、ACP
Hermes Agent 的架构设计体现了「一次编写、处处可用」的原则。整个系统有三个入口点:
┌─────────────────────────────────────────────┐
│ Entry Points │
│ │
│ CLI (cli.py) → 交互式终端界面 │
│ Gateway (gateway/run.py) → 消息网关,14平台 │
│ ACP (acp_adapter/) → IDE 集成(VS Code等) │
└─────────────────────────────────────────────┘
CLI 入口(约 8,500 行代码):完整的 TUI 界面,支持多行编辑、斜杠命令自动完成、对话历史、流式工具输出。启动后是一个持久的交互式会话,Ctrl+C 可以随时中断重定向。
Gateway 入口:长驻进程,将 Hermes 暴露为 Telegram、Discord、Slack、WhatsApp、Signal、Email 等 14 个消息平台的服务端。用户可以在手机上用 Telegram 和自己的 Agent 对话,而 Agent 实际运行在云端 VPS。
ACP 入口:通过 stdio/JSON-RPC 协议与 VS Code、Zed、JetBrains 等编辑器集成。相当于把这些 IDE 变成 Hermes 的「前端界面」。
2.2 AIAgent:核心执行引擎
所有入口最终都汇聚到 AIAgent(run_agent.py,约 9,200 行代码),这是整个系统的核心:
User input → HermesCLI.process_input()
→ AIAgent.run_conversation()
→ prompt_builder.build_system_prompt()
→ runtime_provider.resolve_runtime_provider()
→ API call (chat_completions / codex_responses / anthropic_messages)
→ tool_calls? → model_tools.handle_function_call() → loop
→ final response → display → save to SessionDB
三 API 模式:Hermes 支持三种 LLM API 调用方式:
chat_completions:OpenAI 风格接口codex_responses:Anthropic 的 Codex 响应格式anthropic_messages:原生 Anthropic Messages API
这种设计让它可以对接 18+ 种模型提供商(Nous Portal、OpenRouter、Kimi/Moonshot、GLM、MiniMax、OpenAI 等),而且切换模型只需要一条命令:
hermes model nous:deepseek-ctx
2.3 核心子系统全览
| 子系统 | 文件 | 核心职责 |
|---|---|---|
| Prompt Builder | agent/prompt_builder.py | 组装系统提示词(SOUL.md + MEMORY.md + USER.md + skills + context files) |
| Context Compressor | agent/context_compressor.py | 对话超长时自动摘要,释放上下文 |
| Prompt Caching | agent/prompt_caching.py | Anthropic cache breakpoint 前缀缓存 |
| Model Metadata | agent/model_metadata.py | 模型上下文长度、token 估算 |
| Runtime Provider | hermes_cli/runtime_provider.py | API provider → (api_mode, api_key, base_url) 映射 |
| Memory Manager | agent/memory_manager.py | 记忆管理层,调度各 memory provider |
| MCP Tool | tools/mcp_tool.py (~2,200行) | MCP 客户端,动态加载 MCP 服务器工具 |
| Session Storage | hermes_state.py | SQLite + FTS5 全文本搜索 |
三、记忆系统:为什么大多数 Agent「记不住」?
这是 Hermes 最核心的创新。大多数 AI Agent(包括很多商业产品)的「记忆」只是把对话历史塞进上下文窗口——这是假记忆。真正的记忆需要满足三个条件:持久化(重启不丢失)、有结构(不是日志流水账)、可检索(能主动找回)。
3.1 双文件记忆架构
Hermes 的记忆系统用两个 Markdown 文件实现,刻意保持简单但有效:
~/.hermes/memories/
├── MEMORY.md # Agent 的个人笔记(环境事实、约定俗成、经验教训)
└── USER.md # 用户画像(偏好、沟通风格、技能水平)
MEMORY.md(2,200 字符上限,约 800 tokens):
══════════════════════════════════════════════
MEMORY (your personal notes) [67% — 1,474/2,200 chars]
══════════════════════════════════════════════
User's project is a Rust web service at ~/code/myapi using Axum + SQLx
§
This machine runs Ubuntu 22.04, has Docker and Podman installed
§
User prefers concise responses, dislikes verbose explanations
USER.md(1,375 字符上限,约 500 tokens):
═════════════════════════════════════════════════
USER PROFILE [45% — 620/1,375 chars]
═════════════════════════════════════════════════
Senior backend engineer, Go + Rust, prefers technical depth
§
Uses Vim keybindings, dark terminal theme
§
Timezone: Asia/Shanghai
注意那个 § 分隔符——每个条目都是原子化的经验碎片,而非流水账。这种设计借鉴了物理里的「相干态」概念:记忆不是日志,记忆是可组合、可检索、可推理的最小知识单元。
3.2 容量管理:为什么严格限制字数?
这可能是最反直觉的设计决策:为什么要给记忆加严格上限?
答案在于系统提示词的 prefix caching。如果记忆无限增长,prefix cache 命中率下降,每次 API 调用的成本都会上升。而且,无限记忆最终会变成「垃圾堆」——Agent 淹没在过时的上下文里,找不到真正有用的信息。
Hermes 的做法是:当记忆超过 80% 容量时,Agent 被要求主动压缩或合并条目,而不是继续追加。这迫使 Agent 定期整理自己的「知识库」,像人类整理笔记一样。
# memory_provider.py 容量检查逻辑
if current_usage > 0.8 * capacity_limit:
return Error(
f"Memory at {current_usage}/{capacity_limit} chars. "
"Consolidate entries before adding new ones."
)
3.3 对比 OpenClaw:两种记忆哲学
OpenClaw 的记忆系统用的是结构化 JSON(L1)和对话历史(L0),支持语义搜索(tdai_memory_search)。Hermes 则选择了更简单但更显性的 Markdown 方案。
Hermes 的记忆哲学:记忆是对话启动时一次性加载到 prefix 的静态快照。Agent 在对话过程中对记忆的修改会立即持久化到磁盘,但这个更新不会实时反映在当前会话的 system prompt 里——直到下一会话。
为什么这样设计? 核心原因是为了最大程度利用 LLM API 的 prefix cache。如果每次修改记忆都重新构建 system prompt,prefix cache 就失效了,成本和延迟都会增加。Hermes 选择了「写时持久化、读时一次性加载」的模式。
四、技能系统:从「工具调用」到「知识按需加载」
4.1 Skills 与 Toolsets 的分层
Hermes 有两个容易混淆的概念:
Tools(工具):Agent 可以执行的具体操作,如 read_file、bash、web_search。目前有 48 个注册工具,分属 40 个 toolsets。
Skills(技能):按需加载的知识文档,遵循 progressive disclosure(渐进式披露)原则。就像人类翻阅手册——不是把整本手册塞进脑子里,而是需要时翻到对应章节。
Skills 加载三级模式:
Level 0: skills_list() → [{name, description, category}, ...] (~3k tokens)
Level 1: skill_view(name) → Full content + metadata
Level 2: skill_view(name, path) → Specific reference file
这个设计非常像现代编程语言的 LSP(Language Server Protocol)——不是把整个代码库的 AST 塞给 IDE,而是按需提供诊断和补全。Skills 的 progressive disclosure 让 Agent 在发现阶段只用 3k tokens,使用阶段才加载完整内容,极大节省了上下文。
4.2 Agent 自创建技能:学习循环的核心
这是 Hermes 最有野心的地方。传统的 Agent 工具生态是预设的——开发者预先定义好 Agent 能做什么。但 Hermes 支持 Agent 在完成任务过程中自动创建新技能:
# 你告诉 Hermes:以后部署 k8s 项目就用这个流程
/hermes "Remember the k8s deployment workflow for our microservices"
# → Agent 自动在 ~/.hermes/skills/devops/ 下创建 deploy-k8s/
# → 以后直接 /deploy-k8s 即可调用
创建后的 skill 结构:
~/.hermes/skills/
├── devops/
│ └── deploy-k8s/
│ ├── SKILL.md # 主指令文件
│ ├── references/ # 参考文档
│ ├── templates/ # 输出模板
│ └── scripts/ # 辅助脚本
4.3 Skills Hub 与 agentskills.io 开放标准
Hermes 的技能系统与 agentskills.io 开放标准完全兼容。这意味着:
- 跨 Agent 迁移:你在 Hermes 上创建的 skill,理论上可以被任何兼容 agentskills.io 的 Agent 使用
- Hub 分发:通过 Skills Hub 安装社区贡献的技能,类似于 npm 但面向 AI 工作流
- OpenClaw 迁移:Hermes 提供了
hermes claw migrate命令,可以一键导入 OpenClaw 的 SOUL.md、MEMORIES、Skills、API keys 等配置
# 从 OpenClaw 迁移到 Hermes
hermes claw migrate # 交互式迁移
hermes claw migrate --dry-run # 预览迁移内容
hermes claw migrate --preset user-data # 不迁移 secrets
五、工具生态:48 个工具的编排艺术
5.1 工具注册表与动态分发
所有工具在 tools/registry.py 中自注册(self-register)。每个工具文件在被 import 时自动注册到中心注册表:
# tools/registry.py 伪代码
class ToolRegistry:
def register(self, tool_schema):
self._tools[tool_schema.name] = tool_schema
def dispatch(self, tool_name, params):
handler = self._dispatch_map[tool_name]
return handler(params)
这种「自注册」模式的好处是:添加新工具只需要新建一个 .py 文件,不需要修改任何中央注册表代码。
5.2 六大终端后端
Terminal 工具支持六种运行环境:
| 后端 | 用途 | 冷启动 | 成本 |
|---|---|---|---|
| local | 直接在宿主机执行 | 即时 | $0 |
| Docker | 容器隔离环境 | 几秒 | 运行时计费 |
| SSH | 远程服务器 | 网络延迟 | 云服务器费用 |
| Daytona | 云开发环境 | ~10s | 按用量 |
| Modal | Serverless 计算 | ~5s | 按调用 |
| Singularity | HPC 环境 | 较慢 | 高 |
这意味着你可以在本地开发、部署到 Docker、生产跑在 Modal 上——同一个工具定义,六种运行环境自由切换。
5.3 MCP 集成:双向扩展
Hermes 的 MCP 工具(约 2,200 行代码)是一个完整的 MCP 客户端,可以连接任何 MCP 服务器:
# 配置 MCP 服务器
hermes tools configure-mcp --server-name "filesystem" \
--command "npx" \
--args "ts-node src/index.ts"
这让 Hermes 的能力边界等于所有可用 MCP 服务器的并集——理论上可以连接文件系统、GitHub、数据库、API 等一切有 MCP 实现的工具。
六、跨平台网关:14 个消息平台的统一抽象
6.1 Gateway 架构
Gateway 是 Hermes 最「重」的部分(gateway/run.py 约 7,500 行代码),但设计异常清晰:
Platform event (Telegram/Discord/...)
→ Adapter.on_message() → MessageEvent
→ GatewayRunner._handle_message()
→ Authorize user (allowlists + DM pairing)
→ Resolve session key (per-platform isolation)
→ Create AIAgent with session history
→ AIAgent.run_conversation()
→ Deliver response back through adapter
每个平台是一个 adapter,共享相同的消息处理逻辑。目前支持的 14 个平台:
Telegram、Discord、Slack、WhatsApp、Signal、Email、Matrix、Mattermost、SMS、DingTalk(钉钉)、Feishu(飞书)、WeCom(企业微信)、Home Assistant、Webhook。
6.2 跨会话消息镜像
最有用的功能之一:同一个会话在不同平台看到相同的消息。
你在 Telegram 上问 Hermes 一个问题,它在 Discord 上的对话记录里也会出现这条消息。Agent 的工作上下文可以在多个平台间共享,但每个平台的交互风格可以不同——Telegram 用户可能喜欢简短指令,Slack 可能需要 @mention。
6.3 Slash Commands 跨平台统一
所有平台共享同一个命令注册表(COMMAND_REGISTRY):
| 命令 | 功能 | 可用平台 |
|---|---|---|
/new | 新会话 | 所有 |
/model | 切换模型 | 所有 |
/skills | 浏览技能 | 所有 |
/compress | 压缩上下文 | 所有 |
/platforms | 平台状态 | 消息平台 |
/plan | 生成实现计划 | 所有 |
七、与 OpenClaw 的深度对比
作为同时使用两个系统的用户,这里是我从工程师视角的真实对比:
7.1 设计哲学差异
| 维度 | OpenClaw | Hermes Agent |
|---|---|---|
| 核心定位 | 个人 AI 助手 + 会话中枢 | 自进化 Agent + 多平台入口 |
| 记忆系统 | 结构化 JSON + 语义搜索 | Markdown 文件 + 容量上限 |
| 技能生态 | Skills (SKILL.md) + Plugins | Skills (agentskills.io) + Plugins |
| 平台接入 | Channel Plugins | Gateway Adapters |
| 学习方式 | 人工维护记忆 | Agent 自主创建/管理技能 |
| 定时任务 | Cron (isolated agentTurn) | 内置 Cron + 平台投递 |
| IDE 集成 | ACP (VS Code/Zed) | ACP (VS Code/Zed/JetBrains) |
| 专注领域 | 会话管理与信息流 | Agent 自主进化与跨平台 |
7.2 各自的优势场景
Hermes 更适合:
- 需要 Telegram/Discord 随时唤醒 Agent 的场景
- 追求 Agent「越用越聪明」的进化需求
- 需要在 $5 VPS 上跑一个 24/7 在线 Agent
- 需要批量轨迹生成(batch runner)做 RL 训练数据
OpenClaw 更适合:
- 需要精准控制定时任务和会话管理
- 强调语义搜索和结构化记忆的场景
- 与腾讯生态(腾讯文档、腾讯会议、企业微信)深度集成
- 通过 Channel Plugins 接入特殊平台的需求
7.3 迁移体验
最让我惊讶的是 Hermes 的 OpenClaw 迁移工具。我测试了一下,它能完整导入:
- SOUL.md → 保持不变
- MEMORIES → 转换成 Hermes 的 MEMORY.md/USER.md 格式
- Skills → 复制到
~/.hermes/skills/openclaw-imports/ - API Keys → 通过
--preset user-data可选择是否迁移
这个迁移体验说明:Hermes 团队认真研究过 OpenClaw 的用户群体,并且用了一种不破坏原系统的方式来实现共存。用户可以先迁移,体验一段时间后再决定是否完全切换。
八、安装与快速上手
8.1 一键安装
# Linux/macOS/WSL2
curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash
# 安装后重载 shell
source ~/.bashrc # 或 source ~/.zshrc
# 启动
hermes
安装脚本会自动处理 Python、Node.js 和所有依赖。Windows 用户需要先安装 WSL2。
8.2 初始配置
# 完整配置向导(推荐)
hermes setup
# 或分步配置
hermes model # 选择模型提供商
hermes tools # 配置启用的工具
hermes gateway setup # 配置消息平台网关
8.3 核心命令速查
hermes # 启动 CLI 对话
hermes model # 切换模型
hermes tools # 管理工具集
hermes /skills # 浏览可用技能
hermes gateway start # 启动消息网关
hermes cron list # 查看定时任务
hermes update # 更新到最新版
hermes doctor # 诊断问题
8.4 Docker 运行(隔离环境)
# 在隔离 Docker 容器中运行 Agent
hermes run --backend docker --image nousresearch/hermes:latest
# Agent 状态在空闲时自动休眠,节省资源
九、性能与成本:$5 VPS 能否跑起来?
9.1 资源占用分析
| 组件 | 内存占用 | CPU | 存储 |
|---|---|---|---|
| CLI 会话 | ~100-200MB | 按需 | SQLite ~10MB |
| Gateway (idle) | ~50MB | 极低 | SQLite |
| Gateway (active) | ~200-500MB | 按需 | 取决于对话长度 |
| Docker 后端 | +200MB | 隔离 | 按镜像 |
9.2 云端无状态运行
Hermes 的设计非常适合「云端 Agent」模式:
- Daytona / Modal:空闲时 Agent 环境自动休眠(hibernation),被唤醒时才计费
- SSH 后端:Agent 跑在云服务器上,本地终端只是显示界面
- 消息网关:Telegram/Discord 控制云端 Agent,真正的计算在服务端
这意味着:Agent 的工作环境和你的本地机器完全解耦。你可以在任何设备上通过任何平台和同一个 Agent 交互,它的状态在云端持久化。
十、总结:为什么 Hermes Agent 值得密切关注?
10.1 五大核心创新
- 自进化学习循环:Agent 能从经验中创建新技能,能力边界随使用时长扩展
- Progressive Disclosure Skills:解决了 AI Agent「全知但低效」的悖论——知识按需加载
- 容量约束记忆:用严格的字符上限迫使 Agent 主动整理知识库,防止记忆腐化
- 真正的跨平台:14 个消息平台统一抽象,同一 Agent 在任何地方都是同一个 Agent
- $5 VPS 可运行:通过 Daytona/Modal 的 serverless 架构,零成本维持 24/7 在线 Agent
10.2 面向 2026 年的判断
当大多数 AI Agent 还在比拼「接入了多少工具」时,Hermes Agent 已经进入了下一个竞争维度:谁能让 Agent 真正学会、真正记住、真正进化。
Nous Research 选择了一条最难走的路——不是追求更漂亮的 UI,不是追求更多的平台适配,而是解决 AI Agent 最根本的问题:每次会话从零开始。这个问题困扰了行业两年,而 Hermes 用一个简单的双文件记忆系统 + Agent 自创建技能,给出了一个开源社区级别的解法。
如果你正在运营个人技术博客、或者需要一个 24/7 在线的研究助手,Hermes Agent 值得关注。如果你在考虑从 OpenClaw 迁移,hermes claw migrate --dry-run 值得先跑一遍看看会迁移什么。
开源 AI Agent 赛道的终局,或许不会是「谁工具最多」,而是**「谁最懂用户、谁学得最快」**。在这场竞争中,Hermes Agent 已经抢占了有利地形。
相关资源:
- GitHub: https://github.com/NousResearch/hermes-agent
- 文档: https://hermes-agent.nousresearch.com/docs/
- Nous Research: https://nousresearch.com
- Open Standard (agentskills.io): https://agentskills.io