OpenEvolve + World Knowledge
OpenEvolve with an open-world retrieval layer: a gate decides when to search the web, and the search query is itself evolved.
# OpenEvolve + World Knowledge.
# The OpenEvolve half is its bundled preset VERBATIM (scaffolds/openevolve/config.yaml) — the two
# methods must differ by the layer alone, so nothing else may drift between the files.
seed: 42 # OpenEvolve DatabaseConfig.random_seed default
general:
max_iterations: 100
max_solution_length: 10000 # OpenEvolve Config.max_code_length default (over-length children rejected)
population: # MapElitesIslandsPopulation
num_islands: 5
archive_size: 100
population_size: 1000
feature_dimensions: [complexity, diversity]
feature_bins: 10
migration_interval: 50 # migrate every N island generations
migration_rate: 0.1 # fraction of each island migrated to ring neighbours
diversity_reference_size: 20
selection_policy: # OpenEvolveSelectionPolicy
# (also reads population.num_islands + population.feature_dimensions)
exploration_ratio: 0.2 # P(uniform-random parent from current island)
exploitation_ratio: 0.7 # P(fitness-weighted parent from the archive)
elite_selection_ratio: 0.1 # top fraction of island used as inspirations
num_inspirations: 3 # prompt.num_top_programs (the PromptBuilder reuses this count)
num_diverse: 2 # prompt.num_diverse_programs
proposer: # OpenEvolve LLMConfig defaults (apply only to a model built from this preset)
top_p: 0.95
max_tokens: 4096
timeout: 60
world_knowledge: # the layer; every knob here is one the method reads
enabled: true
gate: llm # G — the method. "always" removes the gate; "heuristic" is the
# random-rate control at retrieve_probability.
query_evolution_steps: 3 # 1 = one search + listwise LCLM reranking, no query evolution;
# 2+ = M construct→search→rerank→reflect rounds.
use_search_database: true # false = stateless retrieval (no selection, persistence, or credit)
select_policy: delta # delta | relevance_novelty (LLM utility top-K) | recency | full
select_num: 6 # K entries shown to the gate and the query operator
documents_per_entry: 3
max_document_chars: 2000 # per-document cap in the evidence block
rerank_max_document_chars: 8000 # per-candidate cap in the long-context reranking prompt
rerank_relevance_weight: 0.5 # direct, specific, actionable usefulness
rerank_novelty_weight: 0.5 # marginal information beyond prior and higher-ranked evidence
gate_prompt: retrieval_gating_w_search_database
gate_prompt_no_search_database: retrieval_gating_wo_search_database
query_prompt: query_construction_w_search_database
query_prompt_no_search_database: query_construction_wo_search_database
rerank_prompt: reranking_w_search_database
rerank_prompt_no_search_database: reranking_wo_search_database
reflect_prompt: query_self_reflection
evidence_block_prompt: retrieved_evidence_block_wo_image # omit Tavily images from mutation prompt
history_programs: 5 # fallback only — OpenEvolve renders its own evolution history and
# the layer reuses that, so the gate reads what the mutator reads
grounding: none # "offline" (grounding_file: a jsonl seed) or "online" (one
# pre-loop search) for the RAG-grounded setting
retrieval_backend: tavily # tavily (default) | claude_code
tavily: # Search(q) — needs TAVILY_API_KEY + open-galapagos[web-search]
search_depth: advanced
max_results: 5 # top-K documents kept per search
include_answer: true
include_raw_content: markdown # the page itself, not only the snippet
claude_code: # selected only when retrieval_backend=claude_code
cli_path: claude # uses the host CLI's existing login
model: claude-opus-4-8 # explicit null opts back into the CLI default
effort: xhigh # explicit null opts back into the model default
timeout: 120
max_turns: 2 # minimum 2; use 3+ when allow_web_fetch=true
max_results: 5
allow_web_fetch: false # WebSearch only by default; true also permits bounded WebFetch
max_budget_usd: null