경험 기반 소프트웨어 이슈 해결
초록
SWE‑Exp은 기존 LLM 에이전트가 문제마다 독립적으로 탐색하던 한계를 극복하고, 이전 이슈 해결 과정에서 얻은 성공·실패 경험을 구조화된 “경험 은행”에 축적한다. 새로운 버그가 등장하면 은행에서 관련 경험을 검색·추출해 고수준 전략을 제시하고, 저수준 작업을 보조 에이전트가 수행하도록 설계돼, Pass@1 73 %라는 최신 최고 성능을 달성한다.
상세 분석
SWE‑Exp은 크게 네 단계 파이프라인으로 구성된다. 첫째, 다중 에이전트와 MCTS 기반 탐색을 이용해 다양한 오픈‑소스 레포지토리에서 성공·실패 이슈 해결 궤적을 수집한다. 각 궤적은 ⟨(dt, at, st+1, ft)⟩ 형태의 튜플 시퀀스로 정형화되며, 여기서 dt는 고수준 지시(문제 이해), at는 구체적 액션(코드 편집·테스트), st+1은 실행 후 레포지토리 상태, ft는 환경 피드백을 의미한다. 성공·실패 라벨과 실패 원인(잘못된 로컬라이제이션, 부적절한 수정 전략, 이해 부족 등)이 메타데이터로 부착돼, 이후 경험 추출 시 정밀 필터링이 가능하도록 설계되었다.
둘째, 경험 추출 단계에서는 궤적에서 “핵심 지식”을 다층적으로 정제한다. 고수준에서는 문제 진술과 핵심 원인(예: mutable default argument) 요약을, 중간 수준에서는 흔히 발생하는 결함 패턴(예: 공유 attrs 딕셔너리 변조)과 그에 대응하는 로컬라이제이션 힌트를, 저수준에서는 구체적인 코드 변형(방어적 복사 삽입, 조건문 추가 등)을 추출한다. 이때 LLM 기반 요약 모델과 규칙 기반 패턴 매칭을 결합해 잡음(불필요한 로그, 반복적 시도)을 제거하고, 경험을 “재사용 가능한 템플릿” 형태로 저장한다.
셋째, 새로운 이슈가 주어지면 경험 은행에서 질의‑응답 방식으로 관련 경험을 검색한다. 검색은 (문제 키워드·코드 구조·에러 메시지) 기반의 벡터 유사도와, 라벨링된 실패 원인 매칭을 복합적으로 활용한다. 검색 결과는 E′ = {e1, e2, …} 형태의 경험 집합으로 반환되며, 각 경험은 (전략, 적용 조건, 코드 스니펫)으로 구성된다.
넷째, 검색된 경험을 바탕으로 두 에이전트가 협업한다. Instructor 에이전트는 고수준 전략을 제시하고, 이를 바탕으로 “이슈 이해·핵심 원인 파악” 단계에서 어떤 경험을 적용할지 결정한다. Assistant 에이전트는 구체적인 코드 편집·테스트 액션을 수행하며, 실행 피드백을 실시간으로 Instructor에게 전달해 전략을 미세 조정한다. 이렇게 순환적인 피드백 루프를 통해 에이전트는 초기 탐색 비용을 크게 절감하고, 기존에 검증된 패턴을 재활용해 높은 정확도의 패치를 생성한다.
실험에서는 SWE‑Bench Verified(500개 실증 이슈)에서 Claude 4 Sonnet을 백본 모델로 사용했으며, Pass@1 73 %를 기록해 기존 MCTS‑기반 에이전트(≈55 %)와 비교해 18 %p 이상의 절대적 향상을 보였다. 특히, 경험을 활용한 fault‑localization 단계만 별도로 적용해도 정확도가 10 %p 상승했으며, 코드 변형 단계만 적용해도 7 %p 상승했다. 이는 경험 은행이 성공·실패 양쪽 모두에서 유용한 신호를 제공한다는 것을 의미한다.
전반적으로 SWE‑Exp은 “기억 없는 탐색”을 “경험 기반 전략”으로 전환함으로써, LLM 에이전트가 지속적으로 학습하고 지식을 축적해 소프트웨어 유지보수 자동화의 효율성을 크게 끌어올릴 수 있음을 입증한다.
댓글 및 학술 토론
Loading comments...
의견 남기기