Skip to main content

GitHub Copilot CLI에서 컨텍스트 관리

대화 컨텍스트 Copilot를 어떻게 관리하고, 긴 세션 동안 어떤 일이 발생하며, 컨텍스트 창을 효과적으로 제어하는 방법을 이해합니다.

컨텍스트 창 정보

사용하는 GitHub Copilot CLI경우, 보내는 모든 메시지, 모든 Copilot응답, 모든 도구 호출 및 결과 및 '의 동작을 정의하는 Copilot시스템 지침은 모두 컨텍스트 창에 보관됩니다. 컨텍스트 창은 AI 모델이 응답을 생성할 때 한 번에 고려할 수 있는 총 정보 양입니다.

컨텍스트 창에는 모델에 따라 달라지는 토큰으로 측정되는 고정 크기가 있습니다. 토큰은 일반적으로 짧고 일반적으로 사용되는 단어와 다중 음절 단어의 조각으로 구성됩니다. 대화가 진행됨에 따라 컨텍스트 창은 다음으로 채워집니다.

  •         **시스템 지침 및 도구 정의**: 동작 방법을 알려주 Copilot 는 기본 제공 지침과 사용 가능한 모든 도구의 스키마. 이러한 항목은 항상 존재하며 컨텍스트 창의 고정된 부분을 차지합니다.
    
  •         **메시지**: 보내는 모든 프롬프트입니다.
    
  •         **
            Copilot'의 응답**: Copilot이/가 당신에게 다시 하는 말.
    
  •         **도구 호출 및 결과**: 파일을 읽거나 명령을 실행하거나 코드베이스를 검색할 때 Copilot 요청과 출력이 모두 컨텍스트에 추가됩니다. 도구 결과는 특히 클 수 있습니다. 예를 들어 도구가 긴 파일을 읽거나 광범위한 출력을 생성하는 명령을 실행하는 경우입니다.
    

이 모든 것이 컨텍스트 창에 누적됩니다. 긴 세션이나 복잡한 세션에서 컨텍스트 창이 채워지도록 할 수 있습니다.

컨텍스트 창이 중요한 이유

컨텍스트 창은 대화의 "메모리"를 제공합니다 Copilot . Copilot는 응답할 때 컨텍스트 창 내의 모든 항목을 참조할 수 있습니다.

즉, Copilot 매우 긴 세션에서 전체 대화 기록을 한 번에 보유하지 못할 수 있습니다. Copilot CLI 따라서 필요한 기간 동안 대화를 Copilot 계속할 수 있는 컨텍스트 관리 기능이 있습니다.

컨텍스트 사용량 확인

슬래시 명령을 입력 /context 하여 현재 사용 중인 컨텍스트 창의 양을 확인할 수 있습니다. 그러면 토큰 사용량에 대한 시각적 분석이 표시되며 다음을 보여 줍니다.

  •         **시스템/도구**: 시스템 명령 및 도구 정의의 고정 오버헤드입니다.
    
  •         **메시지**: 대화 기록에 사용되는 공간입니다.
    
  •         **여유 공간**: 새 메시지의 남은 공간입니다.
    
  •         **버퍼**: 자동 컨텍스트 관리를 트리거하는 예약된 부분입니다.
    

'/context' CLI 명령의 출력 스크린샷.

다음과 같은 경우 /context 슬래시 명령을 사용할 수 있습니다.

  • 긴 세션을 진행 중이며 남은 공간을 알고 싶습니다.
  •         Copilot 대화의 이전 부분을 잊어 버린 것 같습니다.
    
  • 압축이 발생했는지 또는 곧 발생할 가능성이 있는지 이해하려고 합니다.

압축

압축은 컨텍스트 창의 제한에 도달하지 않고 장기 실행 세션을 지원할 수 있는 GitHub Copilot CLI 프로세스입니다.

압축이 발생하는 경우

대화가 컨텍스트 창 용량 Copilot CLI 의 약 80% 도달하면 자동으로 백그라운드에서 컨텍스트 압축을 시작합니다. 압축이 진행되는 동안 도구 호출이 계속 실행되도록 약 20개% 버퍼를 남깁니다. 압축이 완료 Copilot CLI 되기 전에 컨텍스트가 약 95% 채워지면 잠시 일시 중지하여 압축이 완료되기를 기다렸다가 계속합니다.

          `/compact` 명령어를 입력하여 언제든지 수동으로 압축을 트리거할 수도 있습니다. 이는 새로운 작업 단계를 시작하려는 경우 컨텍스트 공간을 사전에 확보하려는 경우에 유용합니다. 마음이 바뀌면 <kbd>Esc</kbd> 키를 눌러 수동 압축을 취소합니다.

압축이 수행하는 기능

압축이 실행되면 다음을 Copilot CLI수행합니다.

  1. 현재 대화 기록의 스냅샷을 만듭니다.
  2. 구조화된 요약을 생성하도록 요청하는 특별한 프롬프트를 사용하여 AI 모델에 전체 대화를 보냅니다. 요약은 대화의 목표, 수행된 작업, 주요 기술 세부 정보, 중요한 파일 및 계획된 다음 단계를 캡처합니다.
  3. 이전 대화 기록을 원래 사용자 지침 및 계획 또는 to-do 목록의 현재 상태와 함께 요약으로 바꿉니다.
  4. 압축이 백그라운드에서 실행되는 동안 추가된 모든 메시지를 유지합니다.

그 결과 대화 기록이 훨씬 더 작은 요약으로 압축되어 새 작업에 대한 대부분의 컨텍스트 창이 확보됩니다. Copilot 에서는 원본 메시지가 대체되었더라도 이 요약을 사용하여 연속성을 유지합니다. 이 요약은 설명된 내용, 결정된 내용 및 다음에 수행할 작업을 알고 있습니다.

압축이 보존하지 않는 것

압축은 요약 프로세스이므로 일부 세부 정보는 필연적으로 손실됩니다. 요약은 핵심 사항을 캡처하지만, 모든 메시지의 정확한 표현, 모든 명령의 전체 출력 또는 긴 대화 초기에 내려진 사소한 결정과 같은 세분화된 세부 정보는 포함되지 않을 수 있습니다. 세션의 앞부분에서 매우 구체적인 세부 정보를 기억해야 하는 Copilot 경우 압축 후 해당 정보가 없을 수 있습니다.

압축 없이 어떤 일이 일어날까요?

압축이 없으면 컨텍스트 창이 가득 차면 Copilot 이전 메시지를 단순히 삭제하여 요약이나 기록 없이 제거하게 됩니다. 이로 인해 Copilot가 삭제된 메시지에 어떤 내용이 있었는지 알 수 없게 되어, 컨텍스트가 갑자기 손실됩니다. 압축은 기록을 삭제하지 않고 지능형 요약으로 바꿔서 이를 방지합니다.

Checkpoints

자동으로 또는 수동으로 압축이 발생할 때마다 검사점 이 만들어집니다. 검사점은 압축 요약의 저장된 복사본으로, 세션의 작업 영역에 번호가 매겨진 파일로 저장됩니다.

검사점 보기

현재 세션의 모든 검사점을 보려면 다음을 입력합니다.

Copilot prompt
/session checkpoints

그러면 모든 검사점의 번호와 제목이 나열됩니다.

Checkpoint History (3 total):
  3. Refactoring authentication module
  2. Implementing user dashboard
  1. Initial planning and setup

검사점 번호를 사용하여 검사점의 전체 콘텐츠를 볼 수 있습니다. 예를 들어 검사점 2를 보려면 다음을 입력합니다.

Copilot prompt
/session checkpoints 2

검사점이 유용한 경우

  •         **진행 상황 검토**: 여러 압축이 포함된 긴 세션 후에는 대화의 이전 단계가 더 이상 활성 컨텍스트에 있지 않습니다. 검사점을 사용하면 Copilot가 각 압축 시점에서 수행한 작업을 다시 확인할 수 있습니다.
    
  •         **연속성 확인**: 계속하기 전에 이전 작업을 정확하게 캡처한 요약을 확인 Copilot하려면 가장 최근의 검사점을 검토할 수 있습니다.
    
  •         **혼동 디버깅**: 결정을 잊어버렸거나 이전 작업과 모순되는 방향으로 진행 중인 경우 검사점을 확인하면 Copilot 압축 중에 보존된 내용과 예상과 다르게 요약된 내용이 표시될 수 있습니다.
    

참고

  • 검사점은 자동으로 만들어집니다. 관리를 하지 않아도 됩니다. 필요할 때 이용 가능합니다. 대부분의 세션에서는 검사점을 전혀 볼 필요가 없습니다.
  • 압축이 완료되면 되돌릴 수 없습니다.

장기 실행 세션 사용

자동 압축을 사용하면 컨텍스트 창의 제한에 도달할 염려 없이 장기 실행 세션에서 작업을 계속할 수 있습니다. 이 방법이 매우 유용한 경우도 있고, 새 세션을 시작하는 것을 선호할 수도 있는 경우도 있습니다.

긴 세션이 유용한 경우

장기 실행 세션은 다음과 같은 경우에 잘 작동합니다.

  • 스캐폴딩, 구현, 테스트 및 끌어오기 요청이 필요한 기능을 빌드하는 것과 같은 다단계 작업을 수행하고 있습니다.
  • 문제를 반복하고 있으며 시도된 내용과 작동하지 않은 항목의 컨텍스트를 유지하려고 Copilot 합니다.
  • 코드베이스 전반에 걸쳐 탐색 작업을 수행하고 있으며, 시간이 지남에 따라 Copilot와 함께 공동의 이해를 구축하고 있습니다.

새 세션을 시작하는 경우

다음과 같은 경우 새 세션을 시작하는 것이 좋습니다.

  • 관련 없는 작업으로 전환하고 있습니다. Copilot 에서는 이전 작업의 컨텍스트가 필요하지 않으며, 정리된 컨텍스트 창은 새 작업을 위한 더 많은 공간을 의미합니다.
  • 대화는 많은 압축을 거쳤으며 요약 프로세스에서 중요한 컨텍스트가 손실되고 있다고 느낍니다.
  • 예를 들어 작업이 잘못된 방향으로 진행되어 이전의 결정을 새 접근 방식으로 조정하는 것보다 Copilot 다시 시작하는 경우처럼 깨끗한 슬레이트를 원합니다.

명령을 사용하여 /resume 언제든지 이전 세션을 다시 시작할 수 있습니다. 이렇게 하면 해당 세션 중에 생성된 검사점을 포함하여 이어서 진행할 수 있습니다.

추가 읽기

  •         [AUTOTITLE](/copilot/how-tos/copilot-cli)
    
  •         [AUTOTITLE](/copilot/how-tos/use-copilot-agents/use-copilot-cli)
    
  •         [AUTOTITLE](/copilot/reference/copilot-cli-reference/cli-command-reference)