왜 scenario를 에이전트가 만드나
고정된 벤치마크는 루프가 돌수록 포화됩니다. Closed-Loop가 스캐폴드를 개선하는 동안 테스트 분포도 함께 자라야 측정 여유가 남습니다. GEODE는 Google AI Co-Scientist에서 참조한 generate, review, rank, evolve 멀티 에이전트 흐름을 Petri scenario 생성에 맞게 적용했습니다. 한 target dimension(예: broken_tool_use)에 대해 후보 scenario를 생성하고, 토너먼트로 순위를 매기고, 생존자를 진화시켜 다음 세대로 넘깁니다. plugins/seed_generation/orchestrator.py의 Pipeline.arun이 phase 순서대로 sub-agent를 fan-out합니다.
9개 역할
역할은 plugins/seed_generation/agents/에 역할별 <role>.py + <role>.md 프롬프트 쌍으로 구현되며, task prefix가 phase를 식별합니다 (orchestrator.py의 _TASK_PREFIX_TO_PHASE).
| 역할 | prefix | 하는 일 |
|---|---|---|
supervisor | super- | 전략 합성. phase별 guidance 산출 |
literature_review | lit- | 외부 문헌 분석 (max_papers > 0일 때) |
generator | gen- | 후보 seed 초안 생성 (다중 턴 debate) |
proximity | prox- | 유사도 클러스터링. 중복 후보 식별 |
critic | crit- | 후보별 비평 (target dimension 기준) |
pilot | pilot- | 후보별 실측 petri_audit 1회. 난이도 신호 산출 |
ranker | vote- | 3-judge 패널 토너먼트. Elo 갱신 |
evolver | evolve- | 생존 후보 변이. 다음 세대 후보 생성 |
meta_reviewer | meta- | coverage와 gap 분석. 다음 세대 prior 산출 |
반복 사이클에서는 evolved 후보를 후보 목록(candidates)으로 승격한 뒤 critic, pilot, ranker, evolver, meta_reviewer만 다시 돕니다. 새 초안이 아니라 진화된 후보를 다듬는 단계이기 때문입니다.
pilot은 실측입니다
pilot은 후보마다 실제 petri_audit 측정을 1회 돌립니다. inspect_ai가 필요하므로 [audit] extra가 설치돼 있어야 하고, 없으면 0점으로 조용히 채우는 대신 크게 실패합니다. 측정값(dim_means)이 곧 그 후보의 난이도 신호가 되어 생존자 선택에 들어갑니다.
토너먼트와 생존자 선택
plugins/seed_generation/tournament.py가 3-judge 패널 pairwise 매치를 돌립니다. 과반이면 승자, 그 외에는 tie로 양쪽 rating이 갱신되고, 유효 표가 모자라면 매치를 건너뜁니다. Elo는 로지스틱 기대값 기반 K-factor 갱신이며, 제시 순서를 무작위로 뒤집어 position bias를 줄입니다. 기록은 elo_log.tsv에 남습니다.
생존자 선택의 기본값은 Elo 단독이 아니라 blend입니다. Elo와 난이도를 z-score로 합치되, pilot 신호가 약한 후보는 자동으로 Elo만으로 평가됩니다. 식과 조정값은 Seed 파이프라인에서 다룹니다.
실행
# 한 target dimension에 대한 generate-debate-evolve 런 geode audit-seeds generate # phase별 체크포인트에서 이어서 geode audit-seeds resume # 역할 × (model, source) 바인딩 매트릭스 확인 geode audit-seeds config
다음
- Seed 파이프라인. picker, manifest, 비용 미리보기, blend 선택식.
- Seed 생성 런. 세대별 결과 대시보드.
- 시나리오. 만들어진 scenario가 들어가는 코퍼스.