grep

1 개의 포스트

github

더 나은 도구가 Copilot 코드 리뷰를 악화시켰습니다. 실제로 개선한 방법은 다음과 같습니다. (새 탭에서 열림)

더 나은 코드 탐색 도구를 도입했지만, GitHub Copilot 코드 리뷰의 비용은 오히려 증가하고 발견하는 문제는 줄어들었다. 원인은 `grep`, `glob`, `view` 자체가 아니라, 코딩 에이전트용으로 작성된 도구 지침을 리뷰 작업에 그대로 적용한 데 있었다. 리뷰어처럼 PR diff에서 출발해 필요한 최소한의 코드만 확인하도록 지침을 바꾸자, 리뷰 품질을 유지하면서 평균 비용을 약 20% 낮출 수 있었다. ## 도구 교체가 예상과 다른 결과를 낳은 이유 - 기존 Copilot 코드 리뷰는 자체 코드 탐색 도구를 사용했다. - `list_dir`: 디렉터리 탐색 - `search_file`, `search_dir`: 파일 및 디렉터리 검색 - `read_code`: 코드 읽기 - 이 도구들은 검색 결과나 지정한 코드 범위뿐 아니라 주변 코드도 함께 반환했다. - 토큰 비용은 증가하지만, 도구 호출 횟수가 적고 자동으로 맥락을 확보하기 어려운 초기 모델에는 유용했다. - Copilot CLI는 여러 제품이 공유하는 Unix 스타일 도구를 제공했다. - `glob`: 후보 파일과 디렉터리 탐색 - `grep`: 텍스트, 심벌, 호출 지점 검색 - `view`: 특정 파일이나 코드 범위 읽기 - 인프라를 통합하면 도구 구현 중복을 줄이고, CLI와 클라우드 에이전트의 개선 사항을 코드 리뷰에도 공유할 수 있다는 장점이 있었다. - 그러나 단순히 기존 도구를 새 도구로 치환하는 방식으로는 충분하지 않았다. ## 벤치마크에서 드러난 성능 저하 - 공유 도구를 적용한 오프라인 벤치마크에서 다음 문제가 나타났다. - 평균 리뷰 비용 증가 - 유용한 리뷰 댓글 감소 - 전체적으로 효율성과 효과성 모두 저하 - 내부 추적 데이터는 최종 점수뿐 아니라 에이전트의 탐색 과정도 보여줬다. - 어떤 도구를 호출했는지 - 각 호출이 얼마나 많은 결과를 반환했는지 - 오류가 발생했는지 - 탐색이 문제의 증거로 좁혀졌는지, 아니면 범위를 넓혔는지 - 이를 통해 도구가 오작동한 것이 아니라, 에이전트가 도구를 사용하는 방식이 문제였음이 드러났다. ## 코드 리뷰가 저장소 탐색으로 변한 문제 - 에이전트는 PR의 변경 사항을 분석하기보다 저장소 전체를 이해하려는 것처럼 행동했다. - 전형적인 흐름은 다음과 같았다. - 넓게 검색 - 경로를 추측 - 많은 파일을 읽음 - 새로 발견한 내용을 바탕으로 다시 검색 - 불필요한 맥락을 계속 누적 - 이런 방식은 “저장소를 이해하거나 기능을 구현하라”는 작업에는 적합할 수 있다. - 하지만 코드 리뷰의 목적은 저장소 전체를 파악하는 것이 아니라, 변경 사항이 실제 문제를 만들었는지 판단하는 것이다. - 도구 결과는 일회성 출력이 아니다. - 반환된 파일 내용은 에이전트의 컨텍스트에 남는다. - 불필요한 코드는 이후 추론 비용을 높인다. - 관련 없는 정보가 많아지면 리뷰의 초점도 흐려질 수 있다. ## 코딩 에이전트와 코드 리뷰어의 탐색 방식 차이 - 일반적인 코딩 에이전트는 변경 전에 넓은 영역을 파악할 수 있다. - 다른 코드에 미칠 영향을 확인하기 위해 저장소 구조를 폭넓게 탐색한다. - 계획 수립, 파일 수정, 여러 차례의 대화형 작업을 전제로 한다. - 코드 리뷰어는 보통 훨씬 좁은 질문에서 시작한다. - 이 함수는 어디에서 호출되는가? - 이 설정 키가 다른 곳에서도 사용되는가? - 같은 패턴의 테스트나 헬퍼가 존재하는가? - 이 동작을 설명하는 데 필요한 가장 작은 코드 범위는 무엇인가? - 따라서 리뷰 에이전트는 다음 순서를 따라야 한다. - PR diff에서 출발 - 변경된 코드가 일으킬 수 있는 구체적인 의문을 제기 - 해당 의문을 검증할 최소한의 주변 코드만 탐색 - 문제의 증거가 부족하면 탐색을 확장하지 않고 결론 ## 도구보다 중요한 지침과 워크플로 - Copilot CLI와 클라우드 에이전트의 도구 지침은 대화형 코딩 작업에 맞춰져 있었다. - 동일한 `grep`, `glob`, `view`라도 지침이 다르면 에이전트의 행동이 달라진다. - 기존 지침은 넓은 저장소 탐색을 유도했지만, 코드 리뷰에는 다음 원칙이 필요했다. - 변경된 diff를 탐색의 중심으로 삼기 - 파일 경로를 추측하기보다 diff에서 확인된 심벌과 호출 관계를 활용하기 - 전체 파일보다 필요한 코드 범위만 읽기 - 새 정보를 얻을 때마다 탐색을 무작정 넓히지 않기 - 실제 문제를 판단하는 데 필요한 증거만 컨텍스트에 추가하기 - 지침을 리뷰 작업의 특성에 맞게 다시 작성한 결과, 도구는 그대로 유지하면서도 리뷰 비용을 약 20% 절감했다. - 글에서는 이 개선이 리뷰 품질을 유지한 상태에서 이루어졌다고 설명한다. ## 실용적인 결론 에이전트 도구를 교체할 때는 도구의 기능만 비교해서는 안 된다. 도구 사용 지침과 에이전트가 따라야 할 탐색 워크플로까지 작업 목적에 맞게 설계해야 하며, 특히 코드 리뷰에서는 “더 많이 읽기”보다 “변경 사항을 검증하는 데 필요한 최소한만 읽기”가 비용과 품질 모두에 유리하다.