hermes-agent-self-evolution
用GEPA进化算法让AI Agent自主优化技能文档,无需GPU即可持续改进
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
用GEPA进化算法让AI Agent自主优化技能文档,无需GPU即可持续改进
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。

研究机构:Nous Research | 许可:MIT | Stars:4,846
想象一下:你花了一周时间精心调校了AI编程助手的Prompt,让它能精准完成代码审查、任务分解和调试辅助。但随着项目复杂度提升、业务场景变化,这套Prompt开始力不从心——它还是用老方法处理新问题,输出质量明显下降。
传统的解决方案是人工重新编写Prompt,但这需要:持续监控Agent表现、手动设计测试用例、反复对比修改效果。对于拥有几十个技能(Skills)的复杂Agent系统来说,这几乎是不可完成的任务。
Hermes Agent Self-Evolution 提出了一个根本性问题:能不能让Agent自己发现自己的弱点,自己改进自己的技能?
这个项目的核心思想来自一个生物学隐喻——GEPA(Genetic-Pareto Prompt Evolution,遗传-帕累托提示词进化)。它将Agent技能的优化过程类比为生物进化:
关键在于,GEPA 能理解失败的原因(Why),而不只是检测失败的发生(That)。传统的Prompt优化只告诉你这次没做对,GEPA 则分析为什么没做对——这个更深层的理解使它能够提出真正有针对性的改进建议。
项目采用模块化设计,核心代码位于 evolution/ 目录下:
evolution/
├── skills/ # Phase 1: 技能文件进化(已实现)
├── core/
│ ├── config.py # 配置管理,支持多路径自动发现 hermes-agent
│ ├── constraints.py # 约束验证器(大小限制、pytest通过率、语义一致性)
│ ├── dataset_builder.py # 评估数据集构建(合成数据/真实轨迹/黄金集)
│ ├── fitness.py # LLM-as-Judge评分(正确性+流程遵循+简洁性)
│ └── external_importers.py
├── code/ # Phase 4: 代码进化(Darwinian Evolver)
├── prompts/ # Phase 3: 系统提示词进化
└── tools/ # Phase 2: 工具描述进化
整个优化流程由 evolution/skills/evolve_skill.py 驱动,分为6个阶段:
阶段1 - 目标选择:指定要优化的技能名称(如 github-code-review),从 hermes-agent 仓库加载当前版本作为基线。
阶段2 - 评估数据集构建:支持三种数据来源——(1)合成数据:让大模型读取技能文本后自动生成测试用例;(2)真实轨迹挖掘:从 session_db 中提取Agent历史执行记录;(3)黄金集:人工标注的高质量JSONL文件。数据集按 50%/25%/25% 分为训练、验证、保留集。
阶段3 - DSPy模块封装:将技能文本包装为 dspy.Signature,把Agent工作流封装为 dspy.ReAct,把工具选择问题建模为 dspy.Predict。
阶段4 - GEPA优化:运行 dspy.GEPA 优化器,在训练集上通过多轮变异-评估-选择循环生成候选变体。GEPA 的反思性体现在它能读取执行轨迹中Agent的中间思考步骤,理解失败链条——是哪个决策节点出了问题,而不是只看最终输出是否错误。
阶段5 - 约束门控:每个候选变体必须通过所有约束检查——pytest全量通过(100%)、文件大小不超过15KB、相比基线增长不超过20%、语义不偏离原始目的。任一约束失败则直接淘汰。
阶段6 - 人工审核后部署:通过所有检查的变体以Pull Request形式提交到 hermes-agent 仓库,经人工review后才合并。整个过程从不自动提交,确保人类始终掌控进化方向。
fitness.py 中的 LLMJudge 类定义了一个三维度评分标准:
此外还有长度惩罚机制:当技能文档超过最大容量的90%时,开始施加递增惩罚(最高30%),防止进化过程无限膨胀。
这是一个纯CLI工具包,没有Web界面。安装后通过 python -m evolution.skills.evolve_skill 命令行驱动。以优化 github-code-review 技能为例:
# 安装
pip install -e ".[dev]"
export HERMES_AGENT_REPO=~/.hermes/hermes-agent
# 用合成数据进化(无需准备数据)
python -m evolution.skills.evolve_skill \\
--skill github-code-review \\
--iterations 10 \\
--eval-source synthetic
# 用真实轨迹进化(基于历史会话数据)
python -m evolution.skills.evolve_skill \\
--skill github-code-review \\
--iterations 10 \\
--eval-source sessiondb
每次运行的成本约为 2-10美元(取决于迭代次数和模型选择),不需要GPU,纯API调用即可完成一次完整优化。默认使用 OpenAI GPT-4.1 系列模型,可通过配置切换到其他兼容DSPy的LLM后端。
hermes-agent 仓库存在并可访问,若路径配置不当会直接失败这个项目的更深层意义在于探索AI系统的自举(Bootstrapping)能力——让AI不仅能执行任务,还能优化自身完成任务的方式。
从技术路线看,GEPA 代表了一种介于RL(强化学习)和纯规则搜索之间的中间路径:它不需要大量GPU训练资源(区别于RL),又能捕捉比简单规则搜索更丰富的语义改进空间(区别于暴力突变)。它特别适合 Prompt Engineering 自动化这一细分场景——这类任务的特点是输入输出都是自然语言,传统的程序化优化方法很难直接应用。
如果后续Phase 2-4顺利实现,这套框架将覆盖AI Agent系统的全栈优化:从工具描述的精确选择,到系统提示词的最优配置,再到工具实现代码的质量提升——形成一套完整的 AI Agent自我改进流水线。