Hermes Agent 自我进化机制深度解析

> Nous Research 出品 | 2026-05-13

概览

Hermes Agent 是当前最受关注的开源自进化 AI Agent 框架(GitHub 135k+ Stars)。它的核心竞争力不是常规的 agent 能力(工具调用、多平台集成等),而是内置的自我进化回路——边用边学、后台整理归档、离线优化提升。

这套自我进化机制分为三层架构,逐层深入:

第一层:运行时学习回路(Hermes Agent 内置)

从对话中创造技能

Hermes 的与众不同在于:它会把用户的经验固化为可复用的技能。

当用户在对话中说"帮我 review 这个 PR"、或输入 /skill-create,Hermes 会:

1. 记录当前任务上下文、工具调用链、最终输出

2. 从中抽象出可复用的流程

3. 生成一个标准化的 SKILL.md 文件

4. 保存到 ~/.hermes/skills//SKILL.md

生成的技能文件格式:


name: my-skill
description: 这个技能做什么
type: agent-created
created_at: 2026-05-13
state: active
## Task
## Procedure
## Examples

Curator(后台技能整理师)

Curator 是一个 1781 行 的自治后台进程,是自我进化的"图书管理员"。

调度策略:

技能生命周期管理(纯函数,不消耗 Token):


创建 → [30天无使用] → stale(已过时) → [90天无使用] → archived(已归档)
                                ↑ 重新使用则 reactivate(恢复激活)

核心工作:Umbrella Consolidation(雨伞式合并)

这与传统的去重方式完全不同。去重问"这两个一样吗?",雨伞合并问:

> "这些狭窄技能共同服务于哪个更大的概念?一个人类维护者会写 N 个独立技能,还是写一个带标注子章节的技能?"

🌂 举个例子

假设 agent 在对话中自动创建了这些技能:


pr-review.md          — "用 AI review PR"
pr-merge-check.md     — "检查 PR 是否可以 merge"
pr-label.md           — "给 PR 加 label"
pr-description.md     — "生成 PR 描述"
pr-assign-reviewer.md — "分配 PR reviewer"

传统去重会说:五个完全不同的技能,各自保留。

雨伞合并会问:它们都属于 pr 这个领域。一个人类维护者会写五个分开的技能,还是一个叫 pr 的技能,里面分章节?


pr.md(合并后)
 ├─ ## review
 ├─ ## merge-check
 ├─ ## label
 ├─ ## description
 └─ ## assign-reviewer

结果:只看 pr.md 一个入口,其余四个归档。

去重 vs 雨伞合并

传统去重雨伞合并
问的问题"这两个一样吗?""它们属于同一个更大的概念吗?"
操作删除重复合并到类级别、降级为子文件
效果减少数量改善**可发现性(findability)**
对数量的影响减少可能不变或增加(创建新 umbrella)
判断成本低(余弦相似度)高(需理解语义领域)

为什么要这么做

Agent 从对话中自动创建的技能天然是狭窄的("今天做了一次 PR review" → 创建了 pr-review.md)。如果不整理,几百个狭窄技能会变成垃圾堆——东西都在但根本找不到。

雨伞合并的核心目标是改善可发现性,不是省磁盘空间。

3 种操作选择

操作使用场景
**吸收到已有雨伞**集群里已经有一个够宽的技能了。把狭窄技能的内容作为子章节加进去,归档狭窄技能
**创建新雨伞**每个狭窄技能够都窄,没有一个够宽的。新建一个类级别 SKILL.md
**降级为引用文件**狭窄但有价值的内容,移入 `references/`、`templates/` 或 `scripts/` 子目录,技能归档但知识不丢

安全约束

第二层:离线自我进化引擎(hermes-agent-self-evolution)

这是独立仓库,用 DSPy + GEPA 实现。GEPA(Genetic-Pareto Prompt Evolution)是 ICLR 2026 Oral 论文,MIT 协议。

核心理念

> 不调模型权重、不开 GPU。所有"进化"都发生在 prompt 层面——改写 SKILL.md 的内容。

每次运行成本:约 $2-10(纯 API 调用)。

完整进化流水线


输入:当前 SKILL.md / 工具描述 / 系统提示
        │
        ▼
【第一步】生成评估数据集
        ├── Synthetic(LLM 读 skill 后生成测试用例)
        ├── SessionDB(从 Claude Code/Copilot/Hermes 对话历史挖掘)
        └── Golden(手写 JSONL 黄金测试集)
        │
        ▼
【第二步】GEPA 优化器 ← 读取历史执行轨迹
        │           (理解"为什么失败",不只是"知道失败了")
        ├─► 变异(Mutation):修改 skill 文本
        └─► 评估(Evaluation):LLM-as-Judge 多维打分
        │
        ▼
【第三步】约束门控(必须全部通过才能部署)
        1. ✅ pytest 测试套件 100% 通过
        2. ✅ 技能 ≤15KB
        3. ✅ 文件大小增长 ≤20%
        4. ✅ 语义不变性(不偏离原始目的)
        5. ✅ PR 审核(永不直接提交)
        │
        ▼
输出:进化后的 SKILL.md → 自动创建 PR

多维适应度评分

维度权重说明
correctness50%输出是否正确
procedure_following30%是否严格遵循技能定义的流程
conciseness20%是否简洁
length_penalty扣分超过 90% 上限时线性扣分,最多 -0.3

外部数据导入解决冷启动

新用户没有黄金训练集怎么办?Hermes 会从已有工具的历史记录中挖数据:

数据源读取路径内容
Claude Code`~/.claude/history.jsonl`用户的提问
GitHub Copilot`~/.copilot/session-state/*/events.jsonl`用户+助手的对话
Hermes Agent`~/.hermes/sessions/*.json`用户+助手+工具调用的富上下文

安全过滤 — 严格的正则匹配防止 API keys、token、密码泄露到训练数据。

两阶段相关性过滤:

1. 关键词启发式预筛(便宜快速)

2. LLM 评分(判断是否对目标 skill 相关)

第三层:完整进化路线图(Phase 1-5)

Phase优化目标引擎状态
✅ Phase 1SKILL.md 文件内容DSPy + GEPA**已实现**
🔲 Phase 2工具描述文字DSPy + GEPA计划中
🔲 Phase 3系统提示各部分DSPy + GEPA计划中
🔲 Phase 4工具实现代码Darwinian Evolver计划中
🔲 Phase 5持续进化自动化管道完整 CI/CD计划中

架构对比:Hermes vs OpenClaw

维度Hermes AgentOpenClaw
技能来源**自动创建**(对话中学习)+ 社区安装手动编写 SKILL.md + Hub 安装
技能管理Curator 后台自动整理、合并、归档手动管理
自我进化GEPA 离线优化 + 运行时学习回路无内置进化机制
记忆系统三层记忆(会话/长期/技能)MEMORY.md + memory/ 文件
平台覆盖11+ 平台原生20+ 平台(插件生态)
代码许可Apache 2.0专有

移植到 OpenClaw — 已有基础 & 可行性分析

社区已有的自我进化项目

项目作者方法层级
**self-evolve**[longmans](https://github.com/longmans/self-evolve)插件级 Q-learning + episodic memory,hooks 注入✅ 运行时学习
**capability-evolver**[autogame-17](https://github.com/autogame-17)GEP 引导进化,分析执行历史,协议约束✅ 离线优化
**evolver**[autogame-17](https://github.com/autogame-17)Meta-skill → 运行时自检 + 自主写代码/更新记忆✅ 运行时 + 代码
**self-evolving-skill**[whtoo](https://github.com/whtoo)预测编码 + 残差能量分析 + 经验回放缓冲器✅ 运行时学习
**self-improving-agent**[peterskoett](https://clawhub.ai/pskoett/self-improving-agent).learnings/ 日志 → 提升到 AGENTS.md/TOOLS.md/SOUL.md✅ 学习记录

此外还有 LeoYeAI/openclaw-master-skills(1209+ 自动更新技能)和 VoltAgent/awesome-openclaw-skills(5400+ 筛选技能库),说明社区对自动进化技能的需求很强烈。

差距分析:Hermes vs OpenClaw 生态

能力Hermes AgentOpenClaw 现有生态差距
**从对话自动创建技能**✅ 内置,运行时自动检测❌ 只有手动 `skill_creator` 工具**大**
**Curator 后台整理归档**✅ 1781 行自治进程,7天周期❌ 无自动合并/归档机制**大**
**GEPA 离线进化**✅ DSPy + GEPA,ICLR 2026 Oral⚠️ capability-evolver 用 GEP,但缺少 DSPy evaluation loop**中**
**多维评判打分**✅ correctness / procedure / conciseness + length penalty⚠️ self-evolve 的 Q-learning 较为简单**中**
**外部数据导入冷启动**✅ 挖掘 Claude Code / Copilot 历史对话❌ 无**大**
**质量约束门控**✅ 测试套件 / 大小 / 增长 / 语义 / PR⚠️ capability-evolver 有协议约束,但很简单**中**

移植方案:分三阶段

Phase 1 ✅ 这周就能做 — GEPA 进化引擎 → OpenClaw Skill

DSPy + GEPA 完全独立于 Hermes,MIT 协议,可以直接封装成一个 OpenClaw skill:


skill: skill-evolver
工作流:
  1. read 目标 SKILL.md
  2. SyntheticDatasetBuilder 生成测试用例
  3. GEPA 变异 SKILL.md 内容
  4. LLM-as-Judge 打分(correctness / procedure / conciseness)
  5. 约束门控(大小 / 结构 / 增长 / 测试)
  6. edit 写入进化后的版本
  7. 写分析报告到 memory/

成本: ~$2-10/次,纯 API。不需要改 OpenClaw 内核。

Phase 2 下周末 — Curator-lite → Cron + Subagent


cron: 每周一次
workflow(用 subagent 隔离执行,不影响主 session):
  1. 扫描 ~/.openclaw/skills/*/SKILL.md
  2. 检测集群(按名称/描述分组)
  3. LLM 判断是否可合并为"雨伞技能"
  4. write/edit 合并,archive 副本到 .archive/
  5. 报告到 memory/

Phase 3 按需 — 运行时技能创建

这是最难但最值钱的部分。Hermes 的 agent loop 内置了"这段对话可以变成 skill"的检测逻辑。OpenClaw 的 agent loop 是黑盒,只能通过 plugin hooks 介入。

可行路径:在 longmans/self-evolve 已经实现的 Q-learning + 记忆注入 hooks 基础上扩展,加入技能自动创建逻辑。

为什么建议先做 Phase 1

关键启示

1. 不进化模型的 agent 进化 — 改 prompt 不改权重,纯粹文本层面的遗传算法

2. 读取执行轨迹 — GEPA 不只是看"输出了什么",而是看执行过程中哪里失败,从根本上修复

3. "技能降级"是精华设计 — 狭窄的技能不是丢弃,而是降级为引用文档,知识仍然可检索

4. 双环架构 — 运行时(Curator)做整理维持秩序,离线(GEPA)做优化提升质量

5. 135k Stars 的底气 — 这套自我进化机制让 Hermes 在使用中越用越好,而不是越用越糟

6. OpenClaw 生态已有萌芽但缺统筹 — 多个独立项目覆盖了不同角度,但没有一个统一的进化框架。Phase 1 的 GEPA 包装是最好的切入点

代码仓库