프롬프트 체이닝으로 AI 코드 리뷰 자동화하기
문제 상황
Claude를 활용해 PR 코드 리뷰를 자동화하려 했는데, 단일 프롬프트로는 결과물이 일관성이 없었다. 때로는 사소한 포맷팅만 지적하고, 때로는 로직 이슈를 놓쳤다.
프롬프트 체이닝 적용
리뷰 프로세스를 3단계로 분리했다.
1단계: 코드 분석
다음 코드의 구조를 분석하고 주요 로직을 요약해줘.
- 함수/컴포넌트 목록
- 외부 의존성
- 핵심 비즈니스 로직
2단계: 이슈 탐지
위 분석을 바탕으로 다음 관점에서 문제를 찾아줘.
- 보안 취약점
- 성능 이슈
- 에러 핸들링 누락
3단계: 개선안 작성
발견된 이슈에 대해 우선순위를 매기고,
각각에 대한 구체적인 수정 방안을 제시해줘.
구현
Node.js 스크립트로 GitHub webhook을 받아 처리했다.
const reviewCode = async (diff) => {
const analysis = await claude.prompt(analyzePrompt(diff));
const issues = await claude.prompt(detectPrompt(analysis));
const suggestions = await claude.prompt(suggestPrompt(issues));
return formatReviewComment(suggestions);
};
각 단계의 출력을 다음 단계의 입력으로 전달하는 방식이다. 중간 결과를 로그로 남겨 디버깅도 쉬워졌다.
결과
체이닝 도입 후 리뷰 품질이 눈에 띄게 개선됐다. 특히 보안 이슈 탐지율이 높아졌고, 제안하는 코드도 맥락을 더 잘 이해하는 수준이 됐다.
단계가 늘어나 응답 시간은 약간 증가했지만(~15초), 품질 대비 충분히 감수할 만했다. 팀 내 반응도 좋아서 현재 모든 PR에 자동으로 적용 중이다.
교훈
복잡한 작업은 하나의 프롬프트로 해결하려 하지 말고, 사람이 하는 사고 과정처럼 단계를 나눠야 한다. 각 단계의 출력을 명확히 정의하면 디버깅과 개선도 훨씬 수월하다.