Darwin Gödel Machine: 자기수정 에이전트
자기수정이란 무엇인가
섹션 제목: “자기수정이란 무엇인가”AlphaEvolve는 알고리즘 해법을 진화시킨다. 그런데 에이전트의 알고리즘이 아니라 에이전트 자신의 코드를 진화시키면 어떨까? 이것이 **Darwin Gödel Machine(DGM)**의 질문이다.
고전적인 괴델 기계(Gödel Machine) 개념은 자기 자신의 코드를 수정할 수 있는 AI를 가정한다. DGM(Zhang et al., 2025)은 이 아이디어를 실용적으로 구현한다. 에이전트가 코딩 벤치마크(SWE-bench)에서 자신의 스캐폴드 코드를 반복적으로 수정하고, 수정 후 성능이 향상되었는지 같은 벤치마크로 검증한다. 검증을 통과한 수정만 채택하는 방식으로 안전을 보장한다.
결과는 인상적이다. SWE-bench Verified에서 초기 20.0%에서 자동화된 자기수정 루프를 통해 50.0%까지 향상되었다.
DGM의 자기수정 루프 구조
섹션 제목: “DGM의 자기수정 루프 구조”┌──────────────────────────────────────────────────────────────────┐│ Darwin Gödel Machine 자기수정 루프 │└──────────────────────────────────────────────────────────────────┘
시작: 초기 에이전트 스캐폴드 코드 (v0) │ ▼ ┌─────────────────────────────────┐ │ ① 현재 에이전트 성능 측정 │ │ SWE-bench에서 k개 태스크 실행│ │ 통과율 기록 │ └──────────────┬──────────────────┘ │ ▼ ┌─────────────────────────────────┐ │ ② 스캐폴드 수정 제안 │ │ LLM이 현재 코드를 분석하고 │ │ 개선 가능한 부분 식별 │ │ → 새 스캐폴드 코드 생성 │ └──────────────┬──────────────────┘ │ ▼ ┌─────────────────────────────────┐ │ ③ 수정된 에이전트로 벤치마크 │ │ 동일 SWE-bench 태스크 재실행 │ │ 새 통과율 측정 │ └──────────────┬──────────────────┘ │ 개선됨? ├── 예 ──▶ 수정 채택 (vN → vN+1) │ └── 아니오 ──▶ 수정 폐기, 다른 변이 시도
(충분한 반복 후 최고 버전 선택)여기서 핵심은 벤치마크가 루프를 닫는 검증기 역할을 한다는 점이다. 에이전트가 자신에게 유리한 방향으로 검증을 왜곡할 수 없다 — 검증 기준(SWE-bench 태스크)은 에이전트 외부에, 고정되어 있다.
무엇을 수정하는가: 스캐폴드의 층위
섹션 제목: “무엇을 수정하는가: 스캐폴드의 층위”DGM에서 에이전트가 수정하는 것은 자신이 문제를 풀기 위해 사용하는 스캐폴드 코드다. 여기에는 여러 층위가 있다.
| 수정 층위 | 예시 |
|---|---|
| 도구 인터페이스 | bash 도구의 타임아웃 값, 출력 파싱 방식 |
| 컨텍스트 관리 | 어떤 파일을 먼저 읽을지, 요약 전략 |
| 오류 처리 | 특정 에러 패턴에 대한 재시도 로직 |
| 작업 분해 | 큰 태스크를 어떻게 서브태스크로 나눌지 |
| 검증 전략 | 수정 후 어떤 테스트를 먼저 실행할지 |
에이전트가 이 층위들을 시험하고, 벤치마크로 검증하고, 좋은 변이를 축적한다. 수십~수백 세대를 거치면서 특정 벤치마크에 특화된 스캐폴드가 자동으로 진화한다.
AlphaEvolve와의 비교
섹션 제목: “AlphaEvolve와의 비교”같은 진화적 루프지만 DGM은 진화의 대상이 다르다.
┌────────────────────┬──────────────────────┬──────────────────────┐│ │ AlphaEvolve │ Darwin Gödel Machine│├────────────────────┼──────────────────────┼──────────────────────┤│ 진화 대상 │ 알고리즘 해법(코드) │ 에이전트 스캐폴드 코드 ││ 평가 기준 │ 수학적 성능, 처리량 │ 코딩 벤치마크 통과율 ││ 집단 구조 │ 명시적 집단 유지 │ 버전 계보 유지 ││ 변이 단위 │ 단일 알고리즘 코드 │ 에이전트 구성 요소 ││ 자기참조 │ 없음 │ 있음 (자신을 수정) │└────────────────────┴──────────────────────┴──────────────────────┘AlphaEvolve는 도구(알고리즘)를 만들고, DGM은 도구를 사용하는 장인(에이전트) 자신을 개선한다.
안전 보장: 검증 없이 채택하지 않는다
섹션 제목: “안전 보장: 검증 없이 채택하지 않는다”자기수정 에이전트에 대한 가장 큰 우려는 안전이다. 에이전트가 자기 자신을 무한히 수정하다가 목적을 벗어나거나, 더 나쁜 방향으로 퇴화하지 않는가?
DGM의 핵심 안전 메커니즘은 검증 우선(verify-before-adopt) 원칙이다. 모든 스캐폴드 수정은 같은 벤치마크에서 실제로 성능이 개선되었을 때만 채택된다. 검증을 통과하지 못한 변이는 폐기된다. 이는 AlphaEvolve의 적합도 평가와 동일한 역할을 한다.
물론 한계도 있다. 벤치마크 과적합(benchmark overfitting) 이 가능하다. 에이전트가 SWE-bench에 특화되어 실제 다양한 코딩 작업에서는 오히려 성능이 저하될 수 있다. 또한 스캐폴드 수정이 의도치 않은 부작용을 만들 수도 있다 — 이를 완전히 배제하는 검증 설계는 여전히 어려운 문제다.
루프 엔지니어의 관점
섹션 제목: “루프 엔지니어의 관점”DGM이 보여주는 가장 중요한 통찰은 루프 자체가 개선의 대상이 될 수 있다는 것이다. 지금까지의 챕터에서 우리는 루프를 엔지니어가 설계하는 것으로 다뤘다. DGM은 루프가 자신을 설계하는 방향을 가리킨다.
실용적 의미는 두 가지다.
첫째, 메타-루프(meta-loop) 설계. 내부 루프(문제 해결)와 외부 루프(스캐폴드 개선)를 분리하고, 외부 루프의 검증 기준을 명확히 정의하면 자동 개선의 토대가 생긴다.
둘째, 벤치마크의 중요성. 자기수정 루프는 검증 기준의 품질에 전적으로 의존한다. 벤치마크가 나쁘면 루프가 잘못된 방향으로 수렴한다. 무엇을 측정할 것인가가 루프의 방향을 결정한다.
다음 챕터에서는 모델 가중치 자체를 루프로 개선하는 GRPO와 DeepSeek-R1을 살펴본다. 스캐폴드가 아니라 모델 내부가 루프의 대상이 되는 이야기다.