RepoMaster: Autonomous Exploration and Understanding of GitHub Repositories for Complex Task Solving
- 발행일
- 출처
- arXiv
- 논문 번호
- 1298
- 분야
- Software Engineering
- arXiv 번호
- 2505.21577
이 논문은 code agent가 GitHub 저장소를 고쳐 쓰려 할 때 README만으로는 부족하고 저장소 정보가 흔히 LLM context를 넘치는 문제를, 정적 구조 분석으로 핵심 코드만 고르고 필요할 때 더 탐색하는 agent로 풀었다.
이 논문은 한마디로 자연어 과제를 받아 맞는 GitHub 저장소를 찾고, 그 저장소의 구조를 분석해 핵심 코드만 context에 넣으며 고쳐 실행하는 code agent RepoMaster의 system 논문이다. AST(Abstract Syntax Tree, 코드 구문을 tree로 나타낸 구조)로 계층 code tree, 함수 호출 graph, module 의존 graph를 만들어 점수가 높은 class를 첫 context로 주고, 실행 중에는 탐색 tool과 정보 선택으로 필요한 부분을 더 읽는다. Kaggle 대회 기반 benchmark인 MLE-Bench의 과제 22개를 저장소 기반으로 바꾼 MLE-R과 저자들이 새로 만든 GitTaskBench에서 OpenHands와 SWE-Agent보다 높은 제출률과 통과율을 보고했고, Claude 3.5 Sonnet 기준 GitTaskBench task pass rate는 RepoMaster가 62.96%로 OpenHands의 40.74%보다 높았다. 같은 조건에서 과제당 token 사용량도 RepoMaster가 154k로 OpenHands의 2883k보다 적었다.
핵심 요약
- 문제: 저자들은 GitHub 저장소를 고쳐 써서 실제 과제를 풀려 할 때 README만 따라 하면 대개 실패한다고 보았고, README는 모호하거나 빠진 내용이 있거나 틀릴 수도 있다고 적었다. 저장소는 흔히 파일, class, 함수가 얽혀 있고 정보량이 대부분의 LLM context 한도를 넘는다. OpenHands와 SWE-Agent 같은 기존 framework에는 저장소 구조를 파악하고 의존 관계를 따라가며 context에 넣을 정보를 고르는 장치가 없다고 저자들은 지적했다.
- 입력과 출력: 이 논문은 구현과 공개 코드를 갖춘 agent system 논문이다. 입력은 오래된 사진의 긁힘 지우기처럼 자연어로 쓴 과제와 입력 파일 경로, 출력 조건이며, 저장소는 RepoMaster가 GitHub에서 찾거나 benchmark가 지정한다. 출력은 그 저장소를 바탕으로 작성하고 실행한 Python script와, 지정한 폴더에 저장한 결과 파일(복원 이미지, Kaggle 제출 파일 등)이다.
- 방법: 먼저 과제 의도와 핵심 개체를 뽑아 GitHub를 검색하고, README와 star 수로 후보를 평가해 상위 세 개를 검증한다. 고른 저장소는 .py 파일만 AST로 훑어 계층 code tree(HCT), 함수 호출 graph(FCG), module 의존 graph(MDG)를 만들고, module마다 의존 중심성(personalized PageRank), 복잡도, 사용 빈도, 이름 의미, docstring, Git 이력 여섯 특징 점수를 더한 뒤 class의 method 수와 호출 빈도를 정규화해 더한 class 점수로 상위 class를 핵심 요소로 고르며, README, 주요 module 요약, 핵심 class 코드, 나머지 경로 목록으로 첫 context를 만든다. 실행 중에는 code 보기, 의존 추적, 검색 tool로 필요한 부분을 더 읽고, 입력이 상호작용당 token 한도를 넘으면 코드는 AST 부분 tree, 크거나 비정형인 파일(.txt, .csv 등)은 관련성이 높은 chunk 몇 개, 실행 log는 앞뒤 부분만 남겨 context를 줄인다.
- 구현: RepoMaster는 multi-agent 대화 platform AutoGen 위에 만들었고, 상호작용 한 번의 최대 token을 8000으로 두며, 첫 context에 상위 20개 module 요약과 핵심 class 10개를 넣고, 비정형 text 파일은 1000 token chunk로 나눠 관련성이 높은 4개만 남긴다. 비교 LLM은 GPT-4o, Claude 3.5 Sonnet, DeepSeek V3이고, benchmark는 MLE-Bench의 Kaggle 과제 22개를 저장소 기반으로 바꾼 MLE-R과, 저자들이 새로 만든 저장소 18개, 과제 54개의 GitTaskBench다. 공식 저장소 README는 web 화면과 terminal에서 쓰는 launcher.py, deep search agent와 저장소 agent 같은 backend mode를 공개했고, 실행에는 OpenAI API key가, deep search 기능에는 Serper와 Jina API key가 필요하다고 적었다.
- 결과: MLE-R에서 Claude 3.5 Sonnet을 쓴 RepoMaster는 valid submission 95.45%, 메달 획득 27.27%를 냈고, 같은 모델의 OpenHands는 45.45%와 4.55%였다. GitTaskBench에서 Claude 3.5 Sonnet 기준 실행 완료율과 task pass rate는 RepoMaster가 75.92%와 62.96%, OpenHands가 53.70%와 40.74%였고, 과제당 token은 154k와 2883k였다. GPT-4o로 한 ablation에서 세 장치를 모두 빼면 task pass rate가 40.74%에서 24.07%로 떨어졌다.
- 한계: 원문에 따로 쓴 한계 절은 없고, 구조 분석은 .py 파일만 대상으로 한다. MLE-R의 과제별 저장소는 다른 general agent framework에 자동 저장소 검색 기능이 없어 RepoMaster의 검색 절차로 미리 골라 두었고, GitTaskBench는 저자들이 만든 benchmark로 원래 저장소에 없던 내려받을 자료와 핵심 정보를 보충해 구성했으며, ablation은 GPT-4o 하나로만 했다. 부록 Table 5는 같은 GitTaskBench 비교에서 OpenHands와 Claude 3.5 Sonnet의 실행 완료율과 task pass rate를 본문 Table 2와 다른 48.15%와 24.07%로 적었다.
논문 링크
외부 연구를 정리한 자료입니다. HDATF가 발표한 논문이나 제품 성능을 측정한 결과는 아닙니다.