/autoresearch — 자기 개선 프롬프트 최적화
Karpathy의 autoresearch 패턴: 생성(Generate) → 평가(Evaluate) → 점수(Score) → 유지/폐기(Keep/Discard) → 변이(Mutate) → 반복(Repeat)
아키텍처
핵심 엔진: crates/sgr-agent/src/autoresearch.rs (Rust 모듈, genai 기능)
대시보드: skills/autoresearch/dashboard.py (Python, 독립형 뷰어)
테스트 케이스: skills/autoresearch/test_cases/*.json (컴파일 시 include_str!로 포함)
대상(Targets)
| 대상 | 최적화 대상 | 평가 지표 |
|---|---|---|
tool-selection | 에이전트의 도구 설명 | 66개 테스트 태스크 중 올바른 도구 선택률(%) |
system-prompt | 에이전트 시스템 프롬프트 (SOUL.md) | 의사 결정 품질: 올바른 도구 + 일관된 추론 (4개 기준) |
skill | 모든 SKILL.md 파일 | 이진 기준 통과율 (4개 기준) |
decision-parser | 구조화된 출력 스키마 | 파싱 성공률 + 필드 품질 (5개 기준) |
사용법 (Rust API)
use sgr_agent::autoresearch::{AutoResearch, Config, Target};
let config = Config {
target: Target::ToolSelection,
batch_size: 10,
cycle_secs: 120,
gen_model: "gemini-2.5-flash".into(),
eval_model: "claude-sonnet-4-6".into(),
data_dir: "autoresearch_data/tool-selection".into(),
};
let ar = AutoResearch::new(config);
ar.run(20).await?; // 20 사이클
빠른 시작 (CLI — rc-cli에 연결된 경우)
# 도구 선택 최적화 (가장 영향력 있음)
cargo run -- autoresearch tool-selection --cycles 20
# 시스템 프롬프트 최적화
cargo run -- autoresearch system-prompt --cycles 10
# 특정 스킬 최적화
cargo run -- autoresearch skill --name delegate --cycles 15
# 의사 결정 파싱 최적화
cargo run -- autoresearch decision-parser --cycles 10
# 대시보드 (Python, 독립형)
python3 skills/autoresearch/dashboard.py --target tool-selection --port 8501
작동 방식
각 사이클:
- 생성: 현재 프롬프트로 N개의 출력 생성 (Gemini 사용 — 에이전트가 사용하는 모델과 동일)
- 평가: 각 출력을 이진 기준에 대해 평가 (Claude Sonnet 사용 — 객관성을 위한 다른 모델)
- 점수: 모든 출력에서 통과한 기준의 합계
- 유지: 점수가 best_score보다 높으면 유지, 그렇지 않으면 폐기
- 변이: 승리한 프롬프트를 변이하여 개선 시도
- 기록: 대시보드 추적을 위해 JSONL로 기록
- 대기: 다음 사이클까지 대기 (기본 2분)
환경 변수
GEMINI_API_KEY— 생성용 (에이전트가 사용하는 모델과 동일한 모델로 테스트)ANTHROPIC_API_KEY— 평가 및 변이용 (객관성을 위한 다른 모델)
팁
- 이진 평가 — 예/아니오 기준이 가장 효과적입니다. 리커트 척도는 피하세요.
- 과도한 제약 금지 — 너무 많은 좁은 기준은 모델이 평가를 속이게 만듭니다.
- 10-20 사이클이면 일반적으로 상당한 개선이 이루어집니다.
- 결과 적용 — 최상의 프롬프트는
data/<target>/best_prompt.txt에 저장됩니다.
비용
- 도구 선택: 사이클당 ~$0.05 (저렴 — 테스트당 LLM 호출 1회, 문자열 일치 평가)
- 시스템 프롬프트: 사이클당 ~$0.20 (테스트당 생성 + LLM 평가)
- 스킬: 사이클당 ~$0.30 (테스트당 생성 + LLM 평가, 더 긴 출력)
- 의사 결정 파서: 사이클당 ~$0.15 (생성 + 부분 로컬 평가)
- 20사이클 ≈ 대상에 따라 $1-6. 영구적인 개선.