Better tools made Copilot code review worse. Here’s how we actually improved it.

개요

GitHub Copilot 코드 리뷰에서 더 나은 도구를 도입했음에도 불구하고 코드 검토 비용이 증가하고 이슈 탐지율이 감소하는 문제가 발생했으나, 도구 자체보다는 도구를 사용하는 방식에 대한 지침을 재정비함으로써 약 20%의 평균 검토 비용 감소와 동일한 검토 품질을 달성했다.

주요 내용

* 도구 교체의 역효과: Copilot 코드 리뷰는 자체적인 코드 탐색 도구를 사용했으나, 더 잘 관리되고 공유되는 Copilot CLI의 grep, glob, view 도구로 전환하면서 성능이 저하되었다. 이는 도구가 아닌, 해당 도구에 대한 지침이 코드 리뷰라는 특정 작업에 적합하지 않았기 때문이다.
* 기존 도구의 문제점: 이전 Copilot 코드 리뷰의 자체 도구는 모델이 적은 도구 호출을 하고 컨텍스트를 자동으로 가져오는 데 최적화되어 있었다. 반면, Copilot CLI의 공유 도구는 범용적인 에이전트 작업에 맞춰져 있어, 코드 리뷰와 같이 특정 증거에 집중해야 하는 작업에는 부적합했다.
* 에이전트의 잘못된 탐색 패턴: 공유 도구를 사용했을 때 에이전트는 저장소를 광범위하게 탐색하고, 경로를 추측하며, 필요 이상의 컨텍스트를 가져오는 등 마치 저장소를 탐색하는 듯한 패턴을 보였다. 이는 코드 리뷰어가 변경 사항(diff)을 중심으로 필요한 최소한의 컨텍스트만 확인하려는 일반적인 방식과 달랐다.
* 작업 흐름 재정의: 도구 사용 지침을 코드 리뷰어의 작업 흐름에 맞춰 재작성했다. 변경 사항(diff)에서 시작하여 구체적인 질문을 만들고, globgrep으로 관련 후보 파일을 찾고, view로 필요한 파일의 특정 범위를 읽는 방식으로 전환했다.
* 실패 시 복구 방식 개선: grep 검색 실패 시 더 단순하고 수정된 검색으로 재시도하거나, 경로 오류 시 추측이 아닌 glob을 사용하도록 지침을 변경하여 불필요한 탐색 루프를 줄였다.
* 벤치마크를 통한 디버깅: 내부 벤치마크를 통해 에이전트의 행동을 상세히 분석할 수 있었고, 도구 사용 횟수보다는 관련 증거에 얼마나 집중하는지를 기준으로 행동 변화를 측정했다.
* 비용 감소 및 품질 유지: 재정비된 지침을 통해 평균 검토 비용이 약 20% 감소했으며, 검토 품질은 유지되었다. 이는 도구 자체의 성능 향상이 아닌, 도구 주변의 작업 흐름을 최적화함으로써 달성되었다.
* 도구와 작업 흐름의 중요성: 에이전트 개발 시 도구는 단순한 구현 세부 사항이 아니라 제품 경험의 일부이며, 도구 설명과 시스템 지침은 API 문서와 같이 명확해야 한다.
* 범용 도구와 특정 작업의 차이: grep, glob, view와 같은 공유 도구는 Copilot 코드 리뷰와 Copilot CLI에서 사용될 수 있지만, 각 제품의 작업 성격에 맞춰 도구 주변의 작업 흐름이 조정되어야 한다. Copilot CLI는 광범위한 대화형 코딩 작업을, Copilot 코드 리뷰는 diff에 고정된 검토 작업을 다룬다.

시사점

에이전트 기반 시스템에서 도구 자체만큼이나 해당 도구를 사용하는 작업 흐름과 지침을 특정 작업의 맥락에 맞게 최적화하는 것이 시스템의 효율성과 효과성을 결정하는 데 중요하다.

원문 읽기 →
원문을 불러오는 중...

댓글

GitHub Discussions