← 최신 논문
💻 computer science

ChainSWE: Benchmarking Coding Agents on Multi-Bug Software Maintenance

이 논문은 공유 코드베이스 내에서 순차적이고 의존적인 버그 수정을 수행하는 코딩 에이전트를 평가하기 위해 설계된 최초의 벤치마크인 ChainSWE를 소개하며, 이는 기존의 고립된 버그 수정 평가와 비교했을 때 체인 길이가 길어질수록 에이전트의 성능이 크게 저하된다는 점을 밝혀낸다.

원저자: Qirui Jin, Lingching Tung, Kenan Li, Qiyang Shi, Yushi She, Huanzhong Jia, Harrison Zhao, Kejing Xia, Zhenbang Du, Yikai Zhang, Jiaxin Pei, Zhenyu Zhang, Zhen Qi, Yuyan Duan, Wenke Lee, Zijian Jin

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

원저자: Qirui Jin, Lingching Tung, Kenan Li, Qiyang Shi, Yushi She, Huanzhong Jia, Harrison Zhao, Kejing Xia, Zhenbang Du, Yikai Zhang, Jiaxin Pei, Zhenyu Zhang, Zhen Qi, Yuyan Duan, Wenke Lee, Zijian Jin

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

핵심 아이디어: "한 번 하고 끝내기"에서 "장기적인 여정"으로

당신이 자동차 한 대가 아니라 자동차 부대를 수리하기 위해 아주 똑똑한 로봇 정비사 팀을 고용했다고 상상해 보세요.

기존 방식 (현재의 벤치마크):
정비사에게 문제를 줄 때마다, 당신은 매번 새롭고 깨끗한 자동차를 건네줍니다. 정비사가 타이어 펑크를 고치면, 당신은 그 작업을 확인한 뒤 정비사를 집으로 돌려보냅니다. 다음 날, 당신은 그에게 다른 문제가 있는 다른 자동차를 줍니다.

  • 문제점: 이 방식은 정비사가 시간이 흐름에 따라 자동차를 유지보수하는 능력이 있는지 테스트하지 못합니다. 현실 세계에서 정비사는 매일 새로운 차를 받는 것이 아닙니다. 그들은 같은 자동차를 대상으로 작업하며, 타이어 펑크를 고치고, 그다음엔 끼익 소리가 나는 브레이크를 고치고, 그다음엔 엔진의 이상 소음을 고치는 식으로 하나의 차량을 계속 다룹니다.

새로운 방식 (CHAINSWE):
연구진은 CHAINSWE라는 새로운 테스트를 구축했습니다. 정비사들에게 매번 새 차를 주는 대신, 단 한 대의 자동차와 수년간 발생한 304개의 문제 목록을 제공합니다.

  • 정비사는 첫 번째 문제를 해결합니다.
  • 그다음, 자동차를 초기화하지 않은 상태에서, 첫 번째 수리 이후의 자동차 상태를 바탕으로 두 번째 문제를 해결해야 합니다.
  • 그다음 세 번째, 이런 식으로 계속됩니다.

로봇이 실패하는 두 가지 주요 방식

연구진은 로봇이 동일한 코드(즉, "자동차")에 대해 긴 문제 목록을 해결하려고 할 때, 단일 문제를 해결할 때는 나타나지 않는 두 가지 특정한 실수를 한다는 것을 발견했습니다.

1. "과잉 장식" 실수 (Overshoot - 과잉 수행)

  • 시나리오: 로봇에게 수도꼭지 누수를 고치라고 요청합니다. 로봇은 수도꼭지를 완벽하게 고칩니다. 하지만 의욕이 앞선 나머지, 아무도 요청하지 않았는데 주방 캐비닛을 새로 칠하고 바닥 타일까지 바꿔버립니다.
  • 결과: 나중에 사람이 전등 스위치를 고치러 들어옵니다. 그런데 로봇이 이전에 바닥 타일과 캐비닛을 바꿔버렸기 때문에, 전등 스위치에 대한 지침이 더 이상 맞지 않게 됩니다. 로봇의 "추가적인" 작업이 다음 작업을 망쳐놓은 것입니다.
  • 논문에서의 의미: 로봇이 건드리지 말아야 할 파일들을 수정하여, 향후 발생할 버그에 대한 테스트를 실패하게 만듭니다.

2. "미완성" 실수 (Undershoot - 미달 수행)

  • 시나리오: 로봇에게 수도꼭지 누수를 고치라고 요청합니다. 로봇은 수도꼭지를 고치려면 새 파이프와 새 밸브가 모두 필요하다는 것을 깨닫습니다. 하지만 로봇은 (요청서에 적힌 대로) 수도꼭지 손잡이만 교체하고, 고장 난 파이프와 밸브는 그대로 둡니다.
  • 결과: 수도꼭지는 고쳐진 것처럼 보이지만 여전히 물이 샙니다. 나중에 사람이 수압을 조절하려 할 때, 로봇이 이전에 파이프를 고치지 않았기 때문에 수압 조절 작업이 완전히 실패하게 됩니다.
  • 논문에서의 의미: 로봇이 버그 리포트에 명시된 특정 파일만 수정하고, 버그 리포트에서 명시적으로 언급하지 않은 지원 파일들을 업데이트하는 것을 잊어버려 코드를 여전히 고장 난 상태로 남겨둡니다.

로봇을 테스트했을 때 어떤 일이 일었나요?

연구진은 이 새로운 "장기 여정(Long Haul)" 테스트를 사용하여 7가지의 서로 다른 "AI 정비사"(언어 모델)를 테스트했습니다.

  • 결과: 로봇이 단일 버그를 작업할 때(기존 방식)는 꽤 괜찮은 성적(약 60% 성공률)을 보였습니다. 하지만 버그의 사슬(chain of bugs)을 작업해야 할 때(새로운 방식)는 성능이 최대 70%까지 급락했습니다.
  • "연쇄 반응": 버그 목록의 깊은 단계로 들어갈수록 성적이 악화되었습니다. 연속된 3번째 또는 4번째 버그에 도달했을 때, 그들은 거의 계속해서 실패했습니다.
  • 이유는? 로봇들이 자신들의 이전 작업물 때문에 혼란을 겪었기 때문입니다. 로봇들은 자신이 어떤 파일을 수정했는지 기억하지 못하거나, 초기에 했던 "빠른 수정"이 다음 작업을 위한 기초를 어떻게 망가뜨렸는지 잊어버렸습니다.

"기억력"이 도움이 되었나요?

연구진은 로봇들이 자신이 한 일을 기억할 수 있도록 몇 가지 방법을 시도했습니다:

  1. 전체 기억 (Full Memory): 지금까지 말한 모든 것의 전체 기록을 읽게 함.
  2. 요약된 기억 (Summarized Memory): 로봇에게 이전에 했던 일을 짧게 요약하도록 요청함.
  3. 조수 로봇 (Helper Robots): 메인 로봇은 지시만 내리고, 작은 로봇이 실제 파일 편집을 수행하게 함.

놀라운 사실: 이러한 기술들은 별로 도움이 되지 않았습니다. 사실, 로봇에게 자신의 작업을 요약하게 하거나 조수를 사용하는 것은 오히려 상황을 더 악화시키는 경우가 많았습니다. 로봇들은 아무리 기억하려고 노력해도 자신이 코드에 만들어 놓은 "엉망진창인 상태"를 감당하지 못했습니다.

결론

이 논문은 우리가 현재 AI 코더들을 "한 번의 히트(one-hit wonders)"(하나를 고치고 떠나는 것)처럼 테스트하고 있다고 결론짓습니다. 하지만 현실 세계에서 소프트웨어 유지보수는 단거리 경주가 아니라 마라톤입니다.

실제로 소프트웨어를 유지보수할 수 있는 AI를 만들기 위해서는, 단순히 격리된 작업을 테스트하는 것을 넘어, 자신이 만든 불완전하고 엉망인 코드를 직접 다뤄야 하는 **연쇄적인 작업(chains of tasks)**을 통해 테스트해야 합니다. 현재로서는 가장 똑똑한 AI 모델들조차 버그를 연달아 해결해야 할 때 코드베이스를 깨끗하게 유지하는 데 큰 어려움을 겪고 있습니다.

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

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

Digest 사용해 보기 →