编程 Hermes Agent 深度解析:当 AI Agent 终于学会「记住一切、学会一切、成为一切」

2026-04-09 01:07:00 +0800 CST views 8

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:核心执行引擎

所有入口最终都汇聚到 AIAgentrun_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 Builderagent/prompt_builder.py组装系统提示词(SOUL.md + MEMORY.md + USER.md + skills + context files)
Context Compressoragent/context_compressor.py对话超长时自动摘要,释放上下文
Prompt Cachingagent/prompt_caching.pyAnthropic cache breakpoint 前缀缓存
Model Metadataagent/model_metadata.py模型上下文长度、token 估算
Runtime Providerhermes_cli/runtime_provider.pyAPI provider → (api_mode, api_key, base_url) 映射
Memory Manageragent/memory_manager.py记忆管理层,调度各 memory provider
MCP Tooltools/mcp_tool.py (~2,200行)MCP 客户端,动态加载 MCP 服务器工具
Session Storagehermes_state.pySQLite + 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_filebashweb_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 开放标准完全兼容。这意味着:

  1. 跨 Agent 迁移:你在 Hermes 上创建的 skill,理论上可以被任何兼容 agentskills.io 的 Agent 使用
  2. Hub 分发:通过 Skills Hub 安装社区贡献的技能,类似于 npm 但面向 AI 工作流
  3. 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按用量
ModalServerless 计算~5s按调用
SingularityHPC 环境较慢

这意味着你可以在本地开发、部署到 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 设计哲学差异

维度OpenClawHermes Agent
核心定位个人 AI 助手 + 会话中枢自进化 Agent + 多平台入口
记忆系统结构化 JSON + 语义搜索Markdown 文件 + 容量上限
技能生态Skills (SKILL.md) + PluginsSkills (agentskills.io) + Plugins
平台接入Channel PluginsGateway 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」模式:

  1. Daytona / Modal:空闲时 Agent 环境自动休眠(hibernation),被唤醒时才计费
  2. SSH 后端:Agent 跑在云服务器上,本地终端只是显示界面
  3. 消息网关:Telegram/Discord 控制云端 Agent,真正的计算在服务端

这意味着:Agent 的工作环境和你的本地机器完全解耦。你可以在任何设备上通过任何平台和同一个 Agent 交互,它的状态在云端持久化。

十、总结:为什么 Hermes Agent 值得密切关注?

10.1 五大核心创新

  1. 自进化学习循环:Agent 能从经验中创建新技能,能力边界随使用时长扩展
  2. Progressive Disclosure Skills:解决了 AI Agent「全知但低效」的悖论——知识按需加载
  3. 容量约束记忆:用严格的字符上限迫使 Agent 主动整理知识库,防止记忆腐化
  4. 真正的跨平台:14 个消息平台统一抽象,同一 Agent 在任何地方都是同一个 Agent
  5. $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 已经抢占了有利地形。


相关资源

推荐文章

MySQL 日志详解
2024-11-19 02:17:30 +0800 CST
Vue3中如何处理状态管理?
2024-11-17 07:13:45 +0800 CST
mysql删除重复数据
2024-11-19 03:19:52 +0800 CST
在Vue3中实现代码分割和懒加载
2024-11-17 06:18:00 +0800 CST
关于 `nohup` 和 `&` 的使用说明
2024-11-19 08:49:44 +0800 CST
Nginx 性能优化有这篇就够了!
2024-11-19 01:57:41 +0800 CST
Vue3中如何进行错误处理?
2024-11-18 05:17:47 +0800 CST
Vue3中的虚拟滚动有哪些改进?
2024-11-18 23:58:18 +0800 CST
如何在Vue3中定义一个组件?
2024-11-17 04:15:09 +0800 CST
PHP设计模式:单例模式
2024-11-18 18:31:43 +0800 CST
使用Vue 3和Axios进行API数据交互
2024-11-18 22:31:21 +0800 CST
一文详解回调地狱
2024-11-19 05:05:31 +0800 CST
FcDesigner:低代码表单设计平台
2024-11-19 03:50:18 +0800 CST
程序员茄子在线接单