别再从零开始了!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 不是营销话术,它对应三层递进的架构设计:
- Grows = 内置闭合学习循环,Agent 从任务中自动提取可复用知识
- With You = 用户建模(Honcho),Agent 了解你的偏好和风格
- 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
参考文献
- 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
- NousResearch. “Hermes Agent - GitHub.” GitHub - NousResearch/hermes-agent: The agent that grows with you · GitHub
- NousResearch. “Hermes Agent Self-Evolution Plan.” https://github.com/NousResearch/hermes-agent-self-evolution/blob/main/PLAN.md
- Hermes Agent Docs. “Working with Skills.” Working with Skills | Hermes Agent
- Webvise. “The Self-Improving AI Agent That Learns From Every Task.” 2026-04-01. https://webvise.io/blog/hermes-agent-self-improving-ai
- UserOrbit. “Hermes Agent vs OpenClaw.” 2026-04-03. Hermes Agent vs OpenClaw: Which AI Agent Runtime Should You Choose? | Userorbit
- Vectorize. “How Hermes Agent Memory Actually Works.” 2026-03-31. How Hermes Agent Memory Actually Works (And How to Make It Better)
- Vectorize. “OpenClaw vs Hermes Agent: Memory Compared.” 2026-03-31. OpenClaw vs Hermes Agent: Memory Compared
- Hermes Agent Docs. “Agent Loop Internals.” Agent Loop Internals | Hermes Agent
- Hermes Agent Docs. “Architecture.” Architecture | Hermes Agent



