• Turing Post Korea
  • Posts
  • [전문가 기고] 'AI 기반 코드 리뷰'를 혁신하는 컨텍스트 엔지니어링의 비밀

[전문가 기고] 'AI 기반 코드 리뷰'를 혁신하는 컨텍스트 엔지니어링의 비밀

평범한 AI 에이전트와 뛰어난 AI 에이전트를 구분 짓는, 어쩌면 단 하나의 요소, '컨텍스트'

CodeRabbit은 2023년 미국 캘리포니아에서 설립된, AI 기반 코드 리뷰 플랫폼입니다. 고급 AI 추론 기능을 이용해서 코드의 변경 내용을 분석하고, 개발자의 의도를 이해해서 정확하고 인간적인 피드백을 제공해 주기도 하고, 코드의 전반적인 품질을 높이고 리뷰 시간을 단축하는 데 주력하는 회사입니다.

이 글의 저자인 Amotish Swain은 CodeRabbit의 풀스택 개발자, 컨퍼런스 연사이자 오픈소스 커뮤니티에 기여하는 전문가입니다.

편집자

‘컨텍스트 엔지니어링’이라는 용어는, 2025년 6월 Shopify CEO 토비 루트케가 트위터에서 언급하며 주목을 받았죠. 안드레이 카르파시가 이 용어를 ‘LLM의 컨텍스트 윈도우를 정교하게 설계하는 기술’이라고 정의했구요. 프롬프트 엔지니어링이 프롬프트 문구를 최적화하는 작업에 초점을 맞추는 거라면, 컨텍스트 엔지니어링의 접근법은 코드 의존성, 과거 데이터 등을 통합해서 AI가 제공하는 답변의 정확성과 통찰력을 높이고, 특히 코딩의 맥락에서는 복잡한 코드베이스에서 오탐지를 줄이고 개발 생산성을 강화하는 데 중요한 역할을 합니다.

저는 ‘프롬프트 엔지니어링’보다 ‘컨텍스트 엔지니어링’이라는 용어가 더 마음에 듭니다. 이 용어가 핵심이 되는 기술을 더 잘 설명해 주는 것 같거든요 - LLM이 과제를 그럴듯하게 잘 해결할 수 있게끔 모든 컨텍스트를 제공하는 예술이라는 거요.

Tobe Lutke (토비 루트케)

이번 게스트 포스트에서는, CodeRabbit의 Amotish Swain이 ‘AI 코드를 리뷰를 위한 컨텍스트 엔지니어링(Context Engineering)’에 대해서 이야기해 줍니다.

CodeRabbit은, LLM을 다루는데 있어서 컨텍스트가 얼마나 중요한 차이를 만들 수 있는지를 보여주는 훌륭한 사례입니다.

매일 CodeRabbit에서는 사용자의 풀 리퀘스트나 IDE에서 수만 건의 코드 리뷰를 실행하는데요. CodeRabbit이 제공하는 각각의 리뷰 코멘트는, 아주 조심스럽게 설계한, 비선형적인 리뷰 파이프라인(Review Pipeline)의 결과물이라고 할 수 있습니다.

이 파이프라인은 코드와 관련된 수십 개의 소스에서 컨텍스트 데이터를 가져오고, 우리가 제공하는 모든 제안 내용이, 리뷰 중인 풀 리퀘스트와 전체 코드베이스의 컨텍스트 안에서 적절한 것인지 확인하는 검증 에이전트(Verification Agent)를 실행합니다.

컨텍스트 엔지니어링. 이건, 단순히 일반적인 코딩 표준에 패턴 매칭을 하는 다른 AI 코드 리뷰 도구와, 프로젝트의 특정 아키텍처(Architecture), 패턴(Pattern), 목표(Goal)를 깊이 이해하고 나서 코드 리뷰라는 작업에 실제 의미와 가치를 더할 수 있는 도구를 구분지을 수 있는 핵심 기법입니다.

코드 리뷰에서 컨텍스트 엔지니어링의 본질

CodeRabbit에서는, 우리의 도구가 작동하는 컨텍스트를 세 가지의 뚜렷한 부분으로 나눠서 설명, 제공합니다:

  • 의도(Intent)
    개발자나 팀이 코드 변경을 통해 달성하고자 하는 목표입니다. 여기에는 풀 리퀘스트의 목적, 해결하려는 문제, 그리고 기대하는 결과가 포함됩니다.

  • 환경(Environment)
    시스템의 현재 기술적인 상태입니다. 파일 간의 관계, 코드 의존성(Dependency), 프로젝트 구조(Project Structure), 그리고 기존 패턴(Pattern)을 포함합니다.

  • 대화(Conversation)
    멀티 턴 LLM 호출에 포함되는 일반적인 요소들입니다. 다시 말해서, 여러분의 채팅 메시지, 도구 호출 응답(Tool Call Response) 등이 여기에 해당합니다.

이런 요소들이 적절하게 균형을 이루고 AI 시스템에 종합적으로 제시될 때, 그 결과 역시 단순히 문법적 문제(Syntactic Issue) 뿐 아니라 아키텍처의 불일치(Architectural Inconsistency), 잠재적인 성능의 병목 현상(Performance Bottleneck), 그리고 고급의 설계 개선(Design Improvement) 기회를 포착하는 지능적인 코드 리뷰어(Intelligent Code Reviewer)가 되는 겁니다.

컨텍스트 엔지니어링의 최적 지점 찾기

AI 기반의 코드 리뷰를 잘 하게 하기 위한 적절한 컨텍스트를 만드는 과정에는, 아래와 같이 몇 가지 어려운 점이 있습니다:

  1. AI 에이전트를 위한 골디락스 문제(Goldilocks Problem)

    너무 적은 컨텍스트는 “환각(Hallucination)”을 초래할 수 있습니다. 즉, AI가 누락된 정보에 대해 잘못된 가정을 하는 경우가 생긴다는 거죠. 반대로, 너무 많은데 관련성이 없는 컨텍스트는 신호(Signal)를 약화시켜서 AI가 중요하지 않은 부분에 집중하거나 정보에 압도되게 만듭니다. 딱 적절한 컨텍스트는 AI 에이전트가 노이즈 없이 정확한 통찰(Insight)을 얻는 데 필요한 것을 정확히 제공해야 합니다.

  2. 토큰 단위의 처리(Token-by-Token Processing)

    사람은 문서를 빠르게 훑어보고 중요한 부분을 우선순위에 두지만, AI 모델은 텍스트를 토큰 단위(Token-by-Token)로 처리하면서 기본적으로 각 텍스트 조각에 동일한 비중을 둡니다. 풀 리퀘스트의 모든 코드 변경 사항을 프롬프트에 넣으면, AI가 중요하지 않은 부분에 집착하게 되면서 중요한 문제를 놓칠 수 있습니다. 그래서 컨텍스트를 선별(Curating)하는 것이 중요합니다. 중요한 변경 사항을 우선순위에 두고 중요하지 않은 것은 버려야 합니다.

  3. 컨텍스트 창의 제한(Context Window Limitation)

    가장 발전된 최고의 AI 모델이라도 컨텍스트 창, 즉 한 번에 처리할 수 있는 텍스트의 최대량이 제한되어 있습니다. 이 제한 때문에, 특히 대규모 코드베이스(Codebase)나 복잡한 풀 리퀘스트에서 전략적인 컨텍스트 선택(Strategic Context Selection)이 아주 중요해 집니다.

CodeRabbit의 컨텍스트 엔지니어링 접근법

CodeRabbit에서는 이런 난제를 해결하고 지속적으로 높은 품질로 코드 리뷰를 하실 수 있도록, 다층적인 컨텍스트 준비를 하는 접근법을 개발했습니다.

CodeRabbit의 시스템은, AI 모델의 이해도를 극대화하도록 컨텍스트를 수집, 필터링, 구조화하는 정교한 비선형 파이프라인(Non-linear Pipeline)을 사용합니다. 아래에 그 중 세 가지 레이어를 말씀드립니다:

1.컨텍스트 강화(Context Enrichment)

컨텍스트 준비 과정에서 우리가 활용하는 수십 개의 컨텍스트 소스 중 일부를 말씀드리자면:

  • 클론된 저장소(Cloned Repo)

  • 코드 그래프 분석(Code Graph Analysis)

  • 인덱싱된 현재 및 과거 이슈(Indexed Open and Past Issues)

  • 경로 및 AST 기반 지침(Path & AST-based Instructions)

  • 현재 및 과거 풀 리퀘스트(Open and Past PRs)

  • 40개 이상의 린터 및 SAST 도구(40+ Linters & SAST Tools)

  • 웹 쿼리(Web Query)

  • 채팅에서 얻은 학습 내용(Learnings from Chat)

2.리뷰 에이전트(Review Agent)

생각할 수 있는 모든 커멘트와 제안을 찾아 냅니다.

3.검증 에이전트(Verification Agents)

최대 10개의 프로세스가 사용자의 설정(Config Settings)과 코드베이스(Codebase)를 기반으로 해서 커멘트를 필터링합니다.

지능형 리포지토리 및 풀 리퀘스트 정보 수집

CodeRabbit의 컨텍스트 준비는 풀 리퀘스트 자체로부터 가장 관련성 높은 정보를 추출하는 것부터 시작합니다:

  • 메타데이터(Metadata): PR 제목, 설명, 영향을 받는 커밋 범위(Commit Range) 같은 필수 데이터를 수집해서 코드 변경의 “이유”를 파악합니다.

  • 차등 분석(Differential Analysis): 점진적 리뷰(Incremental Review)를 위해서, 마지막 리뷰 이후의 정확한 변경 사항을 계산해서 에이전트(Agent)가 새로 추가되거나 수정된 부분에만 집중하도록 합니다.

  • 경로 필터링(Path Filtering): 시스템이 의미 있는 코드 변경과 부수적인 파일(예: 생성된 자산이나 의존성, Generated Assets or Dependencies)을 구분해서 AI가 정말 중요한 부분에 주의를 기울일 수 있게 합니다.

다중의 소스로부터 지식을 통합

훌륭한 코드 리뷰는 현재 변경 사항을 단독적으로 검토하는 것보다 훨씬 큰 일입니다. 그래서, CodeRabbit에서는 더 넓은 기술적 및 비즈니스 컨텍스트를 이해하는 작업을 진행합니다:

  • 과거로부터 학습(Historical Learnings): 벡터 데이터베이스를 활용해서 에이전트가 과거 리뷰에서 얻은 학습 내용을 저장합니다. 이렇게 해서 시스템이 관련된 피드백 패턴(Feedback Pattern)과 사용자 선호도(User Preference)를 기억하고, 이걸 염두에 두고 리뷰 코멘트를 구조화할 수 있습니다.

  • 풀 리퀘스트 의도 분석(PR Intent Analysis): 풀 리퀘스트 설명과 관련 이슈를 분석해서 변경의 근본적인 목표를 추출합니다. 이 절차를 통해서, CodeRabbit의 리뷰가 개발자의 목표와 더 가까워질 수 있습니다.

  • 코드 그래프 분석(Code Graph Analysis): 이어서 코드 의존성(Code Dependency)의 그래프 표현(Graph Representation)을 구성해서 AI가 파일 간 상호 관계를 이해하도록 돕습니다. 이렇게 하면, 아키텍처 영향(Architectural Impact)을 고려한 리뷰를 할 수 있습니다.

전략적으로 컨텍스트를 구성

리뷰에 필요한 모든 원시 정보를 수집한 다음, AI 에이전트를 위해서 프롬프트의 패키징을 최적화합니다:

  • 패킹 및 정렬(Packing and Sorting)

  • 적응형 복잡성 관리(Adaptive Complexity Management)

  • ‘우아하게’ 컨텍스트 정리(Graceful Context Pruning)

프롬프트 엔지니어링

리뷰 파이프라인(Review Pipeline)의 다음 단계는 바로 AI를 위한 완벽한 지침을 만드는 것이죠. 일반적으로, 프롬프트에서 코드와 컨텍스트를 평균적으로 1:1 비율로 유지하는데, 이것 역시 컨텍스트가 얼마나 중요한지 보여주는 비율이라고 하겠습니다.:

  • 수준에 맞는 프롬프트(Level-appropriate Prompts): 파일의 복잡성과 중요성에 따라서 리뷰의 Depth를 조정합니다. 기본적인 점검에서부터 심층적인 아키텍처 분석(Architectural Analysis)까지 다양하죠. 서로 다른 복잡성의 수준에 따라서 서로 다른 프롬프트와 모델(Model)을 사용합니다.

  • 구조화된 리뷰 가이드라인: 명확한 지침을 주어야 AI 에이전트가 우리의 과거 도움이 된 리뷰 커멘트 데이터를 기반으로 각각의 특정한 상황에 가장 높은 가치를 가지는 피드백 타입에 집중하게끔 해 줄 수 있습니다.

  • 컨텍스트 강화(Context Enrichment): 프롬프트에는 관련된 프로젝트의 코딩 표준(Coding Standards), 패턴(Pattern), 그리고 AI가 회사별 모범 사례(Best Practices)를 따르도록 안내하는, 과거에 학습한 인사이트(Historical Insights)가 포함됩니다.

  • 컨텍스트 선택(Context Selection): 컨텍스트 준비를 수행한 이전 에이전트의 결과를 최종적으로 검토해서 노이즈(Noise)를 줄입니다.

검증 에이전트(Verification Agents)

리뷰 프로세스의 최종 목표는 AI 기반의 품질 보증 레이어(Quality Assurance Layer)라고 할 수 있는 일종의 검증 시스템(Verification System)입니다. 이 시스템은 AI 리뷰어(AI Reviewer)가 스스로의 작업 결과를 재확인해야 할 때 활성화됩니다.

이 레이어에는 활성화(Activation), 증거 수집(Evidence Gathering), 반복 분석(Iterative Analysis), 그리고 의사결정(Decision Making)이 포함됩니다.

컨텍스트 엔지니어링이 리뷰의 품질에 미치는 영향

이렇게 컨텍스트 엔지니어링의 준비 파이프라인(Context Engineering Preparation Pipeline)을 정교하게 구성하고 실행한다면, 아래와 같은 이점이 있고, 결과적으로 훌륭한 리뷰 품질로 나타나게 됩니다:

오탐지 감소(Reduced False Positives)

AI에 적절한 컨텍스트를 제공해서, 개발자의 시간을 낭비하는 관련 없는 또는 잘못된 제안을 크게 줄입니다. 예를 들어서, 팀의 코딩 표준에 맞지 않는 함수 호출 변경 같은 경우를 피할 수 있습니다. 시스템은 프로젝트별 관례(Project-specific Convention)를 이해하고, 의도된 패턴(Pattern)을 문제로 표시하지 않습니다.

더 심도있는 아키텍처적인 통찰(Deeper Architectural Insights)

코드 관계와 프로젝트 구조(Project Structure)에 대한 더 많은 지식을 바탕으로 해서, CodeRabbit은 단순한 린팅 도구(Linting Tool)나 패턴 매칭(Pattern Matching)으로는 놓칠 수 있는 아키텍처 문제(Architectural Issue)를 식별할 수 있습니다. 예를 들어서, 많은 고객이 CodeRabbit이 풀 리퀘스트(PR)의 변경 사항이 코드베이스(Codebase)의 다른 의존성(Dependency)에 영향을 미칠 때 이를 표시할 수 있었다고 이야기하는 걸 들을 수 있습니다.

모범 사례의 일관된 적용(Consistent Application of Best Practices)

과거의 학습 내용과 팀별 지식을 통합해서, 모든 리뷰에서 코딩 표준과 모범 사례를 일관되게 적용합니다. CodeRabbit에서는 팀이 코딩 가이드라인을 더 쉽게 공유할 수 있도록 계속해서 노력하고 있고, 최근에는 선호하는 코딩 에이전트(Coding Agent)에서 코딩 가이드라인을 가져올 수 있는 기능을 추가하기도 했습니다.

시간이 지남면서 더 향상되는 학습(Enhanced Learning over Time)

CodeRabbit의 접근 방식은 시스템이 매번 리뷰를 할 때마다 개선되도록 하는 것으로, 프로젝트별 인사이트의 지식 베이스를 계속 쌓아가면서 이후 이루어지는 리뷰의 가치를 극대화합니다.

훌륭한 컨텍스트 엔지니어링의 중요성

컨텍스트는 단순히 LLM을 사용하는데 필요한 기술적 요구사항이 아닙니다. 오히려, 효과적으로 AI 에이전트를 활용하기 위해서 필수적인 요소입니다.

CodeRabbit은 컨텍스트를 신중하게 수집, 필터링, 구조화, 그리고 AI에 피드인(Feed-in)해서, 코드를 단순히 검토하는 데 그치지 않고 코드의 전체 복잡성을 이해해서 개발자의 생산성을 높이고, 코드를 더 견고하게 만들고, 팀의 효율성을 극대화하는 인사이트를 제공합니다. 특히, 지금 여러 AI 코딩 에이전트가 상당한 양의 AI 잡음(AI Slop)을 생성하는 경향이 있는 상황에서, 이런 제대로 된 컨텍스트 엔지니어링의 중요성은 점점 커지고 있습니다.

AI 기반의 코드 리뷰를 위한 컨텍스트 엔지니어링, 이 여정은 지금 막 시작한 것에 불과합니다. 저희 CodeRabbit에서도 리뷰의 품질을 개선하기 위한 접근 방식을 끊임없이 다듬고 있습니다. 모델의 역량(Model Capabilities)이 지속적으로 확장될 것이기 때문에, 앞으로 CodeRabbit을 비롯한 훌륭한 AI 기반 코드 리뷰 도구들도 훨씬 개발 생산성을 효과적으로 높이는데 더 큰 기여를 하게 되리라 생각합니다.

AI 기반 코딩 작업에, ‘컨텍스트’의 중요성을 확인하고 싶으세요?

CodeRabbit은 풀 리퀘스트(PR)와 여러분의 IDE에서 직접 시니어 엔지니어 수준의 AI 코드 리뷰를 제공해서, 더 좋은 코드를 더 빠르게 배포할 수 있도록 돕습니다.

지금 CodeRabbit을 14일 무료 체험으로 탐색해 보실 수 있습니다. 컨텍스트 엔지니어링(Context Engineering)에 대해 더 알고 싶으시다면, CodeRabbit이 사용하는 데이터 포인트(Data Points)에 대한 자세한 내용을 포함하고 있는 Context Engineering: Level Up을 확인해 보세요.

*CodeRabbit의 Amitosh Swain이 작성한 이 글의 원문은 이 곳에 게재되어 있습니다. CodeRabbit의 인사이트, 그리고 튜링 포스트에 대한 지원에 감사드립니다.

읽어주셔서 감사합니다. 재미있게 보셨다면 친구와 동료 분들에게도 뉴스레터를 추천해 주세요.

Reply

or to participate.