https://github.com/A-EVO-Lab/a-evolve
The official repository of "Position: Agentic Evolution is the Path to Evolving LLMs".
https://github.com/A-EVO-Lab/a-evolve
agents continual-learning llm-agents recursive-self-improvement self-evolving self-improving self-improving-ai
Last synced: 3 days ago
JSON representation
The official repository of "Position: Agentic Evolution is the Path to Evolving LLMs".
- Host: GitHub
- URL: https://github.com/A-EVO-Lab/a-evolve
- Owner: A-EVO-Lab
- Created: 2026-02-20T04:52:59.000Z (5 months ago)
- Default Branch: main
- Last Pushed: 2026-06-25T03:14:08.000Z (20 days ago)
- Last Synced: 2026-06-25T05:08:20.156Z (20 days ago)
- Topics: agents, continual-learning, llm-agents, recursive-self-improvement, self-evolving, self-improving, self-improving-ai
- Language: Python
- Homepage:
- Size: 7.58 MB
- Stars: 618
- Watchers: 6
- Forks: 80
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- awesome-agent-evolution - **A-Evolve** - The PyTorch for Agentic AI. Open-source infrastructure that evolves any agent across any domain with zero human intervention. #1 on MCP-Atlas (79.4%). by [@A-EVO-Lab](https://github.com/A-EVO-Lab) (679 stars) (Agent Evolution and Self-Improvement)
README
# A-Evolve π§¬: The Universal Infrastructure for Self-Improving Agents
[](https://github.com/A-EVO-Lab/a-evolve)
[](https://opensource.org/licenses/MIT)
[](https://www.python.org/downloads/)
[](https://arxiv.org/abs/2602.00359)
> **The PyTorch for Agentic AI.**
> A-Evolve is an open-source infrastructure that evolves *any* agent, across *any* domain, using *any* evolution algorithm β with zero human intervention.
[Quick Start](#quick-start) | [News](#news) | [Benchmark Highlights](#benchmark-highlights) | [Architecture & Design](#architecture--design) | [Contribution](#community--contributing)

---
## What Does A-Evolve Do?
You provide a Base Agent. A-Evolve returns a SOTA Agent. **3 lines of code. 0 hours of manual harness
engineering.** One infra, any domain, any evolution algorithm.
```python
import agent_evolve as ae
evolver = ae.Evolver(agent="./my_agent", benchmark="swe-verified")
results = evolver.run(cycles=10)
```
### Benchmark Highlights
By applying our open-source **reference evolution algorithms** to a base Claude Opus-4.6 model with **zero manual harness engineering**, A-Evolve pushed agents into top-tier performance across four diverse benchmarks:
π’ MCP-Atlas
π₯ #1
Baseline β 79.4% (+3.4pp)
π΅ SWE-bench Verified
~#5
Baseline β 76.8% (+2.6pp)
π£ Terminal-Bench 2.0
~#7
Baseline β 76.5% (+13.0pp)
π‘ SkillsBench
#2
Baseline β 34.9% (+15.2pp)
π’ ARC-AGI
π₯ #2 Community Leaderboard
Baseline β 12.3% (+2.2pp)
π΅ OSWorld
β
Baseline β 69.6% (+3.9pp)
π£ SWE-bench Lite
Evolved
63.7 β 67.0% (+3.3pp)
π‘ Ο-bench
Evolved
72.7 β 77.0% (+4.3pp)
π’ CL-Bench
Evolved
29.5 β 34.0% (+4.5pp)
π΅ WebArena-Infinity
Evolved
72.5 β 76.3% (+3.8pp)

> *All results achieved with a single Claude Opus-4.6 base model, evolved using A-Evolve's sample algorithms. 0 hours of human harness engineering. Data checked March 2026.*
### News
- **6/11** **New Tech Report**, [*A-Evolve-Training: Autonomous Post-Training of a 30B Model
*](https://arxiv.org/abs/2606.20657) (arXiv 2606.20657). We present an autonomous system that runs this loop with no human in the loop, **post-training a 30B Nemotron** across four rounds over multiple weeks. The autonomously produced model reaches a held-out score of **0.86 against the top human submission's 0.87** on the public NVIDIA Nemotron-Reasoning Challenge leaderboard, placing 8th of ~4000 at the time of writing. To the best of our knowledge, this is the first publicly reported autonomous post-training run at this scale, where prior public autonomous-ML-research demonstrations sit at GPT-2-class (~124M) budgets. The same system also post-trains the **120B and 550B** Nemotron models.
- **6/1** **New Research Paper**, [*Adaptive Auto-Harness: Sustained Self-Improvement for Agentic System Deployment on Open-Ended Task Streams*](https://arxiv.org/abs/2606.01770) (arXiv 2606.01770). We address the brittleness of traditional auto-harness systems when moving from fixed benchmarks to open-ended, shifting task streams. We introduce **Adaptive Auto-Harness**, a framework that significantly outperforms five existing auto-harness baselines across prediction-market, security-competition, and event-forecasting streams.
- **5/30** **New Research Paper**, [*Harness Updating Is Not Harness Benefit: Disentangling Evolution Capabilities in Self-Evolving LLM Agents*](https://arxiv.org/abs/2605.30621) (arXiv 2605.30621).Tested across 7 evolver models (Opus-4.6, Sonnet-4.6, Qwen-3.5-9B, GPT-OSS-120B, etc.) Γ 6 solver agents Γ 3 agentic benchmarks (SWE-bench Verified, MCP-Atlas, SkillsBench), we answered **which model produced the best harness update and which models benefits the most from harness update**.
- **05/04** **New Benchmark Results**, A-Evolve added [results](https://x.com/HenryL_AI/status/2051711038618480816?s=20) on ARC-AGI-3, evolving a multi-agent system to be more powerful on solving difficult tasks like [ARC-AGI-3](https://arcprize.org/arc-agi/3). Improving performance from 10% to 12%.
- **04/20** **New Algorithm Drop**, A-Evolve added new evolutionary algorithm [GEPA](https://x.com/HenryL_AI/status/2046326722912739713?s=20), submitted by the [GEPA](https://gepa-ai.github.io/gepa/blog/) team.
- **04/10** **Integration**, A-Evolve is officially integrated into [Orch-Research Skills Library](https://x.com/HenryL_AI/status/2042688465855488476), along with others including AutoResearch, OpenRLHF, DeepSpeed, SGLang
- **04/07** **New Agent Drop**, We added recently leaked public ClawCode (Claude Code), took the evolution harness + skills we learned on Terminal-Bench 2.0 (TB2) and directly transplanted them onto the ClawCode. [Result](https://x.com/HenryL_AI/status/2041621538580132280) on TB2: baseline **67.8%** β **72.9%** (+5.1pp uplift)
- **04/03** **New Algorithm Drop**, A-Evolve added new evolutionary algorithm [Meta-Harness](https://x.com/HenryL_AI/status/2040218374458974715)
- **03/30** **Integration**, A-Evolve is officially integrated into [AutoResearchClaw](https://github.com/aiming-lab/AutoResearchClaw)
- **03/25** π **Open-source A-Evolve**, the universal infrastructure for developing and testing evolving algorithms.
- **03/25** π **Open-source 4 evolving algorithms** developed with A-Evolve, achieving SOTA **(#1, ~#5, ~#7, #2)** on MCP-Atlas, SWE-bench Verified, Terminal-Bench 2.0, and SkillsBench.
- **02/17** π Release the official implementation of [*Position: Agentic Evolution is the Path to Evolving LLMs*](https://arxiv.org/abs/2602.00359) (arXiv 2602.00359).
We are evolving fast! Support our research by leaving a β.
### What Does an Evolved Agent Look Like?
A-Evolve mutates real files in the workspace. Here's a before/after from our MCP-Atlas evolution:
Before (Seed Workspace)
After (Evolved β 79.4% on MCP-Atlas)
```
mcp_agent/
βββ manifest.yaml
βββ prompts/system.md β 20 lines, generic
βββ skills/ β empty
βββ memory/ β empty
```
```
mcp_agent/
βββ manifest.yaml
βββ prompts/system.md β 20 lines, unchanged
βββ skills/
β βββ entity-verification/SKILL.md β NEW
β βββ search-iteration/SKILL.md β NEW
β βββ multi-requirement/SKILL.md β NEW
β βββ code-execution/SKILL.md β NEW
β βββ conditional-handler/SKILL.md β NEW
βββ memory/
βββ episodic.jsonl β 6 entries
```
5 targeted skills outperformed 10 generic ones. Every mutation is git-tagged (`evo-1`, `evo-2`, β¦) for full reproducibility.
---
## Quick Start
### 1. Install
```bash
# PyPI (recommended)
pip install a-evolve # core
pip install a-evolve[anthropic] # Claude support
pip install a-evolve[mcp] # MCP-Atlas benchmark
pip install a-evolve[swe] # SWE-bench benchmark
pip install a-evolve[all] # everything
# From source (for development)
git clone https://github.com/A-EVO-Lab/a-evolve.git && cd a-evolve
pip install -e ".[all,dev]"
```
### 2. Evolve β 3 Lines of Code
```python
import agent_evolve as ae
evolver = ae.Evolver(
agent="swe-verified", # built-in seed workspace (or path to yours)
benchmark="swe-verified", # built-in benchmark adapter
)
results = evolver.run(cycles=10)
print(f"Final score: {results.final_score:.3f}")
print(f"Converged: {results.converged}")
```
A-Evolve ships with built-in seed workspaces (`swe`, `mcp`, `terminal`, `skillbench`) and benchmark adapters (`swe-verified`, `mcp-atlas`, `terminal-bench 2.0`, `skill-bench`). Point `agent=` at any of them β or at your own workspace directory.
### 3. Bring Your Own Agent (BYOA)
To make any agent evolvable, implement one method β `solve()`:
```python
from agent_evolve.protocol.base_agent import BaseAgent
from agent_evolve.types import Task, Trajectory
class MyAgent(BaseAgent):
def solve(self, task: Task) -> Trajectory:
return Trajectory(task_id=task.id, output="result")
```
Then evolve it:
```python
evolver = ae.Evolver(agent=MyAgent("./my_workspace"), benchmark="mcp-atlas")
results = evolver.run(cycles=10)
```
Your agent's evolvable state (prompts, skills, memory) lives as a standard directory β the [Agent Workspace](#the-agent-workspace-a-file-system-contract). A-Evolve mutates these files; your agent reloads. See [Architecture & Design](#architecture--design) for the full picture.
For benchmark-specific walkthroughs, see [SWE-bench Demo Guide](docs/swe-bench-demo.md), [MCP-Atlas Demo Guide](docs/mcp-atlas-demo.md), and [SkillBench Setup Guide](docs/skillbench-setup.md).
---
## Architecture & Design

### The Agent Workspace: A File System Contract
A-Evolve's core insight: **all evolvable agent state lives on the file system as a standard directory structure.** This lets the evolution engine mutate any agent via LLM-driven file operations β without knowing the agent's internals.
```
my_agent/
βββ manifest.yaml # identity, entrypoint, evolvable layers
βββ prompts/system.md # system prompt
βββ skills/ # SKILL.md files (dynamic skill library)
βββ tools/ # tool configurations
βββ memory/ # episodic + semantic memory (JSONL)
```
The evolution engine reads these files, analyzes performance logs, and writes mutations back. The agent reloads. That's the entire contract.
### The Evolution Loop
Every cycle follows five phases:
```
βββββββββββ βββββββββββ βββββββββββ ββββββββ ββββββββββ
β Solve βββββΆβ Observe βββββΆβ Evolve βββββΆβ Gate βββββΆβ Reload β
βββββββββββ βββββββββββ βββββββββββ ββββββββ ββββββββββ
```
1. **Solve** β Agent processes a batch of tasks (black-box execution).
2. **Observe** β Collect trajectories + benchmark feedback into structured logs.
3. **Evolve** β Evolution engine analyzes observations and mutates workspace files (prompts, skills, memory).
4. **Gate** β Validate mutations on holdout tasks. Regressed mutations are rolled back via git.
5. **Reload** β Agent reloads from the (possibly rolled-back) workspace.
The loop converges when EGL (Evolutionary Generality Loss) stabilizes or `max_cycles` is reached. Every accepted mutation is git-tagged (`evo-1`, `evo-2`, β¦), providing a full audit trail.
### Built-in Adapters
A-Evolve ships with ready-to-use benchmark adapters and seed workspaces:
| Adapter | Domain | Seed Workspace | Best Result |
| :--- | :--- | :--- | :--- |
| [`swe-verified`](docs/swe-bench-demo.md) | Real-world GitHub issues (Python repos) | `seed_workspaces/swe/` | **76.8%** (~#5) |
| [`mcp-atlas`](docs/mcp-atlas-demo.md) | Tool-calling via MCP (16+ servers) | `seed_workspaces/mcp/` | **79.4%** (π₯ #1) |
| [`terminal-bench`](docs/terminal-bench-demo.md) | Terminal/CLI ops in Docker | `seed_workspaces/terminal/` | **76.5%** (~#7) |
| [`skill-bench`](docs/skillbench-setup.md) | Agentic skill discovery | `seed_workspaces/skillbench/` | **34.9%** (~#2)|
| [`cl-bench`](examples/cl_bench_examples/) | Continual-learning rubric evaluation | β | **38.0%** |
### Pluggability: Bring Your Own Everything
A-Evolve is a **framework**, not a standalone agent. Every axis is pluggable:
| Axis | Interface | You Provide | Built-in Examples |
| :--- | :--- | :--- | :--- |
| **Agent (BYOA)** | `BaseAgent.solve()` | Any agent architecture β ReAct, Plan-and-Solve, custom | `SweAgent`, `McpAgent` |
| **Benchmark (BYOE)** | `BenchmarkAdapter.get_tasks()` / `.evaluate()` | Any domain with task + evaluation signal | SWE-bench, MCP-Atlas, Terminal-Bench 2.0, SkillsBench, CL-bench |
| **Algorithm (BYO-Algo)** | `EvolutionEngine.step()` | Any evolution strategy | `AEvolveEngine` (LLM-driven mutation) |
| **LLM Provider** | `LLMProvider.complete()` | Any model API | Anthropic, OpenAI, AWS Bedrock |
### Built-in Evolution Algorithms
A-Evolve ships with 4 reference evolution algorithms, each targeting different domains and strategies:
| Algorithm | Strategy | Best For | Docs |
| :--- | :--- | :--- | :--- |
| [`adaptive_evolve`](docs/algorithms/adaptive-evolve.md) | Per-claim feedback analysis + meta-learning | MCP-Atlas (π₯ #1, 79.4%) | [Guide](docs/algorithms/adaptive-evolve.md) |
| [`adaptive_skill`](docs/algorithms/adaptive-skill.md) | LLM-driven workspace mutation with bash tool access | Terminal-Bench 2.0 (~#7, 76.5%) | [Guide](docs/algorithms/adaptive-skill.md) |
| [`skillforge`](docs/algorithms/skillforge.md) | LLM-driven workspace mutation with EGL gating | SkillsBench (#2, 34.9%) | [Guide](docs/algorithms/skillforge.md) |
| [`guided_synth`](docs/algorithms/guided-synth.md) | Memory-first evolution + LLM-guided intervention synthesis | General-purpose, SWE-bench (~#5, 76.8%) | [Guide](docs/algorithms/guided-synth.md) |
#### Plugging in a custom evolution algorithm
Each algorithm lives in its own directory under `algorithms/`. Implement a single method:
```python
from agent_evolve.engine.base import EvolutionEngine
from agent_evolve.types import StepResult
class MyEvolutionEngine(EvolutionEngine):
def step(self, workspace, observations, history, trial) -> StepResult:
# Analyze observations, mutate workspace files, optionally run trial tasks
...
return StepResult(accepted=True, score=new_score)
```
Then pass it to the Evolver:
```python
evolver = ae.Evolver(
agent="swe-verified",
benchmark="swe-verified",
engine=MyEvolutionEngine(config),
)
```
The engine has full access to shared primitives β `TrialRunner` (on-demand validation), `EvolutionHistory` (observation + version queries), and `VersionControl` (git-based rollback) β but is never forced to use them. Minimal contract, maximum freedom.
---
## Community & Contributing
A-Evolve is built for the research community. We welcome contributions across every axis of the framework.
### For Algorithm Researchers
If you work in LLM self-optimization, reinforcement learning, or agent architectures β implement the `EvolutionEngine` interface and your algorithm instantly gains access to:
- Diverse environments (SWE-bench, MCP-Atlas, Terminal-Bench 2.0, SkillsBench, and more).
- Standardized agent workspace representations.
- Rigorous evaluation, gating, and logging infrastructure.
Drop your algorithm into `agent_evolve/algorithms/your_algo/` and open a PR.
### For Benchmark Authors
Implement `BenchmarkAdapter` to plug any new evaluation domain into A-Evolve. The interface is two methods: `get_tasks()` and `evaluate()`.
### Get Involved
- β **Star this repo** to support our research β we are evolving fast.
- π **[Open an issue](https://github.com/A-EVO-Lab/a-evolve/issues)** to report bugs or request features.
- π **[Submit a PR](https://github.com/A-EVO-Lab/a-evolve/pulls)** β new evolution algorithms, benchmark adapters, agent implementations, and documentation improvements are all welcome.
- π¬ **[Join our Discord]()** to discuss research directions, share results, and collaborate.
---
## Citation
If you use A-Evolve in your research, please cite our position paper:
```bibtex
@article{lin2026position,
title={Position: Agentic Evolution is the Path to Evolving LLMs},
author={Lin, Minhua and Lu, Hanqing and Shi, Zhan and He, Bing and Mao, Rui and Zhang, Zhiwei and Wu, Zongyu and Tang, Xianfeng and Liu, Hui and Dai, Zhenwei and others},
journal={arXiv preprint arXiv:2602.00359},
year={2026}
}
```
---
## License
[MIT](https://opensource.org/licenses/MIT)