PR 병목 현상 해결하기: Haystack가 AI 생성 코드를 분류하는 방법
정교한 코딩 에이전트의 부상—Opus 4.5와 같은 모델에서 보여준 능력의 도약이 대표적인 예입니다—은 소프트웨어 개발 속도를 근본적으로 변화시켰습니다. 엔지니어가 전례 없는 속도로 풀 리퀘스트(PR)를 생성할 수 있게 된 반면, 해당 코드를 검토하는 인간의 능력은 그에 비례하여 확장되지 못했습니다. 팀원 한 명이 하루에 20개 이상의 PR을 생성할 수 있게 되면, 전통적인 라인별 diff 검토는 인지적으로 매우 피로하고 종종 비효율적인 정보의 "소방 호스"가 됩니다.
이것이 Haystack이 해결하고자 하는 핵심 문제입니다. 모든 PR을 수동 검토의 동일한 후보로 취급하는 대신, Haystack은 위험도, 증거, 의도에 따라 PR을 필터링하고 라우팅하는 분류(triage) 레이어를 도입하여 인간의 주의력이 결과에 의미 있는 영향을 미칠 수 있는 곳에 집중될 수 있도록 보장합니다.
"What Changed?"에서 "Does it Work?"로의 전환
전통적인 코드 검토는 diff에 집중합니다: 어떤 라인이 추가되거나 삭제되었는가? AI가 강화된 워크플로우에서는 이러한 접근 방식이 비효율적입니다. Haystack은 검토자의 초점을 목표와 검증 증거로 전환합니다. 코드로 시작하는 대신, 검토자에게 다음과 같은 정보가 제공됩니다:
- The Goal: PR의 의도된 목적.
- Design Decisions: 엔지니어와 코딩 에이전트 간의 대화를 통해 파악된 구현의 근거.
- Verification Evidence: 작성자가 변경 사항을 어떻게 검증했는지에 대한 문서화(예: 실행된 스크립트, 프론트엔드 확인, 또는 엔드 투 엔드 테스트).
구문(syntax)보다는 동작과 증거를 중심으로 검토를 진행함으로써, 프로세스는 모든 글자 변화를 수동으로 감사하는 것이 아니라 의도의 검증이 됩니다.
분류 시스템: 세 가지 검토 버킷
Haystack은 표준 GitHub PR 목록을 세 가지 별도의 버킷으로 분류하는 분류 큐(triage queue)로 대체합니다:
1. Safe to Merge
이들은 인간의 개입 없이 병합할 수 있다는 충분한 증거가 있는 PR입니다. 예시는 다음과 같습니다:
- 최종 상태의 스크린샷이 동반된 작은 UI 텍스트 변경.
- 작성자가 실제 환경에서 크리티컬한 경로를 테스트했다는 명확한 증거를 제공한 백엔드 변경 사항.
2. Needs Fixes
이 PR들은 인간 검토자에게 도달하기 전에 작성자가 수정해야 하는 항목으로 표시됩니다. 이는 검토자가 다음과 같은 명백한 오류나 정책 위반 사항에 대해 시간을 낭비하는 것을 방지합니다:
- Logic Failures: 에이전트에게 페이지네이션을 구현하도록 요청했으나, 대신 모든 결과를 로드하고 UI에서 페이지네이션을 시뮬레이션하는 경우.
- Rule Violations: 팀의 "no silent error swallowing" 정책을 위반하여 오류를 조용히 삼켜버리는 PR.
3. Needs Human Review
이 버킷은 고위험 변경 사항이나 충분한 검증이 부족한 항목을 위해 예약되어 있습니다. 여기에는 다음이 포함됩니다:
- Sensitive Areas: 결제 시스템과 같은 핵심 로직의 변경.
- Insufficient Verification: 작성자가 유닛 테스트만 실행하고 수동 엔드 투 엔드 검증을 수행하지 못한 고영향 사용자 대상 변경 사항(예: 온보딩 플로우).
AI 검토의 철학적 변화
Haystack의 도입은 개발 라이프사이클에서 AI의 역할에 대한 필수적인 대화를 불러일으킵니다. 일부 회의론자들은 AI가 작성한 코드를 AI가 검토하는 것이 순환 논리라는 질문을 던집니다. 하지만, 가치 제안은 완전한 자동화가가 아니라 *augmentation(증강)*에 있습니다.
한 커뮤니티 구성원이 언급했듯이, 이상적인 미래는 AI가 영화 Limitless의 개념과 유사하게—인간의 능력을 완전히 대체하는 것이 아니라 강화하는—지원 시스템으로 작동하는 경우입니다. "이 특정 부분들을 확인하세요, 왜냐하면 이들은 주목할 만합니다"라고 말하며 필터 역할을 수행함으로써, AI는 인간이 품질과 아키텍처의 최종 결정권자가 될 수 있도록 하면서 사소소한 검증의 번거로움을 제거해 줍니다.
결론
코딩 속도가 계속해서 가속화됨에 따라, 소프트웨어 개발 라이프사이클의 병목 현상은 코드를 작성하는 것에서 검토하는 것으로 이동하고 있습니다. 인간의 주의력을 희소하고 값비싼 자중원으로서 취급함으로써, Haystack는 분류(triage)가 검토에 앞서 이루어지는 시스템을을 통해 가장 크리티컬한 로직이 가장 많은 정밀한 검토를를하게 하고, 사소한 것은 자동화함으로써 문제를 해결합니다.