scaling-group/eve
요약
EvE(Evolutionary Ensemble)는 기존의 고성능 코딩 에이전트들을 분산된 진화적 앙상블로 활용하는 프레임워크입니다. 이 시스템은 솔버 개체군과 에이전트 개체군의 두 가지 개체군을 공동으로 진화시키며, 알고리즘 설계나 코드 개선 같은 까다로운 작업에 강력한 솔루션을 검색합니다.
핵심 포인트
- EvE는 분산된 진화적 앙상블로 작동하는 코딩 에이전트 프레임워크입니다.
- 솔버 개체군과 에이전트 개체군의 두 개체군을 공동으로 진화시킵니다.
- 알고리즘 설계, 코드 개선 등 복잡한 문제 해결에 사용됩니다.
- Codex를 기본 백엔드로 하며, Hook 신뢰 및 검증 과정을 거쳐야 합니다.
논문 · 개요 · 빠른 시작 · 작동 방식 · 자체 작업 설정하기 · 예시 · 논문 · 커뮤니티 · 인용
개념적인 실행: 각 tmux 창은 독립적인 코딩 에이전트가 솔루션을 편집, 평가 및 진화시키는 환경입니다.
EvE는 기존의 고성능 코딩 에이전트들을 분산된 진화적 앙상블(decentralized evolutionary ensemble)로 감싸서 두 개의 개체군을 공동으로 진화시킵니다. 하나는 저장소 내 기능적 구성 요소들로 이루어진 **솔버 개체군(solver population)**이고, 다른 하나는 안내와 기술이 지속적으로 자체 정제되는 **에이전트 개체군(agent population)**입니다.
결과를 테스트하거나 평가할 수 있는 까다로운 작업에 EvE를 사용하세요. 예를 들어 알고리즘 설계, 코드 개선 또는 수학 문제 해결 등이 있습니다.
EvE를 실행하려면 다음을 제공해야 합니다:
- github 저장소나 로컬 폴더의 코드베이스 또는 수학 문제와 같은 작동 환경;
- 편집이 허용되는 솔루션 파일 또는 폴더, 예를 들어 코드 파일이나 증명 초안;
- 각 솔루션을 평가하는 스코어링 단계(scoring steps), 예를 들어 셸 스크립트, 에이전트 심사 프롬프트(agent judge prompts) 또는 이들의 조합.
EvE는 작업별 워크플로우나 수작업으로 만든 기술을 요구하지 않고도 강력한 솔루션을 검색합니다.
중요 사항
EvE는 타사 코딩 에이전트들을 오케스트레이션(orchestrates)합니다. AI 서비스 접근, 자격 증명 공유 또는 제공자 인증, 속도 제한(rate limits), 사용량 제한(usage limits) 등의 우회 기능을 제공하지 않습니다. 각 에이전트 세션은 해당 제공자를 위해 구성한 자격 증명을 사용합니다.
- 의존성 설치.
uv sync - 에이전트 인증.
Codex가 기본 백엔드입니다. 이를 설치하고 Codex 인증을 구성하세요.OpenCode는opencode auth login으로 저장된 자격 증명 또는driver.model_providers.<provider>.env_key를 통해 선언된 API 키 중 하나를 지원합니다. 명시적으로 구성된 환경 자격 증명이 저장된 OpenCode 인증보다 우선합니다.configure-eve-driver를 참조하세요.
드라이버별 세부 정보를 위한 스킬입니다. -
Hook 신뢰 (Codex >= 0.130.0용). EvE는 워크스페이스 샌드박싱 및 예산 프롬프트를 위해 후크(hooks)를 사용합니다. Codex를 사용하는 경우 저장소 루트에서 기기당 한 번 실행하세요:
uv run python -m scaling_evolve.providers.agent.codex_hooks codex # Type /hooks -> press t to trust all -> Esc -> Ctrl-C
검증(Verify). 모든 것이 작동하는지 확인하기 위해 Codex를 사용하여 짧은 스모크 테스트를 실행하세요:
uv run python -m scaling_evolve.algorithms.eve.runner \ --config-name=circle_packing.smoke
이 명령어는 헤드리스(headless) Codex 에이전트를 사용한 짧은 원형 패킹 데모를 실행합니다.
수학 문제에 EvE를 시도하려면, 저장소 루트에서 Codex를 시작하고 Math Proof 퀵스타트 기능을 사용하도록 요청하세요:
codex
이 문제에 대한 Math Proof 퀵스타트를 실행하세요:
<여기에 문제 진술을 붙여넣으세요>
Codex에게 더 자세한 내용을 요청할 수도 있습니다.
(a) 원샷 코드 제안. (b) 코딩 에이전트가 저장소 내부에서 작동합니다. (c) EvE는 여러 후보 솔루션에 걸쳐 많은 코딩 에이전트를 실행하고, 결과를 점수화하며, 유용한 이력을 다음 라운드로 전달합니다.
EvE는 두 가지 공진화하는 개체군을 유지합니다: 코드 저장소 내의 기능적 구성 요소를 포함하는 **솔버 개체군(solver population)**과 각 에이전트가 누적 작업 로그와 Elo 기반 점수를 지닌 **에이전트 개체군(agent population)**입니다. EvE는 기본 에이전트 기질을 고정하고, 에이전트 행동을 결정하는 누적 가이드 및 스킬의 진화에 중점을 둡니다.
각 에이전트는 모든 종속성이 포함된 전용 워크스페이스에서 작동하며, 그 수정 범위는 지정된 파일로 명시적으로 제한되고 생성 후 검사를 통해 강제됩니다. 솔버 개선과 자기 참조적 에이전트 최적화는 하나의 통합 단계에서 발생합니다: 에이전트가 코드 저장소를 편집하는 동안 가이드와 스킬을 개선하고, 이 가이드는 이후 반복 과정에서 구체적인 점수로 평가되어 샘플링 확률을 주도합니다.
공식 절차는 아래 알고리즘에 제시됩니다.
알고리즘: 에이전트의 진화하는 앙상블(Evolving Ensemble of Agents)
각 반복(iteration)마다, EvE는 고성능의 작업 에이전트 세트를 샘플링하고, 솔버 및 에이전트의 참조 세트와 함께 이를 기본 코드 저장소에 결합하여 컨텍스트를 제공합니다. 그런 다음 동기식 레이스(synchronous race)가 진행됩니다: 각 작업 에이전트는 자체 워크스페이스 내에서 동일한 참조 세트를 사용하여 새로운 솔버 후보와 잠재적으로 수정된 에이전트를 생성합니다. 모든 에이전트가 동일한 참조를 정제하도록 강제함으로써, 솔버 품질의 분산(variance)은 각 에이전트 전략의 효과에 직접적으로 귀속됩니다. 평가 후, 쌍별 승패 매트릭스(pairwise win-loss matrix)가 구성되고 에이전트 Elo 등급이 업데이트됩니다. 가이던스를 수정한 에이전트는 새로운 전략과 그 절차적 증거를 보존하며 모집단(population)에 다시 통합됩니다.
자신의 작업에 EvE를 실행하려면 애플리케이션 설정 파일(application config), 평가 설정 파일(evaluation config), 최적화기 설정 파일(optimizer config), 그리고 최고 수준의 실험 설정 파일(top-level experiment config)이 필요합니다. 검색 예산(search budget)이나 샘플링 정책을 조정해야 하는 경우 기본 루프부터 시작하세요.
애플리케이션 설정 파일은 작업을 명시하고, EvE가 스냅샷을 가리키도록 하며, 에이전트가 수정할 수 있는 파일을 선언합니다:
# configs/eve/application/your_task.yaml
application:
name: your-task
...
Git 기반 작업의 경우, path 대신 github_url과 commit을 사용하세요:
application:
name: your-task
github_url: https://github.com/your-org/your-repo
...
EvE는 path 또는 쌍인 github_url/commit 중 하나를 허용하며, 둘 다는 허용하지 않습니다.
editable.files와 editable.folders 외부의 모든 수정은 경계 검사기(boundary checker)에 의해 거부됩니다. boundary_failure_score를 일반 평가 결과와 동일한 점수 스키마에서 하드-실패 값으로 설정하세요. 작업이 다른 점수 방향이나 범위를 사용하는 경우, 위에 있는 숫자를 맹목적으로 복사하지 마세요.
하나 이상의 평가 단계를 제공해야 합니다. 셸 단계(shell step)는 후보 워크스페이스 내에서 실행되며, 귀하의 점수 스키마가 예상하는 점수 파일을 작성합니다:
# configs/eve/evaluation/your_task.yaml
evaluation:
steps:...
평가 단계에서는 셸 스크립트 대신 immutable 및 prompt 디렉터리를 제공하여 judge agent를 사용할 수도 있습니다. 점수가 결정론적인 프로그래밍 메트릭이 아닌 주관적이거나 구조화된 에이전트 판단을 필요로 하는 경우 해당 경로를 사용하십시오.
최적화기(optimizer) 설정은 가이드 인구(guidance population)를 시드하고 워커 변형(worker variants)을 정의합니다:
# configs/eve/optimizer/your_task.yaml
optimizer:
initial_guidance: configs/eve/optimizer/your_task/initial_guidance
...
initial_guidance는 최적화기 인구를 시드하며 시간이 지남에 따라 EvE에 의해 수정될 수 있습니다. 워커의 immutable 디렉터리는 각 워커 작업 공간으로 복사된 고정 스캐폴드(fixed scaffold)이며, 그 자체가 진화하지 않습니다. 워커의 prompt 디렉터리에는 entrypoint 및 boundary-repair prompt와 같이 드라이버가 사용하는 프롬프트 텍스트가 포함됩니다.
Hydra를 사용하여 실행을 구성하십시오. 기본 루프를 먼저 사용하고, 실행 예산(run budget)이나 샘플링 동작(sampling behavior)을 변경해야 할 때만 루프 설정을 재정의하십시오.
# configs/eve/your_task.yaml
defaults:
- runtime: default
...
저장소 루트에서 실행하십시오:
uv run python -m scaling_evolve.algorithms.eve.runner --config-name=your_task
완전한 작동 예제는 configs/eve/math_proof_quickstart.yaml, configs/eve/math_proof_jensen_covering.yaml, configs/eve/circle_packing.yaml, 그리고 configs/eve/circle_packing.smoke.yaml에서 확인하십시오.
ICON(In-Context Operator Networks)에 적용했을 때, EvE는 수작업으로 설계된 기준선(baseline) 대비 일반화 오차를 80% 이상 감소시키는 새로운 위치 인코딩 메커니즘을 자율적으로 발견하여, 치명적인 분포 외 실패(out-of-distribution failure)를 견고한 성능으로 전환했습니다. 재현 지침은 examples/icon/README.md를 참조하십시오.
우리는 동일한 컴퓨팅 예산 하에 독립적으로 두 번 실행되는 세 가지 실험 조건을 비교합니다.
EvE: 지속적인 에이전트 진화(continuous agent evolution)가 이루어지는 전체 앙상블입니다. Static-Initial: 검색 과정 전반에 걸쳐 초기 에이전트를 사용하며, 에이전트 진화는 없습니다. Static-Final: 해당 EvE 실행에서 가장 높은 평가를 받은 단일 에이전트를 추출하여 고정(frozen)한 후 새로운 검색을 수행합니다.
모든 변형(각 2회 독립 실행)에 대한 검색 궤적입니다. y축은 평균 오차의 누적 최소값이며 (낮을수록 좋음), x축은 누적 등가 토큰 수(백만 단위)입니다. 회색 점선은 Seed 기준선을 나타냅니다.
두 EvE 실행은 거의 동일한 최종 오차에 수렴하며 유사하게 하강합니다. Static-Initial 실행들은 분기됩니다: 하나는 결국 EvE에 근접하는 반면, 다른 하나는 더 높은 수준에서 평탄화됩니다. Static-Final은 더 높은 평가를 받은 에이전트에서 시작했음에도 불구하고 단계 불일치(phase mismatch) 문제를 겪습니다. 고정된 에이전트는 원래 EvE 실행의 후기 단계에 최적화되었지만, 새로운 검색에는 이 에이전트가 더 이상 가지고 있지 않은 초기 단계 탐색 전략이 필요합니다. 지속적인 진화는 성능과 견고성 모두에 필수적입니다.
모든 6개 실행에 대한 완전한 원시 검색 추적(각 솔버의 소스 코드, 에이전트 대화, 가이드 업데이트 및 평가 점수)은 v0.1.0 릴리스에서 확인할 수 있습니다.
질문, 피드백 또는 문제가 발생했나요? 저희 Slack 워크스페이스에 참여해 주세요.
연구에서 EvE를 사용하신다면 논문을 인용해 주십시오:
@article{yu2026eve,
title = {Evolving Ensemble of Agents},
author = {Yu, Zongmin and Yang, Liu},
...
EvE는 증가하는 과학 문제 세트에 적용되었습니다.
EvE를 사용한 추가 논문 및 해당 BibTeX 항목은 docs/papers.md에서 확인하십시오.
만약 귀하의 작업에서 EvE를 사용하신다면, 목록에 귀하의 논문을 추가할 수 있도록 풀 리퀘스트(pull request)를 환영합니다.
본 프로젝트는 싱가포르 국립대학교 과학 컴퓨팅 및 지능 그룹(Scaling Group)의 일부입니다.
이 저장소를 사용하는 코드베이스에는 NOTICE 파일을 포함해 주십시오 (이미 이 저장소에 포함되어 있습니다).
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub AI Tools의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기