검증 병목
- 패턴 보기: AI는 병목을 코드 작성에서 코드 신뢰로 옮겼다 — 그리고 이를 증명하는 업계 데이터
- AI가 생성한 PR을 리뷰하는 데 유독 비용이 많이 드는 세 가지 힘(볼륨, 컨텍스트 손실, 그럴싸함 편향) 이해
- 기본 점검, AI 트리아지 및 집중된 인간 판단을 분리하는 3계층 라우팅 학습
- AGENTS.md / CLAUDE.md + 서비스별 규칙 스택을 사용해 코드베이스 인식 리뷰어 설정
- 복리 루프 알기 — 월간 규칙 추가가 12주에 걸쳐 팀 취향을 기계 확인 가능한 정책으로 어떻게 전환시키는지
AI 코딩 에이전트를 도입한 첫 해에 거의 모든 팀이 걸리는 패턴이 있다:
Cursor / Copilot / Claude Code가 들어왔다. 피처 브랜치 처리량이 뛰어올랐다. 그런 다음 리뷰 큐가 악화되고, 사이클 타임이 평평해졌고, 그 성과가 어디로 갔는지 아무도 알아낼 수 없었다.
이것이 검증 병목이다. 코드 작성은 결코 코드 배포의 전체 비용이 아니었다 — 코드를 리뷰하고, 신뢰하고, 병합해도 안전한지 결정하는 것이 항상 그랬다. AI는 첫 번째 부분의 가격을 한 자릿수 낮췄고 나머지 시스템은 같은 가격으로 남겨두었다.
한 문장으로 정리한 패턴
AI는 코드를 신뢰하는 비용을 줄이기 전에 코드를 생산하는 비용을 줄인다. 제약이 옮겨간다. 워크플로우를 함께 옮기지 않으면 파이프 상단의 처리량이 리뷰 단계에서 쌓이기만 한다.
또는, Codacy의 현상 요약에서: "더 많은 코드가 풀 리퀘스트 큐에 도달하고, 더 많은 변경이 검증을 필요로 하며, 위험한 작업을 리뷰하도록 신뢰받는 사람들은 여전히 주당 같은 시간을 가진다."
업계 데이터 (2025–2026)
이 형태는 여러 독립적인 데이터셋에 걸쳐 나타난다:
| 신호 | 발견 | 출처 |
|---|---|---|
| 피처 브랜치 처리량 | AI 도입 팀에서 +59% YoY | Codacy (2026) |
| 메인 브랜치 처리량 (중간 팀) | −7% YoY, 성공률 **70.8%**로 하락 | Codacy (2026) |
| AI 지원 PR의 픽업 타임 | 리뷰어가 시작하기까지 2.47배 더 긴 대기 | Codacy (2026) |
| 완전 에이전트 PR의 픽업 타임 | 5.3배 더 긴 대기 | Codacy (2026) |
| 제로 리뷰로 병합되는 PR | AI 중심 팀에서 +31% | Codacy (2026) |
| AI 지원 PR의 크기 | 전통적 PR보다 ~18% 더 큼 | Jellyfish, MetaCTO 인용 (2026) |
| AI 코드 정확성에 대한 신뢰 (개발자 설문) | 29% — 역사적 최저 | Stack Overflow Developer Survey 2025 |
이 숫자들이 말하지 않는 것에 주목하라. AI가 나쁜 코드를 작성한다고 말하지 않는다. AI 하류의 파이프라인이 AI 생성 변경이 가져오는 볼륨, 크기 및 컨텍스트 손실을 위해 설계되지 않았다고 말한다.
AI 생성 PR이 리뷰하기에 유독 비용이 많이 드는 이유
세 가지 힘이 쌓인다:
1. 볼륨. 하나의 프롬프트는 하루가 걸리던 것을 생성할 수 있다. 팀이 3배의 PR을 생산하고 있다면, 리뷰 용량은 마법처럼 그와 함께 확장되지 않는다. 큐가 먼저 자라고, 사기가 다음이다.
2. 컨텍스트 손실. 인간 저자는 실패한 접근 방식, "명백한" 수정을 배제한 제약, 거의 변경한 파일을 기억한다. AI 저자는 그중 아무것도 diff에 남기지 않는다. 리뷰어는 의도를 처음부터 재구성해야 한다 — 모든 PR에 대해 — 구현 여정이 커밋 메시지에 없기 때문이다.
3. 그럴싸함 편향. AI 출력은 옳아 보인다. 컨벤션을 따르고, 깔끔하게 형식화하며, 예상되는 라이브러리를 임포트한다. 실패 모드는 페이지에서 뛰어오르는 구문 오류가 아니다 — 주의 깊게 읽을 때만 표면화되는 의도와 동작 사이의 미묘한 불일치다. 그 읽기는 느리고, 큐가 깊을 때 인간이 정확히 건너뛰는 읽기다.
이들을 모두 합치면: 더 많은 PR, 각각이 상속받은 컨텍스트를 덜 가지고, 각각이 같은 크기의 인간 저작 diff보다 더 주의 깊은 읽기를 요구한다. 그것이 병목이다.
이를 수정하는 3계층 라우팅
Codacy, MetaCTO, Moderne 및 FreeCodeCamp 핸드북에서 반복적으로 나타나는 완화책은 같은 형태다: 인간이 대체 불가능한 것만 인간이 보도록 리뷰를 계층화하라.
- 형식, 린트, 타입 체크, 보안 스캔, 종속성 정책, 시크릿 스캔, 커버리지 게이트. 리뷰어가 배정되기도 전에 실행된다. 리뷰가 냉기 상태에서 시작될 때 인간의 주의 40%를 먹는 지루하고 기계적인 실패를 차단한다. 여기서 변경이 실패하면 아무에게도 도달하지 않는다.
- 실제 프로젝트 컨텍스트를 가진 AI 리뷰어 — 아키텍처, 명명 컨벤션, 안티패턴 — 는 구조화된 요약을 생산한다: '차단 / 수정 필요 / 있으면 좋음 / 검증됨.' 그 일은 승인이 아니다. 그 일은 인간의 냉기 시작을 압축하는 것이다: 위험한 파일을 지적하고, 누락된 테스트를 표시하고, diff가 위반하는 규칙을 인용한다.
- 인간은 얻는다: 의도, 아키텍처 적합성, 비즈니스 로직 검증, 팀 간 결과. 처음 두 계층이 이미 처리한 모든 것은 '검증됨'으로 표시되어 인간이 재확인하지 않는다. 로테이션에서 무작위로 뽑는 것이 아니라 위험 계층별로 지정된 리뷰어.
처음 두 계층은 이전에 눈여겨보았을 diff의 대부분을 차지해야 한다. 세 번째 계층은 큐가 되기를 멈추고 결정이 되기 시작한다.
코드베이스 인식 리뷰어, 구체적으로
일반 AI 리뷰어는 중요한 하나를 놓친다: 당신의 아키텍처. 팀 전반에 걸쳐 결정화되고 있는 패턴은 리뷰어가 소비할 수 있는 기계 판독 가능한 파일로 제도적 지식을 옮기는 것이다.
project-root/
├── AGENTS.md # entry point — lean, high-signal
├── CLAUDE.md # symlink → AGENTS.md
├── .claude/
│ ├── settings.json # read-only guardrails
│ ├── pr-rules/
│ │ ├── common.md # rules that apply everywhere
│ │ ├── frontend.md # per-workspace rules
│ │ └── backend.md
│ └── commands/
│ └── review-pr.md # the review slash command
├── frontend/AGENTS.md # architecture, patterns, anti-patterns
└── backend/AGENTS.md # business rules, contracts, test conventions
이 레이아웃에서 두 가지 설계 선택이 하중을 지탱한다:
- 하나의 거대한 파일이 아닌 서비스별
AGENTS.md. 긴 명령 목록은 모든 항목에서 저하된 준수를 야기한다 — 모델은 200번째 줄을 지나 훑기 시작한다. 각 파일을 주제당 한 문단으로 유지하고, 세부사항은 링크로 연결하라. - 규칙은 열망이 아닌 명령형이다. "컨트롤러는 리포지토리를 호출해서는 안 된다"는 테스트 가능하다. "컨트롤러를 얇게 유지하려고 노력하라"는 동전 던지기다.
다음은 PR이 열리기 전에 로컬에서 실행되는 리뷰 명령의 형태다:
로컬 /review-pr 명령 (Claude Code / 코드베이스 인식 리뷰어)
You are reviewing a pull request against the main branch. STEPS: 1. Fetch main, compute the merge base with the current branch, and read the full diff. 2. Read the PR title/body for stated intent. If intent is unclear, ask before reviewing. 3. Load rules in order: .claude/pr-rules/common.md, then any workspace-specific rule files whose path prefix matches the changed files (e.g. frontend/**, backend/**). 4. Read the nearest AGENTS.md for each changed file's service and note conventions. OUTPUT — use exactly these sections and nothing else: ## Summary One paragraph. What changed, and why (as stated in the PR). ## Blocking Real defects, security issues, or rule violations that must be fixed before merge. Format: `path:line — <problem>. <suggested fix>.` ## Should fix Quality issues that would normally get pushback in review but aren't blockers. ## Nice to have Minor improvements. The author may reasonably ignore these. ## Verified Things you actively checked and confirmed correct. This section exists so the human reviewer does not re-check them. ## Rule candidate (optional) If you saw a recurring pattern this review, suggest ONE new rule for a human to evaluate for pr-rules/. Do not modify any rule file yourself. CONSTRAINTS: - No praise, no manufactured concerns. If nothing is wrong in a section, write "None." - Cite as `file:line`. No prose descriptions of location. - You never modify rule files. You never approve or merge.
가드레일: 기본적으로 읽기 전용
main, 시크릿 또는 워크플로우 파일에 쓰기 접근 권한이 있는 리뷰어 에이전트는 대기 중인 공급망 사건이다. 수렴하고 있는 컨벤션은 다음을 하드 차단하는 .claude/settings.json(또는 사용하는 도구의 동등물)이다:
- 시크릿:
.env*,.npmrc,.pgpass,*.pem,**/credentials.json - Git 쓰기 작업:
push,commit,rebase,reset --hard—fetch,diff,log허용 - PR 변조: PR 생성, 병합 또는 승인. 코멘트는 리뷰어의 출력이 자동으로 게시되기를 원하는 경우에만 허용
- 워크플로우 / 시크릿 변조:
gh workflow run,gh secret,gh variable
리뷰어가 읽기만 할 수 있다면, 손상되거나 환각을 일으키는 에이전트의 최악의 경우는 나쁜 리뷰 코멘트다. 그것은 나쁜 병합보다 훨씬 저렴한 실패 모드다.
위험 기반 라우팅 (모든 것이 같은 리뷰를 받을 자격이 있는 것은 아니다)
팀이 저지르는 다른 실수는 모든 AI 생성 PR을 동일하게 취급하는 것이다. 위험별로 라우팅하라:
| 위험 계층 | 예시 | 리뷰 |
|---|---|---|
| 낮음 | 문서 전용 변경, CI가 그린으로 잡은 종속성 패치 범프, 생성된 스냅샷 업데이트 | 계층 1 + AI 트리아지; 둘 다 통과하면 자동 병합 |
| 중간 | 격리된 모듈의 피처 코드, 서비스 내 리팩터링 | 계층 1 + AI 트리아지 + 집중된 인간 리뷰어 한 명 |
| 높음 | 인증, 결제, 마이그레이션, 서비스 경계를 넘는 코드, 프로덕션 데이터를 건드리는 모든 것 | 계층 1 + AI 트리아지 + 지정된 시니어 리뷰어 + 코딩 전 의도 문서 |
요점은 리뷰를 줄이는 것이 아니다 — 결과를 바꾸는 곳에 인간 시간을 쓰는 것이다.
PR 분해: 변경을 확인 가능하게 유지하기
10,000줄의 AI 생성 PR은 의미 있는 의미에서 리뷰 가능하지 않다. 고무 도장을 찍거나 앉아 있다. 워크플로우 조치는 분해를 강제하는 것이다:
- 명시적 분할 정책으로 PR 크기 제한 (많은 팀이 400–900줄을 선택하며, 생성된 마이그레이션은 제외).
- 정당하게 더 많은 범위가 필요한 피처를 위한 스택 PR — 각 계층은 확인 가능하며, 전체 세트가 함께 착륙한다.
- AI가 계획하고, 결정론적 도구가 실행한다. 저장소 전반의 변경의 경우, AI를 계획자(어떤 파일, 어떤 레시피)로 취급하고 결정론적 도구를 실행자(레시피를 모든 곳에서 동일하게 적용)로 취급하라. Morgan Stanley의 규모에서의 OpenRewrite 기반 프로그램은 정확히 이 분할을 사용했다.
복리 루프
반복되는 리뷰 코멘트는 모두 규칙 후보다. 규칙은 pr-rules/에 들어가고, AI 리뷰어는 다음 PR에서 이를 픽업하며, 그 코멘트는 인간이 다시 쓸 필요가 없다. FreeCodeCamp 핸드북은 타임라인을 다음과 같이 프레임화한다:
- 1주차: 리뷰어가 팀의 반복되는 사소한 것의 5–10%를 잡는다.
- 4주차: 규칙 세트가 실제 PR 피드백에서 자라면서 20–30%.
- 3개월+: 규칙 세트가 기록된 팀 취향으로 성숙했다.
복리가 실제 해자다. 어떤 팀이든 오후에 CodeRabbit이나 Greptile을 설치할 수 있다. 100개의 PR을 pr-rules/에 리뷰 코멘트를 다시 공급하는 데 쓴 팀은 그들의 코드베이스를 아는 AI 리뷰어를 가진다. 그렇지 않은 팀은 일반적인 것을 가진다.
유지 관리 규율은 작지만 협상할 수 없다:
- 모든 캐치: 올바른
pr-rules/파일에 한 줄 쓴다. - 매월: 오래된 규칙을 정리한다(피처 제거됨, 패턴 폐기됨).
- 분기별: 각 서비스별
AGENTS.md를 다시 읽고 표류를 정리한다.
여전히 인간이 필요한 것 (그리고 항상 그럴 것)
3계층 라우팅은 공격적이지만, 바닥이 있다. 인간은 다음에 대해 대체 불가능하게 남는다:
- 제품 판단. 이 변경이 존재해야 하는가? AI 리뷰어는 규칙에 대해 측정한다. 전략에 대해 측정할 수 없다.
- 팀 간 결과. 변경이 격리에서는 올바르게 보이지만 다른 팀 서비스와의 계약을 깨뜨린다.
- 책임. 이것이 손상된 채로 배포될 때 누군가는 사후 분석을 소유해야 한다. AI는 호출될 수 없다.
- AI 사각지대 리뷰. 같은 데이터로 훈련된 두 AI는 같은 사각지대를 공유한다. 저자와 리뷰어 둘 다 AI라면, 전체 버그 클래스가 체계적으로 보이지 않게 된다. 인간은 정확히 훈련 세트가 다르기 때문에 이를 본다.
건강한 최종 상태는 "AI가 모든 것을 리뷰한다"가 아니다. *"AI가 노이즈를 정리해서 인간이 인간이 필요한 것을 리뷰하도록 한다"*이다.
정직한 프레이밍
코딩에서 AI 생산성 이득의 대부분은 실제다. 피처 브랜치 처리량 +59%는 신기루가 아니다. 그러나 파이프 상단의 처리량은 하단 밖의 처리량이 아니며, 배포된 코드의 모든 측정 — 메인 브랜치 병합, 사이클 타임, 결함 이스케이프율 — 은 같은 이야기를 말한다: 제약이 옮겨갔고, 워크플로우를 함께 옮기지 않은 팀은 이득이 리뷰 큐로 사라지는 것을 보았다.
2026년에 AI 코딩 에이전트로 이기고 있는 팀은 가장 많은 코드를 생성하는 팀이 아니다. 생성됨에서 병합됨까지 가장 짧고, 저렴하고, 가장 신뢰받는 경로를 가진 팀이다.
퀴즈
스스로 점검하기
0/5플래시카드
관련
- 능력–신뢰성 격차 — 자매 패턴: "능력 있음" ≠ "병합해도 안전함."
- 신뢰 사다리 — 리뷰어 에이전트 자체에 얼마나 많은 자율성을 부여할지.
- AI 에이전트 평가하기 — 리뷰어를 어떤 에이전트를 측정하는 것과 같은 방식으로 측정한다.
- CLAUDE.md란 무엇인가? — 이 전체 패턴이 구축된 파일.
- AGENTS.md — 같은 아이디어를 위한 도구 간 컨벤션.
- 훅 — 에이전트 자체 루프에 연결된 계층 1 기본선 점검.
출처 및 추가 자료
- Codacy — AI Is Breaking Code Review: How Engineering Teams Fix the PR Bottleneck (2026). 피처 브랜치 +59%, 메인 브랜치 −7%, 2.47× / 5.3× 픽업, 31% 제로 리뷰 병합, 3계층 완화.
- FreeCodeCamp — How to Unblock Your AI PR Review Bottleneck: A Tech Lead's Guide to Building a Codebase-Aware Reviewer (2026). AGENTS.md + pr-rules/ + 읽기 전용 settings.json 패턴; 2주 부트스트랩; 복리 루프.
- MetaCTO — Code Review Is the New Bottleneck in AI Development (2026). Jellyfish 18% 더 큰 PR; PR 분해와 위험 기반 라우팅.
- Moderne — AI Didn't Break Coding, It Broke Code Review (2026년 7월). Morgan Stanley 사례 연구; AI 계획 / 결정론적 도구 실행 패턴; DDRA 위험 라우팅.
- Stack Overflow — 2025 Developer Survey (AI 신뢰 질문, 29% 수치).
- Anthropic — Claude Code documentation (CLAUDE.md, 훅, 설정, 권한).