# 대규모 코드베이스 작업 (/ko/docs/verdent-for-vscode/common-workflows/large-codebases)

> 대규모 코드베이스를 탐색하고 작업하기 위한 전략



대규모 코드베이스에서 작업하려면 컨텍스트 제한을 관리하고 생산성을 유지하기 위한 구체적인 전략이 필요합니다. 이 가이드는 Verdent for VS Code을 사용해 대규모 프로젝트를 효율적으로 탐색하고, 이해하고, 수정하기 위한 실용적인 워크플로를 제공합니다.

***

## 코드베이스 탐색에 Explorer 에이전트 사용하기 [#코드베이스-탐색에-explorer-에이전트-사용하기]

대규모 코드베이스를 처음 접했고 특정 기능이 어디에 구현되어 있는지 찾아야 한다고 가정해 보겠습니다.

<Steps>
  <Step title="넓은 범위의 탐색 질문을 합니다">
    ```
    Where is user authentication handled in this codebase?
    ```

    Verdent은 코드베이스 검색에 특화된 토큰 효율적인 전문가인 Explorer 에이전트에 자동으로 위임합니다.
  </Step>

  <Step title="Explorer가 효율적으로 검색합니다">
    Explorer 에이전트는:

    * 파일 이름과 경로를 검색합니다
    * 키워드로 코드 내용을 grep합니다
    * 아키텍처 패턴을 분석합니다
    * 파일 경로와 코드 스니펫이 포함된 결과를 반환합니다
  </Step>

  <Step title="검색을 좁힙니다">
    ```
    Show me all files that import the authentication module
    ```

    Explorer는 후속 검색을 수행해 결과를 좁힐 수 있습니다.
  </Step>

  <Step title="복잡한 검색을 병렬화합니다">
    포괄적으로 탐색하려면 Verdent에서 여러 Explorer 에이전트를 병렬로 실행할 수 있습니다:

    * Explorer 1: 인증 로직 찾기
    * Explorer 2: 권한 부여 로직 찾기
    * Explorer 3: 세션 관리 찾기

    병렬 검색을 통해 결과가 더 빠르게 도착합니다.
  </Step>
</Steps>

<Tip>
  **팁:**

  * Explorer 에이전트는 메인 컨텍스트를 채우지 않고도 대규모 코드베이스에서 효율적으로 작동합니다
  * 여러 Explorer 에이전트가 서로 다른 측면을 동시에 검색할 수 있습니다
  * 패턴 매칭과 아키텍처 탐색에는 Explorer를 사용합니다
  * 결과에는 컨텍스트를 위한 파일 경로와 관련 코드 스니펫이 포함됩니다
</Tip>

***

## 작업을 관리 가능한 단위로 나누기 [#작업을-관리-가능한-단위로-나누기]

대규모 코드베이스에서 작업 중이며 여러 파일에 걸친 기능을 추가해야 한다고 가정해 보겠습니다.

<Steps>
  <Step title="자연스러운 작업 경계를 식별합니다">
    모든 것을 한 번에 요청하는 대신:

    ```
    Phase 1: Add the data models for the notification system
    ```

    먼저 독립적으로 완결되는 하나의 컴포넌트에 집중합니다.
  </Step>

  <Step title="단계를 완전히 완료합니다">
    Phase 2로 넘어가기 전에 테스트까지 포함해 Phase 1을 완전히 진행합니다. 이렇게 하면 깔끔한 체크포인트가 만들어집니다.
  </Step>

  <Step title="진행 상황을 커밋합니다">
    ```bash
    git add .
    git commit -m "feat: add notification data models"
    ```

    커밋하면 안전하게 되돌릴 수 있는 지점이 만들어집니다.
  </Step>

  <Step title="다음 단계를 위해 컨텍스트를 비웁니다">
    복잡한 작업에서는 다음 단계로 넘어가기 전에 컨텍스트를 비웁니다. 이렇게 하면 Verdent이 최고 성능을 유지할 수 있을 만큼 충분한 컨텍스트 용량을 확보할 수 있습니다.

    ```
    Phase 2: Build the notification API endpoints using the data models
    ```

    Phase 2에만 집중하는 새 컨텍스트로 새 세션을 시작합니다.
  </Step>
</Steps>

<Tip>
  **팁:**

  * 자연스러운 중단 지점은 컨텍스트 소진을 방지합니다
  * 각 단계는 독립적으로 테스트할 수 있어야 합니다
  * 단계 사이에 커밋하면 안전하게 실험할 수 있습니다
  * 새 세션은 컨텍스트를 깔끔하고 집중된 상태로 유지합니다
</Tip>

***

## 대규모 변경에 Plan Mode 활용하기 [#대규모-변경에-plan-mode-활용하기]

대규모 코드베이스에서 수십 개 파일에 흩어진 기능을 리팩터링해야 한다고 가정해 보겠습니다.

<Steps>
  <Step title="Plan Mode에서 시작합니다">
    ```
    Switch to Plan Mode: Refactor the payment processing logic to use a new payment provider across all files
    ```

    Plan Mode을 사용하면 파일 수정에 컨텍스트를 소비하지 않고 읽기 전용 분석을 수행할 수 있습니다.
  </Step>

  <Step title="Explorer로 영향을 받는 모든 파일을 찾습니다">
    ```
    Use the Explorer agent to find all files that reference payment processing
    ```

    업데이트가 필요한 모든 위치를 빠짐없이 찾을 수 있습니다.
  </Step>

  <Step title="포괄적인 플랜을 검토합니다">
    Verdent은 다음을 보여주는 플랜을 제시합니다:

    * 변경이 필요한 모든 파일(25개 파일 식별)
    * 메인 컨텍스트에 포함할 최소 파일 집합
    * 작업 순서
    * 변경 간 의존성

    접근 방식을 확정하기 전에 검토합니다.
  </Step>

  <Step title="실행을 승인합니다">
    플랜이 만족스러우면 실행을 승인합니다. Verdent이 변경을 체계적으로 진행합니다.
  </Step>
</Steps>

<Tip>
  **팁:**

  * Plan Mode은 실행 전에 최소 파일 집합을 식별하는 데 도움이 됩니다
  * Explorer는 대규모 리팩터링에서 누락되는 파일이 없도록 보장합니다
  * 플랜은 컨텍스트가 소비되기 전에 범위를 명확히 보여줍니다
  * 문서화와 팀 리뷰를 위해 플랜을 파일로 저장합니다
</Tip>

***

## 여러 파일에 걸쳐 조율된 변경 적용하기 [#여러-파일에-걸쳐-조율된-변경-적용하기]

대규모 코드베이스 전반의 50개 이상 파일에서 사용되는 함수를 이름 변경해야 한다고 가정해 보겠습니다.

<Steps>
  <Step title="Explorer로 모든 사용 위치를 찾습니다">
    ```
    Use the Explorer agent to find all files that use the calculateTotal function
    ```

    업데이트가 필요한 모든 파일을 식별합니다.
  </Step>

  <Step title="Plan Mode에서 범위를 검토합니다">
    ```
    In Plan Mode: Rename calculateTotal to computeFinalTotal across all files
    ```

    변경하기 전에 전체 범위를 확인합니다.
  </Step>

  <Step title="누락된 파일이 없는지 확인합니다">
    Verdent은 업데이트가 필요한 52개 파일을 모두 보여줍니다. 목록을 검토해 완전한지 확인합니다.
  </Step>

  <Step title="조율된 변경을 실행합니다">
    플랜을 승인합니다. Verdent이 모든 파일을 체계적으로 업데이트해 어디서나 일관되게 이름이 변경되도록 합니다.
  </Step>

  <Step title="테스트를 실행해 확인합니다">
    ```
    Run the full test suite to verify all references were updated correctly
    ```

    테스트는 놓친 참조를 잡아냅니다.
  </Step>
</Steps>

<Tip>
  **팁:**

  * Explorer는 대규모 변경에서 누락되는 파일이 없도록 보장합니다
  * Plan Mode은 실행 전에 전체 범위를 보여줍니다
  * 체계적인 업데이트는 모든 파일에서 일관성을 유지합니다
  * 대규모 리팩터링 후에는 포괄적으로 테스트합니다
</Tip>

<Tip>
  여러 파일에 걸친 조율된 변경은 단계별로 진행할 때 더 안전합니다. 한 계층을 업데이트하고, 검증한 다음, 의존하는 계층으로 넘어갑니다.
</Tip>

***

## 자주 묻는 질문 [#자주-묻는-질문]

<Accordion title="컨텍스트 제한에 가까워지고 있다는 것을 어떻게 알 수 있나요?">
  응답 시간이 느려지거나, 세션이 여러 시간 동안 실행되거나, 큰 파일이 많이 로드되는 경우가 신호입니다. 세션 길이와 파일 수를 모니터링하세요. 성능 저하가 느껴지면 현재 작업을 완료하고, 진행 상황을 커밋한 다음, 깨끗한 컨텍스트로 새 세션을 시작합니다.
</Accordion>

<Accordion title="Verdent이 수십 개 파일을 한 번에 수정하도록 해도 안전한가요?">
  네, 올바르게 사용하면 안전합니다. 항상 Plan Mode을 사용해 먼저 전체 범위를 검토하고, 포괄적인 테스트 커버리지가 있는지 확인하며, 단계 사이에 자주 커밋하세요. 이렇게 하면 변경 사항을 점진적으로 검증하고 필요할 때 쉽게 되돌릴 수 있습니다.
</Accordion>

<Accordion title="Explorer 에이전트를 언제 사용하고, 파일을 직접 로드해야 하는 때는 언제인가요?">
  메인 컨텍스트를 소비하지 않고 탐색과 검색 작업을 할 때 Explorer 에이전트를 사용합니다. 파일을 수정해야 할 때만 @-멘션으로 파일을 직접 로드합니다. Explorer는 "다음 조건에 맞는 모든 파일 찾기..." 같은 질문에 적합하고, @-멘션은 "이 특정 파일 업데이트" 작업에 적합합니다.
</Accordion>

<Accordion title="대규모 코드베이스 작업에는 어떤 모델 프리셋이 가장 적합한가요?">
  복잡한 다중 파일 작업과 리팩터링에는 Performance 프리셋을 사용합니다. 간단한 검색과 탐색 작업에는 Efficiency 프리셋을 사용합니다. Performance는 조율된 변경에 더 많은 추론 능력을 제공하고, Efficiency는 탐색에 더 빠르고 비용 효율적입니다.
</Accordion>

***

## 함께 보기 [#함께-보기]

<CardGroup cols="2">
  <Card title="다단계 작업 예시" icon="list-check" href="/docs/verdent-for-vscode/common-workflows/multi-step-tasks">
    복잡한 다단계 워크플로와 작업 관리
  </Card>

  <Card title="모범 사례" icon="star" href="/docs/verdent-for-vscode/best-practices/context">
    컨텍스트 관리와 최적화 전략
  </Card>
</CardGroup>
