[ICML'26] MemEvolve: Meta-Evolution of Agent Memory Systems

May 5, 2026 ยท View on GitHub

[ICML'26] MemEvolve: Meta-Evolution of Agent Memory Systems

Python License arXiv

Introduction

๐ŸŽ‰๐ŸŽ‰๐ŸŽ‰ MemEvolve has been accepted by ICML 2026!

This repo is the official implementation of MemEvolve: Meta-Evolution of Agent Memory Systems.

Traditional self-improving memory systems operate under a fixed memory architecture, where the memory interface ฮฉ is predefined and remains static. Within this architecture, the agent iteratively populates and updates its memory base MtM_t through interaction with the environment and task experiences. To transcend this limitation, we propose a dual-evolution process that jointly evolves the agent's memory base and its underlying memory architecture.

Our framework, MemEvolve, enables both the memory content and the memory system itself to adapt and improve over time through meta-evolution, enabling more adaptive and resource-aware memory-driven reasoning.


Setup

1. Environment Setup

conda create -n memevolve python=3.10
conda activate memevolve
cd Flash-Searcher-main
pip install -r requirements.txt

Optional (only if you need to use crawl4ai):

playwright install  # Install browser binaries for crawl4ai

2. Configure Environment Variables

Copy .env.example to .env and fill in your API keys:

cp Flash-Searcher-main/.env.example Flash-Searcher-main/.env
# Then edit Flash-Searcher-main/.env with your actual API keys

See .env.example for all available configuration options and their descriptions.

Tip: For better evolution quality, use stronger models like claude-sonnet-4.5 or gpt-5 for ANALYSIS_MODEL and GENERATION_MODEL.

3. Dataset Preparation

GAIA: Download from https://huggingface.co/datasets/gaia-benchmark/GAIA

  • Use Feb 13, 2025 version (commit 897f2dfbb5c952b5c3c1509e648381f9c7b70316)
  • Expected structure:
    ./data/gaia/validation/
      โ”œโ”€โ”€ metadata.jsonl
      โ”œโ”€โ”€ 076c8171-9b3b-49b9-a477-244d2a532826.xlsx
      โ”œโ”€โ”€ 1f975693-876d-457b-a649-393859e79bf3.mp3
      โ””โ”€โ”€ ... (various task files)
    

WebWalkerQA: Download from https://huggingface.co/datasets/callanwu/WebWalkerQA

  • Place main-00000-of-00001.jsonl in ./data/webwalkerqa/
  • Rename to webwalkerqa_main.jsonl
  • Run sampling script to generate subset:
    cd data/webwalkerqa
    python sample_webwalkerqa.py
    
  • Expected output: ./data/webwalkerqa/webwalkerqa_subset_170.jsonl

xBench: Download from https://github.com/xbench-ai/xbench-evals

  • Use DeepSearch-2505.csv and rename to DeepSearch.csv
  • Expected path: ./data/xbench/DeepSearch.csv

EvolveLab

EvolveLab is a Unified Codebase for Self-Evolving Memory.

Evaluate on Datasets

GAIA Dataset:

python run_flash_searcher_mm_gaia.py \
    --infile ./data/gaia/validation/metadata.jsonl \
    --outfile ./gaia_output/lightweight_results.jsonl \
    --memory_provider lightweight_memory \
    --sample_num 20 \
    --max_steps 40

WebWalkerQA:

python run_flash_searcher_webwalkerqa.py \
    --infile ./data/webwalkerqa/webwalkerqa_subset_170.jsonl \
    --outfile ./webwalkerqa_output/lightweight_results.jsonl \
    --memory_provider lightweight_memory \
    --sample_num 20 \
    --max_steps 40

xBench:

python run_flash_searcher_mm_xbench.py \
    --infile ./data/xbench/DeepSearch.csv \
    --outfile ./xbench_output/lightweight_results.jsonl \
    --memory_provider lightweight_memory \
    --sample_num 20 \
    --max_steps 40

Key Parameters

ParameterDescriptionExample
--memory_providerMemory system to evaluateagent_kb, lightweight_memory, cerebra_fusion_memory
--sample_numNumber of tasks to sample20 (runs first 20 tasks)
--max_stepsMaximum agent steps40
--disable_memory_evolutionDisable online memory evolutionAdd flag to skip take_in_memory

MemEvolve includes 11 baseline memory systems (reproduced from literature) and 2 evolved systems (generated by our framework):

Memory SystemTypePaperSource
AGENT_KBBaselineAgent-KBhttps://github.com/OPPO-PersonalAI/Agent-KB
SKILLWEAVERBaselineSkillWeaverhttps://github.com/OSU-NLP-Group/SkillWeaver
MOBILEEBaselineMobile-Agent-Ehttps://x-plug.github.io/MobileAgent/
EXPELBaselineExpeLhttps://github.com/LeapLabTHU/ExpeL
VOYAGERBaselineVoyagerhttps://github.com/tsinghua-fib-lab/AgentSquare
DILUBaselineDILUhttps://github.com/tsinghua-fib-lab/AgentSquare
GENERATIVEBaselineGenerative Agentshttps://github.com/tsinghua-fib-lab/AgentSquare
MEMPBaselineMempN/A
DYNAMIC_CHEATSHEETBaselineDynamic Cheatsheethttps://github.com/suzgunmirac/dynamic-cheatsheet
AGENT_WORKFLOW_MEMORYBaselineAgent Workflow Memoryhttps://github.com/zorazrw/agent-workflow-memory
EVOLVERBaselineEvolverhttps://github.com/KnowledgeXLab/EvolveR
LIGHTWEIGHT_MEMORYEvolvedGenerated by MemEvolveN/A
CEREBRA_FUSION_MEMORYEvolvedGenerated by MemEvolveN/A

MemEvolve

MemEvolve enables meta-evolution of memory systems through a dual-loop process that evolves both memory content and architecture.

Automatic Multi-Round Evolution

Run tournament-style meta-evolution with automatic candidate selection:

python evolve_cli.py auto-evolve gaia \
    --num-rounds 3 \
    --provider agent_kb \
    --num-systems 3 \
    --task-batch-x 40 \
    --top-t 2 \
    --extra-sample-y 20 \
    --creativity 0.5 \

Parameters:

  • --num-rounds: Number of evolution rounds
  • --provider: Initial baseline memory system
  • --num-systems: Number of candidate systems to generate per round
  • --task-batch-x: Number of tasks for initial evaluation
  • --top-t: Number of top systems to advance to finals
  • --extra-sample-y: Additional tasks for final evaluation
  • --creativity: Innovation level (0.0-1.0)
  • --use-pareto-selection: Enable multi-objective Pareto optimization

Process per round:

  1. Collect base logs: Run current base system on x tasks
  2. Generate candidates: Generate N candidate systems (each with independent analysis, generation, creation, validation)
  3. Tournament: Evaluate N+1 systems (N new + 1 base) on the same x tasks
  4. Finals: Top t systems compete on (y sampled from tournament + new x) tasks
  5. Selection: Winner becomes base for next round

Note: This is not the final release. A more robust version is still being organized.

If auto-evolution hits an error, it will exit and save a checkpoint. Just fix the issue manually (we'll show you how), then re-run the same command to continue from where it stopped.

Need more control? Use the manual step-by-step approach below โ€” you decide how many tasks to run and where to save the outputs.


Manual Step-by-Step Evolution

For fine-grained control over each phase:

Step 1: Analyze Task Trajectories

python evolve_cli.py analyze ./test/test_traj/lightweight_memory \
    --work-dir ./memevolve_work \
    --provider agent_kb

Analyzes execution logs to identify memory system bottlenecks and improvement opportunities.

Step 2: Generate New Memory System

python evolve_cli.py generate \
    --work-dir ./memevolve_work \
    --creativity 0.5

Step 3: Create System Implementations

python evolve_cli.py create \
    --work-dir ./memevolve_work

Generates production-ready Python code for provider classes and configuration files.

Step 4: Validate Systems

python evolve_cli.py validate \
    --work-dir ./memevolve_work

Citation

If you use MemEvolve in your research, please cite:

@misc{zhang2025memevolvemetaevolutionagentmemory,
      title={MemEvolve: Meta-Evolution of Agent Memory Systems}, 
      author={Guibin Zhang and Haotian Ren and Chong Zhan and Zhenhong Zhou and Junhao Wang and He Zhu and Wangchunshu Zhou and Shuicheng Yan},
      year={2025},
      eprint={2512.18746},
      archivePrefix={arXiv},
      primaryClass={cs.CL},
      url={https://arxiv.org/abs/2512.18746}, 
}

Acknowledgments

This work builds upon and adapts code from:

  • Flash-Searcher โ€” DAG-based parallel execution framework for agent task execution and trajectory collection
  • mini-swe-agent โ€” Automated code fixing during validation phase

We sincerely thank the contributors of these projects for their excellent work in advancing agent-based systems.

Special thanks to the authors of the baseline memory systems:

  • Agent-KB, SkillWeaver, MobileE, ExpeL, Voyager, DILU, Generative Agents, MEMP, Dynamic Cheatsheet, Agent Workflow Memory, Evolver

License

This project is licensed under the Apache License 2.0. See the LICENSE file for details.