RefAgent: A Multi-agent LLM-based Framework for Automatic Software Refactoring

이 논문은 계획, 실행, 테스트 및 자기 반성을 통해 소프트웨어 리팩토링을 자동화하는 다중 에이전트 LLM 프레임워크인 RefAgent 를 제안하고, 오픈 소스 자바 프로젝트에서의 실험을 통해 기존 단일 에이전트 방식 및 기존 도구 대비 우수한 코드 품질 향상과 리팩토링 기회 식별 능력을 입증합니다.

Khouloud Oueslati, Maxime Lamothe, Foutse Khomh

게시일 2026-03-06
📖 4 분 읽기☕ 가벼운 읽기

Each language version is independently generated for its own context, not a direct translation.

🤖 RefAgent: 소프트웨어를 스스로 고쳐주는 '팀워크' 로봇

이 논문은 **"RefAgent"**라는 새로운 시스템을 소개합니다. 쉽게 말해, 인공지능 (AI) 이 혼자서 코드를 고치는 게 아니라, 서로 다른 역할을 가진 AI 팀원들이 모여서 소프트웨어를 자동으로 리팩토링 (코드 정리) 하는 방법입니다.

기존의 AI 는 "이 코드를 이렇게 고쳐줘"라고 딱딱한 지시를 받아야 했지만, RefAgent 는 상황 파악을 하고, 계획을 세우고, 실수를 수정하며 스스로 움직입니다.

이 내용을 일상적인 비유로 설명해 드릴게요.


1. 문제 상황: 낡은 아파트와 지저분한 코드 🏢

소프트웨어 프로젝트는 시간이 지나면 낡은 아파트처럼 변합니다.

  • 코드 냄새 (Code Smells): 벽지가 벗겨지고 배관이 녹슬어 있는 상태 (유지보수가 어렵고, 고장 나기 쉬움).
  • 리팩토링: 아파트를 재건축하거나 수리해서 살기 좋게 만드는 작업입니다.

하지만 이 수리 작업은 매우 위험합니다.

  • 배관을 고치다가 물이 새거나 (버그 발생),
  • 벽을 뜯어내다가 구조가 무너지거나 (컴파일 오류),
  • 원래 쓰던 문이 안 열리게 될 수 있습니다 (기능 손상).

기존의 자동화 도구는 "이 벽만 치우세요"라고 딱딱하게 지시하거나, 무작위로 시도를 해서 실패하는 경우가 많았습니다.

2. 해결책: RefAgent (4 인조 프로 팀) 🦸‍♂️🦸‍♀️

RefAgent 는 혼자 일하는 AI 가 아니라, 각자 전문성을 가진 4 명의 AI 팀원이 협력하는 시스템입니다. 마치 건설 현장의 프로젝트 팀과 같습니다.

① 기획자 (Context-Aware Planner) 🧠

  • 역할: "어디부터 고쳐야 할지" 분석하고 작업 계획서를 작성합니다.
  • 비유: 건축 설계사입니다. 아파트의 전체 구조를 보고 "이 방은 벽을 허물고, 저 방은 창문을 넓혀야 해"라고 구체적인 청사진을 그립니다.
  • 특징: 단순히 코드만 보는 게 아니라, 다른 파일들과의 관계 (의존성) 까지 파악해서 계획합니다.

② 시공자 (Refactoring Generator) 🛠️

  • 역할: 기획자의 계획서를 보고 실제로 코드를 수정합니다.
  • 비유: 현장 시공 기사입니다. 설계도대로 벽을 뜯고, 배관을 교체합니다.
  • 특징: 계획서를 따르지만, 만약 오류가 나면 바로 수정할 준비가 되어 있습니다.

③ 안전 검사원 (Compiler Agent) 🛡️

  • 역할: 수정된 코드가 문법적으로 맞는지 확인합니다.
  • 비유: 건물의 구조 안전 검사관입니다. "이 벽을 뜯었더니 건물이 무너질까?"를 확인합니다.
  • 작동 방식: 만약 "오류 (Error)"가 뜨면, 시공자에게 "여기 잘못됐어, 고쳐!"라고 알려주고 다시 시도하게 합니다. (최대 20 번까지 반복)

④ 품질 관리원 (Tester Agent) 🧪

  • 역할: 수정된 코드가 원래 기능을 잘 수행하는지 테스트합니다.
  • 비유: 입주 전 최종 점검팀입니다. "수도꼭지는 잘 나오고, 문은 잘 열리는지" 확인합니다.
  • 작동 방식: 자동화된 테스트 도구를 써서 코드가 고장 나지 않았는지 20 번까지 반복 검증합니다.

3. 어떻게 작동할까요? (워크플로우) 🔄

이 팀은 반복적인 피드백 루프를 통해 일합니다.

  1. 기획자가 "이 코드를 이렇게 고쳐보자"라고 계획을 세웁니다.
  2. 시공자가 코드를 수정합니다.
  3. 안전 검사원이 "아, 문법 오류가 있네!"라고 알려줍니다.
  4. 시공자는 오류를 보고 다시 고칩니다. (이 과정이 20 번까지 반복됨)
  5. 안전이 확인되면 품질 관리원이 "원래 기능이 그대로 작동하는지" 테스트합니다.
  6. 모든 테스트를 통과하면 최종 합격! 수정된 코드가 저장됩니다.

이 과정은 프로젝트의 모든 파일에 대해 자동으로 반복됩니다.


4. 결과는 어땠나요? 📊

연구진은 8 개의 실제 오픈소스 자바 프로젝트를 가지고 실험했습니다. 결과는 놀라웠습니다.

  • 성공률: 수정된 코드가 90% 이상 정상 작동했습니다. (기존 단일 AI 방식보다 훨씬 높음)
  • 코드 냄새 제거: 지저분한 코드 (코드 냄새) 가 52.5% 이상 줄어들었습니다.
  • 품질 향상: 코드의 재사용성과 이해도가 크게 좋아졌습니다.
  • 유사성: 실제 인간 개발자들이 고친 방식과 80% 이상 일치했습니다. (AI 가 개발자의 직관을 잘 따라잡았다는 뜻)

5. 핵심 교훈: 혼자보다 함께가 낫다 🤝

이 연구의 가장 중요한 메시지는 **"단일 AI 가 모든 것을 하려고 하면 실패할 확률이 높지만, 역할을 나누고 서로 도와주는 '멀티 에이전트' 방식이 훨씬 효과적이다"**는 것입니다.

  • 단일 AI: 혼자서 생각하다 보면 헛소리를 하거나 (할루시네이션), 실수를 반복할 수 있습니다.
  • RefAgent (팀): 기획자가 실수하면 안전 검사원이 잡아주고, 품질 관리원이 다시 확인합니다. 서로의 실수를 보완하며 최고의 결과를 만들어냅니다.

요약

RefAgent는 소프트웨어를 수리할 때, 한 명의 고수를 부르는 대신 **전문가 팀 (기획, 시공, 안전, 품질)**을 투입하여, 실수를 반복적으로 수정하고 최종적으로 완벽하게 고치는 새로운 자동화 시스템입니다. 이는 앞으로 소프트웨어 개발과 유지보수를 훨씬 더 쉽고 안전하게 만들어 줄 것으로 기대됩니다.