深度拆解 Hermes Agent 框架的架构设计,聚焦其"越用越聪明"的核心差异化——通过Agent Loop、三级记忆系统和自学习技能架构,实现从经验中自动提取和复用知识的闭合学习循环。

别再从零开始了!Hermes Agent 如何让 AI 越用越聪明——架构、记忆、技能系统全拆解

作者:王砚舒 (彦纾)

17K Stars,2 个月。NousResearch 发布的 Hermes Agent 凭什么成为 2026 最火 Agent 框架?不是因为它功能最多,而是因为它是唯一一个用完会变聪明的 Agent。本文从 Agent Loop、记忆系统、技能架构三个维度深度拆解,并与 OpenClaw 做逐层对比。


一、30 秒看懂 Hermes Agent

Hermes Agent 是 Nous Research 于 2026 年 2 月底开源的 AI Agent 框架。

它不是又一个 LangChain / CrewAI / AutoGen 的竞品——那些是多 Agent 编排框架,Hermes 是一个深度单 Agent 运行时。核心差异化只有一句话:

“Most agents remember what you told them. Hermes Agent learns from what it did.”

大多数 Agent 记住你说过的话,Hermes Agent 从它做过的事中学习。

指标 数据
首次发布 2026-02-26
当前版本 v0.5.0(2026-03-28)
GitHub Stars 17,000+
编程语言 Python(93.6%)
许可证 MIT
支持平台 Linux / macOS / WSL2

二、核心设计理念:An Agent That Grows With You

这句 Slogan 不是营销话术,它对应三层递进的架构设计:

  1. Grows = 内置闭合学习循环,Agent 从任务中自动提取可复用知识
  2. With You = 用户建模(Honcho),Agent 了解你的偏好和风格
  3. Agent(非 Copilot) = 自主执行,7×24 运行,不是等指令的聊天框

当前 AI Agent 的核心矛盾是每次会话从零开始。你上次花 20 分钟教 Agent 怎么部署你的项目,下次它又忘了。大多数框架的解法是"加一个外部记忆层",Nous Research 认为这不够——他们需要一个原生就会学习的 Agent

闭合学习循环(Closed Learning Loop)

经验(Execute)→ 反思(Reflect)→ 持久化(Persist)→ 复用(Reuse)
        ↑                                                    |
        └────────────────────────────────────────────────────┘
  • 经验转化:完成复杂任务后,自动将成功工作流抽象为技能文档
  • 动态优化:技能在后续使用中持续被改进
  • 知识巩固:通过 nudge 机制主动提醒自己持久化知识
  • 跨会话回忆:FTS5 全文搜索 + LLM 摘要检索历史知识

GEPA:自动化技能进化引擎

Nous Research 还开发了独立的自我进化管道 hermes-agent-self-evolution,核心是 GEPA(Generate-Evaluate-Persist-Apply) 循环:

阶段 作用
Generate 反射式文本变异,生成技能/提示词的改进版本
Evaluate 在评估数据集上跑分
Persist git 分支保存,提交 PR 供人类审查
Apply 审查通过后合入主分支

独特之处:不只衡量成功/失败,而是读取执行轨迹理解"为什么失败"。仅需 3 个样本即可工作,无需 GPU——全程 API 调用优化文本,不改模型权重。


三、Agent Loop 深度对比:Hermes vs OpenClaw

两者表面都是 ReAct 式循环(读消息 → 调 LLM → 执行工具 → 返回),但内部设计哲学完全不同。

一句话总结

Hermes 的 loop 是一个"带学习能力的同步推理引擎",OpenClaw 的 loop 是一个"带队列调度的异步消息处理管道"。

核心流程对比

关键差异逐点拆解

1. 调度模型

Hermes OpenClaw
模型 同步执行,一个 AIAgent 实例处理一个会话 队列驱动,lane-aware FIFO 调度
并发 最多 3 个子代理 全局 4 + 子代理 8 + cron 独立
中断 _api_call_with_interrupt() 后台线程 + 中断事件 队列模式:collect / steer / followup

2. 提示词构建

Hermes OpenClaw
核心文件 SOUL.md + MEMORY.md + USER.md + skills_list AGENTS.md + SOUL.md + USER.md + skills
技能加载 渐进式:先列表(~3K),按需展开 全量注入所有活跃 skills
缓存策略 系统提示会话内不变(prompt stability) 文件截断 ~20K 字符

Hermes 的 prompt stability 原则——系统提示冻结后不变,动态信息通过"临时层"注入——确保 LLM prefix cache 始终命中。

3. 工具执行

Hermes OpenClaw
并发策略 单工具→主线程;多工具→ThreadPoolExecutor 基于 tool policy 层级控制
代理级工具 memory / todo / delegate_task 在通用 handler 前被拦截 无此区分

Hermes 的"代理级工具"不走常规 handle_function_call() 路径,在 run_agent.py 中直接拦截并修改代理状态——学习循环是 loop 的一等公民。

4. 学习循环嵌入位置——最本质的区别

Hermes:学习是 loop 内部的一等组件

turn 结束(无更多 tool_calls)
    ↓
★ nudge 机制触发 ★
    → 判断本次任务是否值得创建/更新技能
    → 如果是 → 生成 SKILL.md
    → 刷新 MEMORY.md
    ↓
返回响应

OpenClaw没有内建学习循环

turn 结束
    ↓
流式返回响应
    ↓
持久化 transcript + 写 daily memory
    ↓
结束

OpenClaw 的记忆是"记录型"的(写日志),Hermes 的记忆是"学习型"的(提取知识)。

5. 迭代预算

Hermes OpenClaw
上限 90 次迭代,父子共享 无明确限制
预警 70% → 注入预算警告;90% → 强制最终响应 600 秒超时

四、记忆系统全拆解:四层 vs 双文件

架构总览

核心差异

1. 热记忆:会话启动加载什么

Hermes OpenClaw
文件 MEMORY.md (~800 tokens) + USER.md (~500) MEMORY.md (无限制) + 最近 2 天 daily notes
加载方式 冻结快照注入系统提示,会话内不变 每次从磁盘重新加载
大小 刻意限制 ~1,300 tokens 无硬限,容易膨胀
缓存友好 极佳(冻结 = prefix cache 始终命中) 一般(daily notes 每天不同)

Hermes 的哲学:热记忆越小越好。~1,300 tokens 是故意的——逼 Agent 只保留真正重要的东西。

2. 冷记忆:检索历史

Hermes OpenClaw
存储 SQLite + FTS5 Markdown + 向量嵌入 + BM25
检索工具 session_search(query) → LLM 摘要 memory_search(query, topK) → 排名片段
检索精度 关键词匹配(较弱) 混合检索(语义+关键词,更强)

OpenClaw 的检索能力更强——向量+BM25 处理同义改写,FTS5 纯关键词匹配换个说法就搜不到。但 Hermes 的补偿设计是:检索结果经 LLM 摘要处理,返回上下文相关的总结。

3. 谁决定什么值得记住——最关键的区别

Hermes:主动式 + nudge 机制

任务完成 or nudge_interval 触发
    ↓
Agent 自问:"我学到了什么?"
    ↓
事实性知识 → MEMORY.md / USER.md
程序化知识 → 创建/更新 SKILL.md
不值得 → 跳过
    ↓
Gateway 模式下 idle timeout 前还有一次强制 flush

OpenClaw:反应式

Agent 判断某信息值得保存
    ↓
持久事实 → MEMORY.md
会话笔记 → memory/YYYY-MM-DD.md
    ↓
文件监控自动索引

Hermes 的 nudge 解决了 Agent 的通病:忙于执行时忘记保存。系统定时提醒"你该整理一下学到的东西了"。

4. 程序化记忆——Hermes 独有层

Hermes Skills OpenClaw
存在形式 独立 SKILL.md + 参考文件 无独立技能层,知识混在 MEMORY.md
加载策略 按需加载,不用不占 token 所有记忆在热加载范围内
自动创建 Agent 完成复杂任务后自动提议 需用户手动组织
自我改进 使用中被 Agent 持续修正

这让 Hermes 把"怎么做"和"知道什么"彻底分流。一个技能可以几百行但不用时零成本。OpenClaw 的所有知识挤在 MEMORY.md 和 daily notes 里,越积越臃肿。

5. 上下文压缩前的保护

Hermes OpenClaw
保护方式 直接刷新 MEMORY.md 到磁盘(确定性) 触发一轮静默 agentic turn,让 LLM 自己决定保留什么(灵活但不确定)

一张表总结记忆差异

维度 Hermes OpenClaw
记忆哲学 “学习型”——从经验中提取知识 “记录型”——忠实记下发生了什么
热记忆大小 刻意小(~1,300 tokens) 无硬限,容易膨胀
记忆分类 事实/程序/用户 三路分流 长期/短期 二分法
程序化记忆 有独立技能层(核心优势)
写入驱动 定时 nudge + agent 主动 纯 agent 主动
检索能力 FTS5 关键词(较弱) 向量+BM25 混合(较强)
缓存稳定性 极佳(冻结快照) 一般
外部后端 7 种,叠加共存 3 种,互斥

类比:Hermes 像一个"会整理笔记的学生",OpenClaw 像一个"有很好搜索引擎的档案馆"。


五、技能系统全拆解:会生长的 Skill

Hermes Skill vs 传统 Skill 的本质区别

OpenClaw 的 skill 是"教科书"——人写好的、查了用的;Hermes 的 skill 是"个人笔记"——自己做过的、会长的。

传统 Skill:
  人类编写 → 发布到市场 → 用户安装 → Agent 执行 → 完成
  技能不会变。下次用还是同一份。

Hermes Skill:
  Agent 执行复杂任务(≥5 tool calls)
      ↓
  Agent 自问:"这值得存为技能吗?"
      ↓ YES
  自动生成 SKILL.md(含步骤、踩坑、验证方法)
      ↓
  下次类似任务 → 加载技能 → 执行
      ↓
  ★ 执行中发现改进空间 → 就地修改 ★
      ↓
  技能越用越准。第 10 次和第 1 次不一样。
维度 Hermes Skill 传统 Skill (OpenClaw)
来源 Agent 自动生成 或 人工 纯人工编写
初始生态 零(从第一天积累) 13,000+ 社区市场
是否改进 每次使用都可能优化 不变,等社区更新
个性化 极高(反映你的项目和习惯) 通用(面向所有人)
实测效果 1 个月后重复任务效率提升 60%+ 即插即用但不会越来越好

Skill 目录结构

~/.hermes/skills/
├── coding/                          # 分类目录
│   └── git-workflow/                # 单个技能
│       ├── SKILL.md                 # ★ 唯一必需文件
│       ├── references/              # 可选:参考文档(Tier 3 按文件加载)
│       │   └── commit-convention.md
│       ├── templates/               # 可选:模板文件
│       │   └── pr-template.md
│       └── scripts/                 # 可选:辅助脚本
│           └── check-branch.sh
└── devops/
    └── k8s-deploy/
        ├── SKILL.md
        └── templates/
            └── deployment.yaml

当前内置 96 个技能 + 22 个可选 Hub 技能,覆盖 22 个分类。

SKILL.md 完整格式

YAML Frontmatter + Markdown Body 两部分组成:

Part 1: Frontmatter 全字段

---
# ═══ 必填 ═══
name: git-workflow                    # 技能 ID,max 64 字符,也是斜杠命令名
description: >                        # 技能描述,max 1024 字符
  Standard git workflow for feature
  branches with conventional commits

# ═══ 可选基础字段 ═══
version: 1.2.0                        # 语义化版本
author: Your Name
license: MIT
platforms: [macos, linux]             # 平台限制。省略 = 全平台

# ═══ 环境变量声明 ═══
required_environment_variables:
  - name: GITHUB_TOKEN
    prompt: "Enter your GitHub PAT"   # 首次加载时的交互提示
    help: "Create at github.com/settings/tokens"
    required_for: "PR creation and review"

# ═══ Hermes 专有元数据 ═══
metadata:
  hermes:
    tags: [git, workflow, CI/CD]
    category: coding
    related_skills: [code-review, ci-pipeline]

    # 条件激活(Hermes 独有)
    fallback_for_toolsets: [web]       # web 工具集不可用时才显示
    requires_toolsets: [terminal]      # terminal 可用时才显示
    fallback_for_tools: [browser_navigate]
    requires_tools: [terminal_run]

    # 技能级配置(Hermes 独有)
    config:
      - key: default_branch
        description: "Main branch name"
        prompt: "Default branch?"     # 首次加载交互式收集
        default: main
---

条件激活逻辑

技能是否显示 = requires 满足 AND fallback 满足

requires_toolsets: [terminal]
  → terminal 可用 → ✓ 显示
  → terminal 不可用 → ✗ 隐藏

fallback_for_toolsets: [web]
  → web 可用 → ✗ 隐藏(不需要备选)
  → web 不可用 → ✓ 显示(作为备选)

两者都未指定 → 始终显示

这意味着 Hermes 的技能列表是动态的——同一个 Agent 在有/无浏览器的环境中看到的可用技能不同。

Part 2: Markdown Body 标准章节

# Git Feature Branch Workflow

Standard workflow for feature branches with conventional commits.

## When to Use
- User asks to create a feature branch
- Tasks involving git operations with branch protection

## Quick Reference
| Action              | Command                          |
|---------------------|----------------------------------|
| Create branch       | `git checkout -b feat/xxx`       |
| Conventional commit | `git commit -m "feat: desc"`     |

## Procedure
### 1. Create Feature Branch
...具体步骤...

### 2. Make Changes and Commit
...具体步骤...

## Pitfalls
- **忘记 fetch**: 分支基于过时的 main
- **大 PR**: 超过 400 行审查质量下降
- **force push 共享分支**: 只对自己的 branch 用 --force-with-lease

## Verification
- [ ] Branch name follows convention
- [ ] All commits follow conventional format
- [ ] CI checks pass

Pitfalls 章节是关键——不是预设的,是 Agent 踩坑后自动补充的。第 1 次生成可能 2 条,第 5 次使用后可能 6 条。

四层渐进式加载

Tier 0: 系统提示注入 (~500 tokens)
        所有技能的 name + 一句话 description
        ★ 每个会话自动加载 ★

  ─── Agent 判断需要某个技能 ───

Tier 1: skills_list() (~3K tokens)
        详细元数据:name + description + tags + version

  ─── Agent 决定用某个特定技能 ───

Tier 2: skill_view("git-workflow")
        完整 SKILL.md 内容

  ─── Agent 需要参考文档 ───

Tier 3: skill_view("git-workflow", "references/api.md")
        特定参考文件

Token 节省(50 个技能场景):

方式 消耗
全量加载(传统) 50 × ~2000 = ~100K tokens
Hermes 渐进式(用了 2 个技能) 500 + 3000 + 2×2000 = ~7,500 tokens
节省 92%+

Hermes Skill 比标准 Skill 多出来的东西

Hermes 兼容 agentskills.io 开放标准,但在其之上做了大量扩展:

Hermes 独有能力 标准 Skill 有没有 解决什么问题
条件激活(fallback/requires) 没有 技能按环境动态显示隐藏
技能级配置声明 + 交互收集 没有 首次加载自动收集 API Key 等
平台限制(platforms) 没有 按 OS 过滤不可用技能
关联技能(related_skills) 没有 技能间推荐
四层渐进式加载 通常两层 节省 90%+ token
references 子目录 + Tier 3 按文件加载 不规范 精确按需加载参考文档
Agent 自动创建/修改 不支持 技能从经验中生长
远程环境自动挂载 不支持 Docker/SSH/Modal 透明使用

本质区别:标准 skill 是一个静态文档格式,Hermes 在这个格式上加了运行时智能

技能的完整生命周期

类比:OpenClaw 的 skill 是你买的菜谱书——菜品丰富但跟你的口味无关;Hermes 的 skill 是你自己的烹饪笔记——一开始粗糙,但每次做完会批注"下次盐少放一点",半年后比任何菜谱都好用。


六、功能全景

工具系统

  • 47+ 内置工具,20 个工具集
  • MCP 服务器集成(stdio + HTTP 传输)
  • 插件生命周期钩子:pre_llm_call / post_llm_call / on_session_start / on_session_end

多平台消息网关

单一网关进程同时连接 14+ 平台:CLI / TUI / Telegram / Discord / Slack / WhatsApp / Signal 等。

六种终端后端

Local / Docker / SSH / Daytona / Singularity / Modal——从 $5 VPS 到 GPU 集群。

AI 提供商

Nous Portal(400+ 模型)/ OpenRouter(200+)/ OpenAI / Anthropic / Hugging Face / z.ai / GLM / Kimi / MiniMax / 自定义端点。hermes model 一键切换,支持备用提供商故障转移 + 凭证池轮转。

其他

语音模式、浏览器自动化、图像生成、检查点 + 回滚、IDE 集成(VS Code / Zed / JetBrains)、OpenAI 兼容 API 服务器。


七、与其他框架的定位对比

框架 核心定位 自我改进 记忆 适合谁
Hermes Agent 自学习单 Agent 运行时 原生内置 四层分流 个人/小团队,长期使用
OpenClaw 多 Agent 编排控制平面 双文件+混合索引 企业多用户治理
LangGraph 状态机 Agent 编排 手动 可配置 构建复杂 Agent 流程
CrewAI 角色扮演多 Agent 协作 基础 多角色团队场景
AutoGen 对话驱动多 Agent 部分反馈循环 对话式 多 Agent 对话编排

“OpenClaw treats an agent as a system to be orchestrated. Hermes treats an agent as a mind to be developed.”

Hermes Agent 和上面这些不是同品类竞争——它是一个运行时,不是编排框架。可以和 LangGraph 互补使用。


八、局限性与风险

局限 说明
不支持 Windows 仅 Linux / macOS / WSL2
单 Agent 设计 不适合复杂多 Agent 编排
技能生态尚浅 对比 OpenClaw 13,000+ 技能
自我改进依赖使用深度 需要持续使用才能体现价值
检索能力较弱 FTS5 关键词匹配不如向量+BM25
安全面 自主代码执行 + 多平台接入 = 攻击面大

潜在风险:自动生成技能的质量控制、长期使用后记忆膨胀、底层模型的工具调用能力直接影响学习效果。


九、选型建议

选 Hermes Agent 如果你

  • 是个人开发者或小团队
  • 有大量重复性工作流
  • 注重数据隐私(零遥测)
  • 愿意"养"一个越来越懂你的 Agent

选 OpenClaw 如果你

  • 需要多用户、多通道企业治理
  • 依赖丰富的插件生态
  • 需要更强的检索能力
  • 需要可审计的技能优先级控制

两者都不选如果你

  • 需要多 Agent 编排 → LangGraph / CrewAI
  • 只需要 IDE 内代码辅助 → Claude Code / Cursor
  • 需要对话式多 Agent → AutoGen

参考文献

  1. MarkTechPost. “Nous Research Releases Hermes Agent.” 2026-02-26. Nous Research Releases 'Hermes Agent' to Fix AI Forgetfulness with Multi-Level Memory and Dedicated Remote Terminal Access Support - MarkTechPost
  2. NousResearch. “Hermes Agent - GitHub.” GitHub - NousResearch/hermes-agent: The agent that grows with you · GitHub
  3. NousResearch. “Hermes Agent Self-Evolution Plan.” https://github.com/NousResearch/hermes-agent-self-evolution/blob/main/PLAN.md
  4. Hermes Agent Docs. “Working with Skills.” Working with Skills | Hermes Agent
  5. Webvise. “The Self-Improving AI Agent That Learns From Every Task.” 2026-04-01. https://webvise.io/blog/hermes-agent-self-improving-ai
  6. UserOrbit. “Hermes Agent vs OpenClaw.” 2026-04-03. Hermes Agent vs OpenClaw: Which AI Agent Runtime Should You Choose? | Userorbit
  7. Vectorize. “How Hermes Agent Memory Actually Works.” 2026-03-31. How Hermes Agent Memory Actually Works (And How to Make It Better)
  8. Vectorize. “OpenClaw vs Hermes Agent: Memory Compared.” 2026-03-31. OpenClaw vs Hermes Agent: Memory Compared
  9. Hermes Agent Docs. “Agent Loop Internals.” Agent Loop Internals | Hermes Agent
  10. Hermes Agent Docs. “Architecture.” Architecture | Hermes Agent
3 个赞

已放进知识库拜读 :nerd_face:

1 个赞

Hermes 出来那么久,暂时还没进行体验和去了解原理,听说比 openclaw 节约 tokens,但是这里不断生成和修正 skill 不应该是更消耗 token 吗 :thinking: 还是说在别的地方节约了

Hermes agent 的核心其实就是evo那套. 也是港大开源的OpenSpace 的技能进化(os还能多个agent一同进化,比ha好多了.相当于一个”改善”,全团队受益). 整合到agent中.而且还整合了记忆. 但我个人不太喜欢.它的记忆方式默认使用的sqlist, 这很黑盒啊.

要知道agent开始胡编乱造的原因大概率是因为上下文被污染了. 这放到sqlist中就很不方便清理了.


而hermes的核心其实是禁止,是方向.让agent不跑偏.而不是skills进化…

2 个赞