이 출시되었습니다! 11월의 새로운 기능 및 수정 사항을 읽어보세요.

작업 공간에서 채팅을 전문가로 활용하세요

채팅이 개별 파일뿐만 아니라 전체 코드베이스에 대한 깊은 이해를 갖게 될 때 훨씬 더 유용해집니다. 작업 공간 컨텍스트는 AI가 프로젝트 전체를 검색하고, 구성 요소가 어떻게 연결되는지 이해하며, 실제 코드를 기반으로 답변을 제공할 수 있도록 하는 기본 메커니즘입니다. 이를 통해 "인증은 어디서 처리되나요?" 또는 "새 API 엔드포인트를 어떻게 추가하나요?"와 같은 광범위한 질문을 하고 특정 코드베이스를 기반으로 정확한 답변을 얻을 수 있습니다.

이 문서는 작업 공간 컨텍스트가 작동하는 방식, 최적의 결과를 위한 작업 공간 인덱스 관리 방법, 그리고 프롬프트에서 이를 활용하기 위해 @workspace#codebase를 사용하는 방법을 설명합니다.

작업 공간 컨텍스트의 지능은 프로젝트의 크기와 설정에 따라 자동으로 조정되므로, 소규모 개인 프로젝트든 대규모 엔터프라이즈 코드베이스든 정확한 결과를 얻을 수 있습니다.

작업 공간 컨텍스트가 작동하는 방식

VS Code는 지능적인 검색 전략을 사용하여 질문에 가장 관련성이 높은 코드를 찾습니다. 단일 접근 방식을 사용하는 대신, 프로젝트 크기와 사용 가능한 리소스를 기반으로 최상의 방법을 자동으로 선택합니다. VS Code는 여러 전략을 병렬로 실행한 다음 가장 빠르게 최상의 결과를 생성하는 방법을 선택할 수 있습니다.

컨텍스트에 사용되는 소스는 무엇인가요?

작업 공간 컨텍스트는 개발자가 VS Code에서 코드베이스를 탐색할 때 사용하는 것과 동일한 소스를 검색합니다.

  • 인덱싱 가능한 모든 파일 (작업 공간 인덱스), .gitignore 파일에 의해 무시되는 파일 제외
  • 중첩된 폴더 및 파일 이름을 포함한 디렉토리 구조
  • 코드 심볼 및 정의 (클래스, 함수, 변수)
  • 현재 선택된 텍스트 또는 활성 편집기에서 보이는 텍스트

작업 공간 인덱스는 GitHub에서 원격으로 유지 관리하거나 로컬 컴퓨터에 저장할 수 있습니다. 자세한 내용은 작업 공간 인덱스 섹션을 참조하십시오.

중요

열려 있는 파일이 있거나 무시된 파일 내에 텍스트가 선택된 경우 .gitignore는 무시됩니다.

검색 전략

소규모 프로젝트의 경우 전체 작업 공간을 채팅 컨텍스트에 직접 포함할 수 있습니다. 대규모 프로젝트의 경우 VS Code는 프롬프트에 포함할 가장 관련성 높은 정보를 찾기 위해 다양한 전략을 사용합니다.

다음 단계는 VS Code가 작업 공간 컨텍스트를 구성하는 방법을 설명합니다.

  1. 질문에 답변하는 데 필요한 작업 공간 정보, 대화 기록, 작업 공간 구조 및 현재 편집기 선택을 결정합니다.

  2. 다양한 접근 방식을 사용하여 작업 공간 인덱스에서 관련 코드 조각을 수집합니다.

    • GitHub의 코드 검색
    • 질문의 의미와 일치하는 코드를 찾는 로컬 의미론적 검색 (정확한 키워드뿐만 아니라)
    • 텍스트 기반 파일 이름 및 내용 검색
    • 함수 서명, 매개변수 등과 같은 세부 정보를 추가하기 위한 VS Code의 언어 IntelliSense.
  3. 결과 컨텍스트가 컨텍스트 창에 맞지 않을 정도로 큰 경우, 가장 관련성 높은 부분만 유지됩니다.

작업 공간 인덱스

VS Code의 채팅은 인덱스를 사용하여 코드베이스에서 관련 코드 조각을 빠르고 정확하게 검색합니다. 이 인덱스는 GitHub에서 유지 관리하거나 로컬 컴퓨터에 저장할 수 있습니다.

원격 인덱스는 GitHub 또는 Azure DevOps에 있는 리포지토리의 커밋된 상태에서 빌드됩니다. 이는 로컬 작업 공간의 커밋되지 않은 변경 사항은 원격 인덱스에 포함되지 않음을 의미합니다.

로컬에서 커밋되지 않은 변경 사항이 있을 때, VS Code는 원격 인덱스와 로컬 파일 추적을 결합한 하이브리드 접근 방식을 사용합니다. VS Code는 인덱싱된 커밋 이후 수정된 파일을 감지하고 편집기에서 현재 파일 내용을 읽어 실시간으로 콘텐츠를 가져옵니다.

VS Code 상태 표시줄의 Copilot 상태 대시보드에서 사용 중인 인덱스 유형과 인덱싱 상태를 볼 수 있습니다.

Screenshot showing the workspace index status in the Copilot status menu.

원격 인덱스

VS Code는 원격 코드 검색 인덱스를 사용하여 AI가 대규모 코드베이스에서도 코드를 빠르게 검색할 수 있도록 합니다. 원격 코드 검색은 현재 GitHub 또는 Azure DevOps 리포지토리를 사용하는 작업 공간에서 사용할 수 있습니다.

GitHub 원격 인덱싱

VS Code는 작업 공간의 GitHub 기반 리포지토리에 대해 자동으로 원격 코드 검색 인덱스를 빌드하고 사용합니다. VS Code에서 GitHub 계정으로 로그인하면 채팅이 자동으로 사용 가능한 원격 코드 검색 인덱스를 사용하기 시작합니다.

리포지토리는 @workspace 또는 #codebase가 채팅에서 처음 사용될 때 자동으로 인덱싱됩니다. 또한 명령 팔레트 (⇧⌘P (Windows, Linux Ctrl+Shift+P))에서 **원격 작업 공간 인덱스 빌드** 명령을 실행하여 인덱싱을 강제할 수도 있습니다.

인덱스는 리포지토리당 한 번만 빌드하면 됩니다. 그 후 인덱스는 자동으로 최신 상태로 유지됩니다. 인덱스 빌드는 소규모 및 중간 규모 프로젝트의 경우 빠르지만, 리포지토리에 수십만 개의 파일이 포함된 경우 시간이 조금 걸릴 수 있습니다. GitHub가 코드의 비교적 최신 버전을 가지고 있을 때 원격 인덱스가 가장 잘 작동하므로, 코드를 정기적으로 GitHub에 푸시하는 것이 좋습니다.

현재 원격 인덱싱은 GitHub.com 또는 GitHub Enterprise Cloud에서 호스팅되는 GitHub 리포지토리에 대해 작동합니다. GitHub Enterprise Server를 사용하는 리포지토리에는 지원되지 않습니다.

Azure DevOps 원격 인덱싱

VS Code는 Azure DevOps 리포지토리에 대한 원격 인덱스도 사용할 수 있습니다. 이러한 인덱스는 자동으로 빌드 및 유지 관리됩니다. VS Code에서 Microsoft 계정으로 로그인하면 채팅이 원격 인덱스를 사용하기 시작합니다. Copilot 상태 표시줄 항목에서 현재 인덱스 상태를 확인하고 계정에 Azure DevOps 리포지토리에 액세스할 수 있는 올바른 권한이 없는 경우 로그인 링크를 얻을 수 있습니다.

로컬 인덱스

예를 들어 GitHub 또는 Azure DevOps 리포지토리를 사용하지 않는 경우와 같이 원격 인덱스를 사용할 수 없는 경우, VS Code는 로컬 컴퓨터에 저장된 고급 의미론적 인덱스를 사용하여 빠르고 고품질의 검색 결과를 제공할 수 있습니다. 현재 로컬 인덱스는 2500개의 인덱싱 가능한 파일로 제한됩니다.

로컬 인덱스 빌드 방법

  • 프로젝트에 인덱싱 가능한 파일이 750개 미만인 경우: VS Code는 자동으로 고급 로컬 인덱스를 빌드합니다.

  • 프로젝트에 인덱싱 가능한 파일이 750개에서 2500개 사이인 경우: 명령 팔레트 (⇧⌘P (Windows, Linux Ctrl+Shift+P))에서 **로컬 작업 공간 인덱스 빌드** 명령을 실행하십시오. 이 명령은 한 번만 실행해야 합니다.

  • 프로젝트에 인덱싱 가능한 파일이 2500개 초과인 경우: 기본 인덱스를 사용하십시오.

초기 로컬 인덱스 빌드 또는 많은 파일이 변경된 경우(예: Git 브랜치 전환 시) 인덱스를 업데이트하는 데 시간이 걸릴 수 있습니다. 상태 표시줄의 Copilot 상태 대시보드에서 현재 로컬 인덱스 상태를 모니터링할 수 있습니다.

기본 인덱스

프로젝트에 원격 인덱스가 없고 인덱싱 가능한 파일이 2500개 초과인 경우, VS Code는 코드베이스를 검색하기 위해 기본 인덱스를 사용합니다. 이 인덱스는 코드베이스를 검색하기 위해 더 간단한 알고리즘을 사용하며 대규모 코드베이스에서 로컬로 작동하도록 최적화되어 있습니다.

기본 인덱스는 많은 유형의 채팅 프롬프트에 대해 잘 작동해야 합니다. 그러나 코드베이스에 대한 질문에 관련성 높은 답변을 제공하는 데 어려움을 겪는 경우, 원격 인덱스로 업그레이드하는 것을 고려하십시오.

작업 공간 인덱스에 포함되는 내용은 무엇인가요?

VS Code는 현재 프로젝트의 일부인 관련 텍스트 파일을 인덱싱합니다. 이는 특정 파일 형식이나 프로그래밍 언어에 국한되지 않지만, VS Code는 일반적으로 작업 공간 질문에 관련성이 없는 .tmp 또는 .out 파일과 같은 일부 일반적인 파일 형식을 자동으로 건너뜁니다.

작업 공간 인덱스는 또한 files.exclude 설정을 사용하여 VS Code에서 제외된 파일이나 .gitignore 파일의 일부인 파일도 제외합니다.

VS Code는 현재 이미지 또는 PDF와 같은 이진 파일도 인덱싱하지 않습니다.

채팅에서 작업 공간 컨텍스트 사용하기

채팅에서 작업 공간 관련 질문을 할 때, 작업 공간 컨텍스트를 결정하는 동작은 사용 중인 에이전트에 따라 달라집니다.

  • 에이전트/계획

    에이전트를 사용할 때, 에이전트는 프롬프트를 기반으로 *에이전트적인* 코드베이스 검색을 자동으로 수행합니다. 이는 초기 검색을 수행하여 작업 공간 컨텍스트를 결정한 후, 결과에 따라 에이전트가 질문에 답변하는 데 필요한 정보를 수집하기 위해 추가적이고 더 목표 지향적인 검색을 수행하기로 결정할 수 있음을 의미합니다.

    프롬프트에서 #codebase 도구를 명시적으로 참조할 필요는 없지만, 작업 공간 컨텍스트가 질문에 사용되도록 하려면 그렇게 할 수 있습니다. 이는 프롬프트가 모호하여 작업 공간 컨텍스트가 필요하지 않은 것으로 해석될 수 있는 경우 유용합니다.

  • 질문/편집

    Ask 또는 Edit에서 VS Code는 프롬프트에 대한 의도 감지를 수행하여 작업 공간 컨텍스트가 필요한지 여부를 결정합니다. 작업 공간 컨텍스트가 필요한 경우, VS Code는 코드베이스 검색을 수행하고 관련 코드 조각을 채팅 컨텍스트에 추가합니다. 에이전트를 사용하는 것과 달리 후속 검색은 수행되지 않습니다.

    프롬프트에서 #codebase 도구를 명시적으로 참조할 필요는 없지만, 작업 공간 컨텍스트가 질문에 사용되도록 하려면 그렇게 할 수 있습니다. 이는 프롬프트가 모호하여 작업 공간 컨텍스트가 필요하지 않은 것으로 해석될 수 있는 경우 유용합니다.

작업 공간 컨텍스트 사용 팁

질문의 표현 방식은 컨텍스트의 품질과 응답의 정확성에 상당한 영향을 미칠 수 있습니다. 결과를 최적화하기 위해 다음 팁을 고려하십시오.

  • "이것이 무엇을 하는가"와 같은 모호하거나 불분명한 용어를 피하고, "이것"이 마지막 답변, 현재 파일 또는 전체 프로젝트로 해석될 수 있으므로, 질문에 구체적이고 상세하게 설명하십시오.
  • 코드 또는 해당 설명서에 나타날 가능성이 있는 용어와 개념을 프롬프트에 포함시키십시오.
  • 코드를 선택하거나, 파일을 참조하거나, 디버그 컨텍스트, 터미널 출력 등과 같은 #-컨텍스트 항목 멘션을 통해 관련 컨텍스트를 명시적으로 포함하십시오.
  • 응답은 "catch 블록이 없는 예외 찾기" 또는 "handleError가 호출되는 예의 제공"과 같은 여러 참조에서 가져올 수 있습니다. 그러나 "이 함수는 몇 번 호출되나요?" 또는 "이 프로젝트의 모든 버그 수정"과 같이 코드베이스 전체에 대한 포괄적인 코드 분석은 예상하지 마십시오.
  • 코드 외부의 정보("이 파일에 누가 기여했나요?" 또는 "이 폴더의 검토 의견 요약")에 대해 질문할 때는 에이전트를 사용할 때 관련 도구 또는 MCP 서버를 구성했는지 확인하십시오.

비공개 리포지토리

비공개 리포지토리에 대한 더 많은 작업 공간 검색 기능을 사용하려면 추가 권한이 필요합니다. 이러한 권한이 아직 없는 것을 감지하면 시작 시 요청합니다. 일단 부여되면, 세션을 안전하게 저장하여 나중에 사용합니다.

Modal window asking for additional authentication for a private repository.

보안, 개인 정보 보호 및 투명성에 대한 자세한 내용은 GitHub Copilot Trust Center를 참조하십시오.

자주 묻는 질문

@workspace#codebase의 차이점은 무엇인가요?

개념적으로 @workspace#codebase 모두 전체 코드베이스에 대한 질문을 할 수 있도록 합니다. 그러나 사용 방법에 약간의 차이가 있습니다.

  • @workspace채팅 참가자입니다.

    @workspace 참가자는 코드베이스에 대한 질문 답변을 전문으로 하는 주제 전문가입니다. 언어 모델은 전체 채팅 프롬프트를 참가자에게 넘겨주고, 참가자는 코드베이스에 대한 지식을 사용하여 답변을 제공합니다. 언어 모델은 채팅 참가자를 사용할 때 추가 처리나 다른 도구 호출을 수행할 수 없습니다. 채팅 프롬프트는 단일 채팅 참가자만 포함할 수 있습니다.

  • #codebase채팅 도구입니다.

    #codebase 도구는 코드베이스에서 관련 정보를 검색하는 데 특화되어 있습니다. 이는 언어 모델이 채팅 프롬프트에 답변할 때 호출할 수 있는 여러 도구 중 하나입니다. 언어 모델은 질문에 답변하는 데 필요한 정보를 수집하기 위해 #codebase 도구를 여러 번 호출하고 다른 도구와 번갈아 사용할 수 있습니다. 채팅 프롬프트는 여러 도구를 포함할 수 있습니다.

더 많은 유연성을 제공하므로 채팅 프롬프트에서 #codebase를 사용하는 것이 좋습니다.

© . This site is unofficial and not affiliated with Microsoft.