코드래빗, AI 코딩 품질 향상을 위한 '계획' 중심 접근법
코드래빗(CodeRabbit)은 AI 코딩 에이전트의 출력 품질(Output Quality)을 향상시키기 위해 클로드(Claude) 기반의 에이전트 오케스트레이션 시스템(Agent Orchestration System)을 구축함
시스템은 코드 생성 전 계획 단계(Planning Phase)를 수행하여 개발팀의 암묵적 지식(Implicit Knowledge)과 AI 에이전트 간의 간극을 해소함
협업적 제품 요구사항 문서(PRD)를 생성하여 팀 내 의사소통(Communication)을 개선하고, 코드 재작업(Rework)을 방지함
클로드(Claude) 모델 제품군을 활용하여 작업 복잡도(Task Complexity)에 따라 모델을 선택하고, 비용 및 지연 시간(Latency)을 최적화함
계획 품질(Plan Quality)을 평가하기 위한 평가 시스템(Eval Harness)을 구축하여, 계획의 추상화 수준(Abstraction Level)을 반복적으로 개선함
AI 코딩 에이전트의 문제점: 암묵적 지식
본문에 따르면, AI 코딩 에이전트는 개발자의 암묵적인 지식을 이해하지 못하여, 컴파일은 되지만 의도와 다른 코드를 생성하는 경우가 빈번하게 발생한다. 개발자는 당연하게 여기는 요구사항을 명시하지 않지만, AI 에이전트는 이를 추론하여 코드를 작성하기 때문이다.
암묵적 가정(Implicit Assumptions): 개발자의 경험과 지식을 AI가 공유하지 못함
결과: 의도와 다른 코드 생성, 코드 재작업(Rework) 발생
해결책: 코드 생성 전 계획 단계(Planning Phase)를 통해 명시적인 요구사항 정의
결과적으로, AI 코딩 에이전트의 품질을 높이기 위해서는 명확한 요구사항 정의가 필수적이며, 이를 위해 계획 단계의 중요성이 강조된다.
코드래빗(CodeRabbit)의 에이전트 오케스트레이션 아키텍처
코드래빗(CodeRabbit)은 클로드(Claude) 모델을 활용하여, 코드 생성 전에 계획 단계를 수행하는 에이전트 오케스트레이션 시스템을 구축했다. 이 시스템은 여러 클로드(Claude) 모델을 조정하여 요구사항을 분석하고, 가정 사항을 파악한 후, 실행 계획을 생성한다.
Opus: 문제 이해 및 방향 설정
Sonnet: 계획 단계 시퀀싱
Haiku: 컨텍스트 추출 및 도구 사용
이러한 구조를 통해, 코드 생성 전에 팀 전체가 공유하는 제품 요구사항 문서(PRD)를 생성하고, 코드의 품질을 향상시킨다. 또한, 새로운 엔지니어의 온보딩(Onboarding) 과정에도 활용된다.
클로드(Claude) 모델 제품군 활용: 비용 및 지연 시간 최적화
코드래빗(CodeRabbit)은 작업의 복잡도에 따라 클로드(Claude) 모델 제품군을 선택하여, 비용과 지연 시간을 최적화한다. Opus는 고수준의 전략적 작업을, Sonnet은 계획 단계 시퀀싱을, Haiku는 특정 작업을 처리한다.
모델 선택: 작업의 특성에 따라 적합한 모델 선택
평가 시스템(Eval Harness): 계획 품질을 평가하여 모델 선택의 근거 마련
결과: 비용 효율성 및 성능 향상
평가 시스템(Eval Harness)을 통해, 계획의 품질을 지속적으로 개선하고, 각 모델의 장점을 최대한 활용한다.
계획 품질 평가를 위한 평가 시스템(Eval Harness) 구축
코드래빗(CodeRabbit)은 계획 품질을 평가하기 위한 평가 시스템(Eval Harness)을 자체적으로 구축했다. 이 시스템은 수동으로 튜닝된 예시와 수동 검사를 시작으로, 계획 품질의 특정 측면을 점수화하는 LLM(Large Language Model) 기반의 평가자를 개발했다.
평가 지표: 코드의 작동 여부, 추가 범위 포함 여부, 토큰 사용량
반복적 개선: 계획의 추상화 수준(Abstraction Level)을 반복적으로 개선
결과: 계획 품질 향상 및 AI 코딩 에이전트의 효율성 증대
평가 시스템(Eval Harness)을 통해, 계획의 품질을 객관적으로 평가하고, 지속적으로 개선할 수 있었다.
AI 기반 코딩 워크플로우(Workflow)의 변화와 베스트 프랙티스
AI 기반 코딩 워크플로우(Workflow)에서는 코드 검토(Code Review) 단계에서 발견되던 문제들이 계획 단계에서 미리 발견된다. 코드래빗(CodeRabbit)은 팀 전체가 검토하고, 합의할 수 있는 계획을 수립함으로써, 오류를 조기에 발견하고, 코드 품질을 향상시켰다.
명확한 목표 설정: 무엇을 만들고, 어떻게 측정할 것인지 명확하게 정의
암묵적 가정 파악: AI에게 누락된 부분을 질문
엣지 케이스(Edge Case) 식별: 잊기 쉬운 워크플로우(Workflow)나 엣지 케이스(Edge Case)를 질문
결과 기록: 계획 아티팩트(Artifact)를 기록하고 재사용
결과적으로, AI 기반 코딩 워크플로우(Workflow)에서는 계획 단계의 품질이 코드 품질에 큰 영향을 미치며, 조기 검토를 통해 개발 효율성을 높일 수 있다.