← 최신 논문
💬 NLP

Change2Task: From Repository Changes to Executable Coding Agent Tasks and Environments

이 논문은 병합된 풀 리퀘스트를 과거의 저장소 상태를 재구성하고 이를 현대적인 코드베이스에서 검증함으로써 검증된 실행 가능한 코딩 에이전트 태스크로 자동 변환하는 Change2Task 시스템을 소개하며, 이를 통해 기존 베이스라인과 비교하여 설정 비용을 줄이고 태스크 복구율을 개선하는 동시에 훈련 데이터의 공급을 크게 증가시킨다.

원저자: Haomin Qi, Xingliang Wang, Xuanqi Gao, Baihui Sang, Xin Zhang, Minghua Ma, Pengfei Gao, Yu Kang, Qingwei Lin, Saravan Rajmohan, Dongmei Zhang, Qi Zhang

게시일 2026-07-31
📖 3 분 읽기☕ 가벼운 읽기

원저자: Haomin Qi, Xingliang Wang, Xuanqi Gao, Baihui Sang, Xin Zhang, Minghua Ma, Pengfei Gao, Yu Kang, Qingwei Lin, Saravan Rajmohan, Dongmei Zhang, Qi Zhang

원본 논문은 CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) 라이선스로 제공됩니다. 이것은 아래 논문에 대한 AI 생성 설명입니다. 저자가 작성하거나 승인한 것이 아닙니다. 기술적 정확성을 위해서는 원본 논문을 참조하세요. 전체 면책 조항 읽기

컴퓨터가 소프트웨어 엔지니어가 되는 법을 배우고 있는 세상을 상상해 보세요. 이 "코딩 에이전트"들은 단순히 코드 한 줄을 쓰고 멈추는 것이 아니라, 프로젝트를 열고, 파일을 읽고, 버그를 수정하고, 테스트를 실행하고, 실패하면 다시 시도할 수 있는 디지털 견습생과 같습니다. 하지만 여기에는 함정이 있습니다. 이들이 정말 숙련되려면 실제 세계의 문제들로 연습해야 합니다. 즉, 고장 난 기능을 고치거나 새로운 기능을 추가하는 연습을 할 수 있는 방대한 양의 "연습 문제" 라이브러리가 필요하며, 그 후 명확한 "합격" 또는 "불합격" 성적을 받아야 합니다.

문제는 이러한 연습 문제를 만드는 것이 매우 어렵고 비용이 많이 든다는 점입니다. 보통 테스트를 만들려면, 모든 개별 문제에 대해 완벽하게 격리된 컴퓨터 환경(디지털 샌드박스 같은 것)을 구축해야 합니다. 만약 1,000개의 서로 다른 코딩 챌린지를 원한다면, 1,000개의 서로 다른 샌드박스를 만들어야 하며, 이는 엄청난 양의 저장 공간과 시간을 소모합니다. 이는 마치 누군가에게 요리를 가르치기 위해, 배우고자 하는 매 레시피마다 완전히 새로 갖춰진 주방을 지어주는 것과 같습니다. 그 작업이 너무나 힘들어서 우리는 연습 문제를 다 써버리게 되고, 에이전트들은 전문가가 되기 위한 필요한 훈련을 받지 못하게 됩니다.

여기서 Change2Task라는 새로운 아이디어가 등장합니다. 이것을 일종의 마법 같은 코드 타임머신이라고 생각하세요. 모든 레시피마다 새로운 주방을 만드는 대신, Change2Task는 실제 소프트웨어 프로젝트의 이력, 즉 인간 개발자가 과거에 버그를 수정하거나 기능을 추가했던 거대한 기록부를 살펴봅니다. 그리고 그 오래된 실제 이야기들을 보고 이렇게 묻습니다: "우리가 이 문제를 현재 버전의 소프트웨어에서도 똑같이 재현할 수 있을까?"

이 시스템은 영리한 편집자처럼 작동합니다. 이미 수락되어 코드에 추가된 변경 사항인 "머지된 풀 리퀘스트(merged pull request)"를 찾아내어 이를 역공학(reverse-engineer)합니다. 시스템은 그 변경 사항을 "되돌려(undo)" 고장 난 상태를 만든 다음, 코딩 에이전트에게 이를 다시 해결하라는 목표를 설정합니다. 하지만 여기서 마법 같은 기술이 나옵니다. 처음부터 다시 시작하는 대신, 이미 실행 중인 현대적이고 건강한 버전의 소프트웨어 위에서 이 작업을 수행한다는 것입니다. 만약 코드가 원래의 수정 사항 이후로 많이 변했다면, Change2Task는 오래된 수정을 새로운 코드에 매핑하기 위해 세 가지 전략을 사용합니다:

  1. 패치 역전(Patch Reversal): 코드가 거의 변하지 않았다면, 단순히 예전의 수정을 반대로 뒤집습니다.
  2. 코드 매핑(Code Mapping): 코드가 위치를 옮겼다면, 예전 코드의 새로운 위치를 찾아 교체합니다.
  3. 에이전트 재구성(Agent Reconstruction): 코드가 완전히 달라졌다면, 스마트한 AI 에이전트를 사용하여 새로운 환경에서 문제를 재현하는 방법을 알아냅니다.

연구진은 이를 다섯 가지 일반적인 유형의 코딩 작업(버그 수정, 신규 기능 추가, 새로운 테스트 작성, 오래된 도구(API) 업데이트, 보안 취약점 패치)에 대해 테스트했습니다. 그들은 공개 소프트웨어 프로젝트에서 가져온 1,130개의 실제 변경 사항으로 시작했습니다. 시스템은 이 중 900개를 작동하고 검증 가능한 연습 과제로 성공적으로 전환했습니다. 성공률은 약 80%였습니다.

이것이 얼마나 흥격적인 일인지 알려면 얼마나 많은 것을 아끼는지 봐야 합니다. 동일한 현대적 "주방"(소프트웨어 환경)을 여러 가지 연습 문제에 재사용함으로써, 환경 설정에 필요한 시간을 58.4% 줄였고 저장 공간을 71.2% 절감했습니다. 실제로, 이전 방식처럼 단순히 예전의 수정을 그대로 복사하려고 했던 방법보다 29.2% 더 많은 검증된 과제를 만들어냈습니다.

팀은 또한 재현된 과제들이 공정한지 확인했습니다. 그들은 서로 다른 AI 코딩 에이전트들에게 원래의 역사적 버전과 새로운 현대적 버전 모두에서 문제를 해결하도록 요청했습니다. 결과는 거의 동일했습니다: 에이전트들은 98%의 확률로 동일한 "합격" 또는 "불합격" 판정을 받았습니다. 이는 새로운 과제들이 단순히 무작위 추측이 아니라, 실제 개발자의 작업 내용을 충실히 재현했다는 것을 증명합니다.

요약하자면, Change2Task는 단순히 더 많은 연습 문제를 찾는 것이 아니라, 우리가 이미 가지고 있는 문제들을 어떻게 재사용 가능하고 효율적으로 만들 수 있는지에 대한 방법을 찾아냅니다. 이는 소프트웨어 개발의 역사를 차세대 AI 코더를 훈련하기 위한 재생 가능한 자원으로 바꾸어 놓으며, 우리가 매 수업마다 새로운 세상을 만들 필요 없이, 단지 옛 세상을 새로운 눈으로 바라보는 법을 알면 된다는 것을 증명합니다.

연구 분야의 논문에 파묻히고 계신가요?

연구 키워드에 맞는 최신 논문의 일일 다이제스트를 받아보세요 — 기술 요약 포함, 당신의 언어로.

Digest 사용해 보기 →