본문으로 건너뛰기

kt cloud VM과 Claude로 PR 리뷰 자동화

kt cloud VM에서 규칙 기반 검증과 Claude Code를 결합해 지속 실행되는 PR Review Bot을 구축한 사례입니다.

이 요약은 AI가 원문을 분석해 생성했습니다. 정확한 내용은 원문 기준으로 확인하세요.

TL;DR

PR 리뷰는 코드 품질을 지키는 핵심 절차지만 리뷰어의 일정과 경험에 따라 대기 시간과 판단 품질이 달라지고 반복 검증이 시니어 인력에게 집중됩니다. 이 사례는 kt cloud VM에 상시 실행 환경을 만들고, poller가 GitHub PR을 주기적으로 조회해 diff를 수집한 뒤 Claude Code Agent를 호출하는 PR Review Bot을 구성합니다. Signals는 변경 사실을 모으고 Policy Engine은 architecture-rules.json의 규칙으로 위반을 판정하며 Claude는 그 결과를 자연어 코멘트로 정리해 판단과 설명을 분리합니다. tmux와 로그 관리를 더해 SSH 연결이 끊겨도 프로세스를 유지하고 실행 상태를 추적하며, Bot은 반복 검증을 맡고 사람은 비즈니스 로직과 설계 트레이드오프 같은 맥락 기반 판단에 집중합니다.

섹션별 상세

기존 PR 리뷰는 코드 변경을 공유하고 병합하기 위한 핵심 절차지만, 모든 검증과 판단이 사람에게 몰리면서 대기 시간과 품질 편차가 커지는 문제가 생깁니다. 리뷰어의 일정과 프로젝트 이해도에 따라 아키텍처 의존성, 네이밍, 설정 변경의 영향도가 다르게 판단되고 시니어 리뷰어에게 작업이 집중됩니다. 글의 출발점은 리뷰어가 더 많은 시간을 투입하는 방식이 아니라 반복 검증을 시스템으로 옮기는 구조를 만드는 데 있습니다.
GitHub Pull Requests 화면에 리뷰 대기, 리뷰 부담 집중, 품질 편차가 표시된 운영 상황 이미지입니다.
Screenshot화면에는 여러 PR이 Open 상태로 쌓여 있고 각 PR의 리뷰어 수와 코멘트 수가 다르게 나타납니다. 오른쪽에는 PR이 장기간 리뷰 대기 상태에 머물면 개발 흐름이 지연되고, 특정 리뷰어에게 요청이 몰리며, 기준 차이로 품질 편차가 생긴다는 문제가 적혀 있습니다. 글의 기존 PR 리뷰 병목과 사람에게 집중된 검증 부담을 시각적으로 뒷받침합니다.
이 구조는 AI에게 코드의 좋고 나쁨을 직접 판정하게 하지 않고 판단 기준과 검증 로직을 분리합니다. 사람은 리뷰 기준을 정의하고 규칙은 위반 여부를 계산하며 Claude는 이미 나온 결과를 읽기 쉬운 PR 코멘트로 정리합니다. 판단과 자연어 생성을 나누면 동일한 입력에 대한 재현성을 높이고 AI 환각이 개입할 여지를 줄일 수 있습니다.
Developer, PR, Reviewer, Feedback으로 이어지는 기존 PR 리뷰 흐름과 다섯 가지 문제를 정리한 다이어그램입니다.
Diagram다이어그램은 개발자가 코드를 작성하고 PR을 만든 뒤 사람이 직접 검토하고 피드백을 반영하는 순서를 보여줍니다. 하단에는 리뷰 대기 시간 증가, 리뷰 품질 편차, 반복 검증 부담, 병목 집중, 휴먼 에러 발생이 문제점으로 정리돼 있으며 모든 검증과 판단이 사람에게 집중된 구조라는 결론으로 이어집니다. 글이 제안하는 Bot의 사전 검증과 사람의 맥락 기반 판단 분리를 이해하는 데 직접 연결됩니다.
kt cloud VM은 항상 켜진 실행 환경과 사내 접근 제어를 함께 확보하기 위한 운영 기반으로 선택됐습니다. VM에 방화벽과 IP allowlist를 적용하고 GitHub 연동, 전용 실행 환경, 로그 관리를 구성해 로컬에서 한 번 실행하는 실험을 팀 단위 서비스로 전환합니다. Claude의 PR 리뷰 기능과 조직 차원의 GitHub Copilot 유료 기능을 바로 쓰기 어려운 상황에서 필요한 기능을 직접 조합한 사례입니다.
PR Review Bot은 주기적으로 PR을 조회하는 poller가 변경을 감지하고 diff를 수집한 뒤 Claude Code Agent를 호출하는 순서로 작동합니다. 사람의 요청이 있어야 시작되는 기존 흐름과 달리 시스템이 신규 또는 변경된 PR을 먼저 찾아 리뷰 결과를 기록합니다. 자동 실행을 반복 가능한 프로세스로 만든 점이 단순한 코드 리뷰 스크립트와 다른 운영상의 핵심입니다.
근거
  • PR Review Bot은 kt cloud VM에서 poller가 PR을 주기적으로 감지하고 diff 수집, Claude Code Agent 실행, 결과 기록을 반복하는 방식으로 운영된다. 5장 전체 구조와 8.1~8.2 운영 구성의 VM 기반 운영 및 poller 구조 설명
PR Review Agent는 Signals, Policy Engine, Claude Code Agent의 3개 레이어로 구성됩니다. Signals는 git diff에서 변경 파일과 코드 내용, 영향 범위라는 사실 데이터를 모으고 Policy Engine은 architecture-rules.json에 정의된 규칙으로 의존성 방향과 네이밍 등의 위반을 판정하며 Claude Code Agent는 그 결과를 리뷰 코멘트로 변환합니다. 각 레이어의 책임을 나누면 사실 수집, 규칙 판단, 결과 표현을 서로 독립적으로 관리할 수 있습니다.
근거
  • Claude는 PR의 품질을 독자적으로 판정하지 않고 Policy Engine의 규칙 검증 결과를 사람이 읽기 쉬운 리뷰 코멘트로 정리한다. 6장 PR Review Agent 아키텍처의 Signals, Policy Engine, Claude Code Agent 역할 설명과 FAQ의 Claude Code 역할 문단
  • Policy Engine은 claude/architecture/architecture-rules.json에 정의된 규칙으로 아키텍처 위반과 의존성 방향, 네이밍 컨벤션을 검증한다. 6장 PR Review Agent 아키텍처의 Policy Engine 설명
리뷰 기준을 문서나 구두 전달에 머물게 하지 않고 시스템이 실행하는 규칙 파일로 바꾸는 과정이 자동화의 중심입니다. 레이어 의존성, 네이밍 컨벤션, 설정 파일 영향도 같은 반복 검증 항목을 코드로 관리하면 모든 PR에 동일한 기준을 적용하고 변경 이력도 추적할 수 있습니다. 개인 경험에 의존하던 기준이 팀의 공유 자산으로 바뀌면서 일관성, 재현성, 확장성을 함께 확보합니다.
근거
  • 규칙을 코드로 정의하면 PR마다 동일한 기준을 적용하고 리뷰 기준을 팀 자산으로 관리할 수 있다. 7.2~7.5 규칙을 실행 대상으로 전환하고 일관성, 재현성, 확장성을 확보하는 절
운영 환경에서는 Webhook 대신 poller.sh의 Polling을 사용해 GitHub CLI로 PR 목록을 일정 주기마다 확인합니다. 신규 또는 변경된 PR의 diff를 수집하고 Claude Code Agent를 실행한 뒤 결과를 기록하는 흐름을 tmux 세션에서 장기 실행하며, 로그는 tail -f ~/logs/pr-review.log로 추적합니다. 별도 이벤트 서버 없이 구성 요소를 줄이고 SSH 세션이 종료돼도 프로세스를 유지해 단순성과 관측 가능성을 높인 선택입니다.
근거
  • tmux와 로그 관리를 사용해 SSH 세션 종료 이후에도 poller를 유지하고 실행 상태를 추적한다. 8.3 tmux 장기 실행 구성과 8.4 로그 관리의 명령 예시 tmux attach -t poller 및 tail -f ~/logs/pr-review.log
자동화 이후 Bot은 아키텍처 규칙 위반, 네이밍과 코드 스타일, 설정 및 공통 모듈 변경, 구조적 리스크처럼 규칙으로 반복 검증할 수 있는 항목을 먼저 처리합니다. 사람 리뷰어는 비즈니스 로직, 설계 의도, 성능과 유지보수성의 트레이드오프, 사용자 경험과 예외 정책처럼 맥락이 필요한 판단에 집중합니다. 따라서 Bot은 사람을 대체하는 최종 판정자가 아니라 리뷰의 첫 검증 계층으로 배치됩니다.
bash
tmux new -s poller bash ~/projects/ai-team/scripts/schedules/pr_review/poller.sh

tmux 세션에서 PR 감지용 poller.sh를 실행합니다.

bash
# 세션 생성
tmux new -s poller
# 세션 분리 Ctrl + B, D
# 세션 재접속
tmux attach -t poller

poller를 장기 실행하고 세션을 분리하거나 다시 접속하는 명령입니다.

bash
tail -f ~/logs/pr-review.log

PR Review Bot의 실행 로그를 실시간으로 확인합니다.

용어 해설

Polling
외부 이벤트를 기다리지 않고 일정한 주기로 상태를 조회해 새로운 작업을 감지하는 방식입니다. 이 글에서는 poller.sh가 GitHub PR 목록을 반복 조회하고 신규 또는 변경된 PR의 diff를 가져옵니다. Webhook 서버를 별도로 구성하지 않아 구조가 단순하지만, 조회 주기만큼 감지 지연이 발생합니다.
Policy Engine
사전에 정의한 규칙을 입력 데이터에 적용해 위반 여부를 판정하는 실행 계층입니다. 이 글의 Policy Engine은 architecture-rules.json을 읽고 레이어 의존성, 네이밍 컨벤션, 설정 변경 영향도를 검사합니다. 판단 기준을 코드로 관리해 PR마다 동일한 검증 결과를 얻도록 만드는 핵심 구성 요소입니다.
tmux
터미널 세션과 프로세스를 분리해 SSH 연결이 끊겨도 장기 실행 작업을 유지하는 도구입니다. 글에서는 poller를 tmux 세션 안에서 실행하고 세션을 분리한 뒤 필요할 때 다시 접속합니다. VM 재시작이나 세션 단절 상황을 제외하면 사람이 계속 접속해 있지 않아도 Bot을 실행할 수 있게 합니다.
GitHub CLI
터미널에서 GitHub 저장소와 Pull Request를 조회하고 조작하는 명령줄 도구입니다. 이 구조에서는 poller가 GitHub CLI로 PR 목록을 가져오고 신규 또는 변경된 PR을 감지한 뒤 diff를 수집합니다. Webhook 없이 반복 조회 방식으로 자동화 흐름을 구성하는 입력 접점 역할을 합니다.
AI 환각(Hallucination)
모델이 근거에 없는 내용을 사실처럼 생성하는 현상입니다. 글에서는 Claude가 코드의 좋고 나쁨을 독자적으로 판정하지 않고 Policy Engine이 산출한 규칙 검증 결과를 자연어 리뷰로 정리하도록 역할을 제한합니다. 판단 기준을 사람과 규칙 파일에 두어 임의 판단의 범위를 줄이는 접근입니다.

기술

  • Claude
  • Claude Code
  • kt cloud VM
  • GitHub
  • GitHub CLI
  • Script
  • poller.sh
  • architecture-rules.json
  • tmux
  • FSD

활용 사례

  • 팀 단위 Pull Request 1차 검증
  • 아키텍처 레이어와 의존성 방향 검사
  • 네이밍 컨벤션 및 코드 스타일 점검
  • 설정 파일과 공통 모듈 변경 영향도 감지
  • AI 기반 PR 리뷰 자동화의 지속 운영
AI 분석 전체 내용 보기

AI 요약 · 북마크 · 개인 피드 설정 — 무료

출처 · 인용 안내

원문 발행 2026. 08. 20.수집 2026. 08. 20.출처 타입 RSS

인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.