AI 에이전트로 코드 리뷰를 자동화하는 방법
한 에이전트가 코드를 작성하고 다른 에이전트가 리뷰하는 자동화된 AI 코드 리뷰 파이프라인을 실용적인 예제와 설정으로 구성하는 방법입니다.
코드 리뷰는 소프트웨어 개발에서 가장 가치가 높은 활동 중 하나입니다. 버그를 잡고, 표준을 지키게 하고, 팀 전체에 지식을 전파합니다. 동시에 병목이기도 합니다. 리뷰어는 자기 일과 들어오는 PR 사이를 오가며 작업 전환을 반복하고, 리뷰는 대기열에 쌓입니다.
AI 에이전트는 코드를 즉시 리뷰할 수 있습니다. 그리고 적절하게 구성하면 전체 흐름을 자동화할 수 있습니다. 한 에이전트가 코드를 작성하고, 다른 에이전트가 리뷰하고, 문제를 고치고, 다시 리뷰하는 과정을 사람의 개입 없이 진행할 수 있습니다.
설정 방법은 다음과 같습니다.
기본 패턴
Writer Agent → Review Agent → Writer Agent (fix) → Review Agent (approve)- 작성 에이전트가 기능이나 버그 수정을 구현합니다.
- 완료되면 출력이 자동으로 리뷰 에이전트에게 전달됩니다.
- 리뷰어가 변경 사항을 분석하고 문제를 보고합니다.
- 문제는 수정용으로 다시 작성 에이전트에게 전달됩니다.
- 리뷰어가 승인하거나 라운드 제한에 걸릴 때까지 이 과정을 반복합니다.
1단계: 리뷰 기준 정의
리뷰 에이전트는 명확한 기준이 필요합니다. 기준이 없으면 "에러 처리를 추가해보세요" 같은 일반적인 피드백만 내놓게 됩니다. 별 도움이 되지 않습니다.
좋은 리뷰 프롬프트에는 구체적인 기준이 포함되어야 합니다.
다음 기준으로 변경 사항을 리뷰하세요:
1. 정확성 - 로직이 엣지 케이스를 포함한 모든 경우를 처리하는가?
2. 보안 - SQL 인젝션, XSS, 인증 우회 위험이 있는가?
3. 성능 - N+1 쿼리, 불필요한 할당, 블로킹 호출이 있는가?
4. 에러 처리 - 오류가 올바르게 포착, 로깅, 전파되는가?
5. 일관성 - 코드베이스의 기존 패턴을 따르는가?
모든 기준이 통과하면 "LGTM" (Looks Good To Me)이라고 응답하세요.
문제가 있으면 파일 경로와 줄 번호를 포함해 각 항목을 나열하세요."LGTM" 키워드는 중요합니다. 리뷰가 통과되었음을 나타내며, 라우팅 루프를 멈추는 신호가 됩니다.
2단계: 작성 에이전트 설정
작성 에이전트에게는 집중된 작업을 줍니다.
/api/auth/login 엔드포인트에 속도 제한을 구현하세요.
IP당 분당 5회 시도로 제한하는 슬라이딩 윈도우 알고리즘을 사용하세요.
기존 Redis 클라이언트가 있는 src/lib/redis.ts를 사용해 윈도우를 저장하세요.구체적인 작업일수록 구체적인 변경이 나오고, 리뷰 품질도 좋아집니다.
3단계: 라우팅 연결 구성
작성자에서 리뷰어로 다음 설정으로 연결합니다.
| 설정 | 값 | 이유 |
|---|---|---|
| Trigger | on-idle | 리뷰 전에 작성이 완전히 끝날 때까지 기다림 |
| Transform | ai-routing | AI가 문맥을 고려한 리뷰 프롬프트 생성 |
| Max rounds | 3 | 무한 리뷰 루프 방지 |
| Stop keyword | LGTM | 리뷰어가 승인하면 종료 |
| Cooldown | 5s | 에이전트가 완전한 응답을 낼 수 있도록 충분한 시간 확보 |
여기서 ai-routing 변환이 중요합니다. 작성 에이전트의 전체 응답을 읽고(Claude Code의 경우 JSONL 세션 해석을 통해), 무엇이 구현되었는지 이해한 뒤, 변경된 파일과 구현 맥락을 포함한 리뷰 프롬프트를 생성합니다.
4단계: 역방향 연결 구성
리뷰 루프가 동작하려면 리뷰어에서 작성자 쪽으로의 연결도 필요합니다.
| 설정 | 값 | 이유 |
|---|---|---|
| Trigger | on-idle | 전체 리뷰가 끝날 때까지 기다린 뒤 되돌림 |
| Transform | ai-routing | 리뷰 피드백을 수정 지시로 변환 |
| Max rounds | 3 | 정방향과 동일한 제한 |
| Stop keyword | LGTM | 리뷰어가 승인했다면 되돌리지 않음 |
역방향 변환은 리뷰 코멘트를 실행 가능한 수정 지시로 바꿉니다. 예: "src/middleware/rate-limit.ts:42의 속도 제한 우회 문제를 고치세요. 프록시 뒤에서 X-Forwarded-For 헤더를 처리하지 못합니다."
기대할 수 있는 것
전형적인 자동화 리뷰 사이클:
라운드 1 (작성자 → 리뷰어):
- 작성자가 3개 파일에 걸쳐 속도 제한을 구현합니다.
- 라우터가 구현 요약을 추출해 리뷰어에게 보냅니다.
- 리뷰어가 2개의 문제를 찾습니다. X-Forwarded-For 처리 누락과 429 응답 테스트 부재입니다.
라운드 2 (리뷰어 → 작성자 → 리뷰어):
- 라우터가 리뷰 피드백을 수정 지시로 변환합니다.
- 작성자가 두 문제를 수정하고 누락된 테스트를 추가합니다.
- 라우터가 업데이트된 구현을 리뷰어에게 보냅니다.
- 리뷰어가 "LGTM - 속도 제한이 프록시 헤더를 올바르게 처리하고 테스트 커버리지도 있습니다."라고 응답합니다.
종료: "LGTM" 키워드가 중지 조건을 트리거합니다. 총 소요 시간은 약 8분, 2라운드입니다.
자동 리뷰가 특히 잘 맞는 경우
- 범위가 분명한 변경 - 단일 기능이나 버그 수정처럼 범위가 명확한 작업
- 명확한 기준 - 좋은 결과가 무엇인지 정확히 정의할 수 있는 경우
- 점진적 개선 - 첫 구현이 대략 80% 맞고, 완전한 재작성보다는 다듬기가 필요한 경우
인간 리뷰를 쓰는 편이 나은 경우
- 아키텍처 결정 - AI 에이전트는 구현 품질은 검토하지만, 접근 방식이 옳은지 판단하지는 못합니다.
- 팀 간 영향 - 다른 팀에 영향을 주는 변경은 조직 우선순위에 대한 사람의 맥락이 필요합니다.
- 민감한 코드 - 인증, 암호화, 금융 로직은 AI 리뷰와 더불어 반드시 사람의 검토가 필요합니다.
자동화된 AI 리뷰는 인간 리뷰를 대체하는 것이 아니라 보완합니다. 기계적으로 잡을 수 있는 문제를 먼저 걸러내고, 사람 리뷰어는 더 전략적인 질문에 집중하게 하세요.
자동 리뷰를 위한 도구
이 파이프라인은 두 개의 터미널 창으로 수동 구성할 수 있지만, 리뷰 출력을 복사하고 수정 지시로 다시 포맷하고, 작성자에게 붙여 넣는 과정은 번거롭습니다.
MadoHub은 이 전체 흐름을 자동화합니다. 캔버스에 두 개의 터미널 에이전트를 배치하고, 서로 연결한 뒤, trigger/transform/stop 설정을 구성하고 작성자를 시작하세요. 나머지는 라우팅 시스템이 처리합니다. 추출, 변환, 전달, 루프 종료까지 모두 포함됩니다.
요약
자동화된 AI 코드 리뷰는 다중 에이전트 워크플로 중 ROI가 가장 높은 사례 중 하나입니다.
- 빠름 - 리뷰가 몇 시간 대신 몇 초 만에 일어납니다.
- 일관됨 - 리뷰 기준이 매번 같습니다.
- 반복적 - 이슈가 후속 PR이 아니라 즉시 수정됩니다.
- 보완적 - 인간 리뷰와 함께 쓰면 더 완전한 검토가 가능합니다.
설정은 5분이면 됩니다. 시간 절감 효과는 매일 복리처럼 쌓입니다.