Hermes Agent Self-Evolution applies evolutionary search to the text that shapes Hermes Agent's behaviour: skill files, tool descriptions, system prompt sections, and eventually tool code. It uses DSPy with GEPA (Genetic-Pareto Prompt Evolution), which reads execution traces to work out why a variant failed and then proposes targeted mutations. No GPU training is involved; the loop runs on API calls, with a stated cost of roughly $2–10 per optimisation run.
A run reads the current skill, prompt, or tool, generates an evaluation dataset (synthetic, or drawn from real session history in Claude Code, Copilot, and Hermes), evolves candidate variants, evaluates them against traces, filters them through constraint gates, and opens a pull request against hermes-agent with the winning variant.
Phase 1, evolving SKILL.md files, is implemented. Tool descriptions, system prompt sections, tool implementation code (via the external Darwinian Evolver CLI), and a continuous improvement loop are planned phases.
Features
- Skill evolution: evolve_skill optimises a named skill over a chosen number of iterations
- Evaluation sources: synthetic data or a session database of real agent transcripts
- Trace-driven mutation: GEPA uses execution traces to propose targeted changes rather than random edits
- Test gate: every variant must pass the full pytest suite
- Size limits: skills capped at 15 KB and tool descriptions at 500 characters
- Caching compatibility: no mid-conversation prompt changes
- Semantic preservation: variants must keep the original purpose
- Human review: changes ship as pull requests, never as direct commits