핵심 요약

LLM 에이전트의 실제 성능은 모델 자체만큼이나 그것을 감싸는 **하네스(harness)**가 결정한다 — 시스템 프롬프트, 주입 지식, 제어 루프, 복구 로직, 설정값. 모델 가중치를 바꿀 수 없는 배포 환경에서 하네스는 유일한 레버다. 그렇다면, 에이전트가 자신의 하네스를 스스로 진화시킬 수 있을까?

이 논문1의 대답은 “그렇다”이지만, 진짜 기여는 “진짜 좋아진 것”을 어떻게 증명하는가에 있다. 기존 하네스 자가진화 연구는 최고 pass rate를 보고 개선을 인정하지만, 이는 노이즈를 최대화하는 평가에서 얻어진 행운의 결과일 수 있다. GSME(Gated Semantic MAP-Elites)는 이 문제를 제안(proposal)과 크레딧(credit)의 분리로 해결한다.

문제: 하네스 자가진화의 두 가지 함정

Figure 1: 자가진화 루프 — Task Agent가 훈련 작업을 실행하고, Evolver가 실패를 진단하여 패치를 제안하며, 결정론적 게이트가 크레딧을 부여한다

하네스를 자동으로 개선하려는 시도는 두 가지 어려움에 직면한다:

1. “진짜 도움이 되었는지” 아는 것

자기 생성 피드백은 시끄럽다. 단일 평가에서 보더라운더 태스크는 몇 점씩 흔들린다. 겉보기 개선이 측정 아티팩트(플래키 샌드박스, 검증기 타임아웃)일 수도 있고, 훈련 셋에 대한 오버피팅일 수도 있다. 이것을 믿고 루프를 돌리면 드리프트가 쌓인다.

2. 무엇을 바꿀 것인가

에딧 공간이 크다. 탐욕적 루프는 두 가지 방향으로 퇴화한다: 대담한 변경이 실패하면 안전한 프롬프트 트윅으로 수렴하고, 특정 태스크에 맞춘 패치는 일반화되지 않는다.

해결책: 제안-크레딧 분리 + 병리 기반 품질-다양성 아카이브

제안과 크레딧의 분리

핵심 설계 원칙은 언어 모델은 의미론적 단계만 소유하고, 결정론적 코드가 모든 측정·유의성 검정·크레딧을 소유한다는 것이다.

  • Evolver(더 강한 모델)는 실패 궤적을 읽고 (where × why) 병리를 진단하고, 패치를 작성한다
  • 결정론적 코드가 표본 추출, 게이트, 집계, paired 통계를 담당한다
  • 모델은 절대 정량적 판단을 하지 않는다 — “더 나아졌다”는 산술적으로 계산되지, LLM의 추정으로 결정되지 않는다

3중 게이트

모든 패치는 세 게이트를 통과해야 크레딧을 받는다:

  1. Validity gate: 인프라 실패(샌드박스 크래시, 검증기 누락)를 재실행하여 걸러낸다
  2. Activation gate: 패치가 실제로 발동했는지 확인한다 — 발동하지 않은 시도의 효과를 그 패치에 귀속시키지 않는다
  3. Significance gate: paired 2σ 검정(z ≥ 1.96)을 통과한 개선만 크레딧한다 — 단순 “평균이 올라갔다”가 아닌, 동일 태스크 쌍 비교에서 통계적 유의성을 요구한다

GSME: 병리 기반 품질-다양성 아카이브

Figure 4: GSME 아카이브 — 행은 4개 where 레버, 열은 병리(why) 범주. accepted edit이 프롬프트뿐 아니라 4개 레버 전반에 퍼져 있다

패치는 (where × why) 범주형 셀에 배치된다:

  • where: 프롬프트, 지식, 런타임, 설정 — 4개 레버
  • why: 모델이 진단한 실패 병리 (thinking-runaway, premature finalization, method lock-in 등)

이것이 오버피팅 방지 바이어스다: 검색이 태스크 ID가 아닌 실패 유형별로 조직된다. 하나의 셀당 하나의 게이트된 엘리트만 유지하고, 셀 간 재조합을 허용하여 다양성을 보존한다.

실행 예: BrowseComp+ 진화 트리

Figure 2: BrowseComp+ 진화 트리 — RBR(추론 예산 복구)와 VF(검증-종료)의 재조합이 sealed test에서 +13.9pp 크레딧

BrowseComp+ 도메인에서 모델은 두 실패를 보인다: 추론 중 토큰 예산을 소진하여 빈 턴을 반환(thinking-runaway), 그리고 답을 검증 없이 종료(premature finalization). 루프는 각각에 대해 credited 패치를 생성한다:

  • Selective recovery (runtime, thinking-runaway): +6.1pp on train
  • Verify-finalize (runtime, premature-finalization): +9.8pp on train
  • 재조합: 둘의 조합이 sealed test에서 +13.9pp — 단독보다 낫고, 일반화된다

결과: 7개 도메인, sealed test

Figure 3: 7개 도메인에서 바닐라 대 진화된 하네스의 sealed test 성공률. 6개 도메인이 paired 2σ를 통과

도메인Sealed test Δz-값Retention
AppWorld+15.5pp6.4493%
BrowseComp++13.9pp2.69111%
LiveCode+12.8pp3.4288%
Omni-MATH+11.2pp2.96147%
TB2+9.0pp2.14143%
GDPval+9.2pp2.1586%
  • 6개 도메인 모두 paired 2σ 크레딧 바 통과
  • 훈련 게인의 86–147%를 sealed test에서 유지 — 오버피팅 붕괴 없음
  • pass@3도 모든 credited 도메인에서 상승 (+5.6 ~ +15.4pp) — 단순한 분산 감소가 아닌, 풀 수 있는 태스크 집합 자체가 확장됨

회복-방어 불화(ablation)

Table 2: 회복-방어 불화 — 선택적 회복이 16배 큰 토큰 예산이나 전역 토글보다 낫다

LiveCode에서 선택적 회복(selective recovery)이 16배 큰 토큰 예산(+6.5pp)이나 전역 thinking-off 토글(+8.6pp)보다 훨씬 낫다(+14.8pp). 브루트 포스가 아닌 정확히 타겟된 개입이 효과적이다.

핵심 발견: 병리-패치 매칭 법칙

가장 흥미로운 발견은 진화된 하네스는 모델 특정적이라는 것이다. 하네스 자체는 이전하지만, 진짜 전이되는 것은 진단-크레딧 루프다.

AppWorld에서 3개 모델을 교차 테스트한 결과:

  • qwen3.6-27B의 주요 병리는 “engagement” 빈 턴 → verify-finalize 패치가 매칭 (+15.5pp)
  • qwen3.5-397BGemini 3 Flash의 주요 병리는 “careless” 오답 → submit-verify 체크리스트가 매칭 (+13.5pp)
  • 비대각선(매칭되지 않은 패치)은 거의 효과가 없다 (+0.2 ~ +1.2pp)

이것은 하네스 자가진화를 유니버설한 스캐폴딩의 발견이 아니라 특정 모델의 실패 분포에 대한 교정 패치 피팅으로 재정의한다. Gemini(Qwen이 아닌 모델)에서도 같은 careless→checklist 매칭이 재현되는 것은, 이것이 모델 패밀리를 넘어서는 패턴임을 보여준다.

의미: “자기 개선하는 에이전트” 결과를 어떻게 읽을 것인가

이 논문의 가장 중요한 시사점은 다음과 같다:

하네스 진화에서의 겉보기 능력 향상은 모델 특정 교정일 수 있으며, sealed paired test만이 진짜 일반화 가능한 개선과 평가에 맞춰진 것을 구분할 수 있다.

즉, “에이전트가 스스로를 개선했다”는 보고를 볼 때, 우리는 다음을 물어야 한다:

  1. 통계적 유의성 검정을 통과했는가?
  2. 훈련에 사용되지 않은 sealed test에서 유지되는가?
  3. 특정 태스크가 아닌 병리(pathology) 단위로 조직되었는가?
  4. 모델을 바꾸면 같은 패치가 여전히 효과적인가?

이 논문의 대답은: 1) 네, 2) 네(86-147% retention), 3) 네(GSME), 4) 아니오(모델 특정적) — 따라서 전이되는 것은 루프 자체지 특정 하네스가 아니다.

더 실습해보고 싶은 분들께

에이전트 하네스 진화, 루프 엔지니어링, 컨텍스트 엔지니어링을 직접 실험하고 싶다면 다음 두 자료를 추천한다:


Footnotes

  1. Luo, X. et al. “Self-Evolving Agent Harnesses via Gated Semantic Quality-Diversity.” arXiv:2607.13683, 2026.