컨텍스트 창 정보
사용하는 GitHub Copilot경우, 보내는 모든 메시지, 모든 Copilot응답, 모든 도구 호출 및 결과 및 '의 동작을 정의하는 Copilot시스템 지침은 모두 컨텍스트 창에 보관됩니다. 컨텍스트 창은 AI 모델이 응답을 생성할 때 한 번에 고려할 수 있는 총 정보 양입니다.
컨텍스트 창에는 모델에 따라 달라지는 토큰으로 측정되는 고정 크기가 있습니다. 토큰은 일반적으로 짧고 일반적으로 사용되는 단어와 다중 음절 단어의 조각으로 구성됩니다. 대화가 진행됨에 따라 컨텍스트 창은 다음으로 채워집니다.
- 시스템 지침 및 도구 정의: 동작 방법을 알려주 Copilot 는 기본 제공 지침과 사용 가능한 모든 도구의 스키마. 이러한 항목은 항상 존재하며 컨텍스트 창의 고정된 부분을 차지합니다.
- 메시지: 보내는 모든 프롬프트입니다.
- Copilot'의 응답: Copilot이/가 당신에게 다시 하는 말.
- 도구 호출 및 결과: 파일을 읽거나 명령을 실행하거나 코드베이스를 검색할 때 Copilot 요청과 출력이 모두 컨텍스트에 추가됩니다. 도구 결과는 특히 클 수 있습니다. 예를 들어 도구가 긴 파일을 읽거나 광범위한 출력을 생성하는 명령을 실행하는 경우입니다.
이 모든 것이 컨텍스트 창에 누적됩니다. 긴 세션이나 복잡한 세션에서 컨텍스트 창이 채워지도록 할 수 있습니다.
컨텍스트 창이 중요한 이유
컨텍스트 창은 Copilot가 프롬프트에 어떻게 응답할지 결정할 때 대화의 이전 부분을 고려할 수 있게 해 주는 것입니다. 컨텍스트 창 내의 모든 항목은 Copilot가 작업을 수행할 때 참조할 수 있습니다.
즉, Copilot 매우 긴 세션에서 전체 대화 기록을 한 번에 보유하지 못할 수 있습니다. Copilot 따라서 필요한 기간 동안 대화를 계속할 수 있는 컨텍스트 관리 기능이 있습니다.
컨텍스트 사용량 확인
컨텍스트 사용에 대한 컨트롤은 클라이언트 및 환경에 따라 다릅니다. 다음은 그 예입니다.
- Copilot CLI 및 GitHub Copilot app에서 현재 세션의 사용량을 확인하려면
/context를 사용합니다. - 지원되는 IDE에서 채팅 입력 영역 내 또는 아래에 Copilot 있는 컨텍스트 창 표시기를 찾으세요. 예를 들어, Visual Studio Code에서 표시기는 작은 원입니다. 일부 다른 IDE에서는 사용량이 Copilot Extension에서 제공하는 세션 정보 대화 상자에 표시됩니다.
다음과 같은 경우에는 컨텍스트 사용량을 확인해 보는 것이 좋습니다:
- 긴 세션을 진행 중이며 남은 공간을 알고 싶습니다.
- Copilot 대화의 이전 부분을 잊어 버린 것 같습니다.
- 압축이 발생했는지 또는 곧 발생할 가능성이 있는지 이해하려고 합니다. 압축을 참조하세요.
컨텍스트 윈도우 관리
사용량을 모니터링하고, 이전 메시지를 압축하고, 큰 도구 출력을 제어하여 컨텍스트 창을 관리할 수 있습니다.
참고
사용 가능한 컨트롤은 클라이언트와 표면마다 다릅니다.
사용 가능한 명령 및 설정을 통해 컨텍스트 창을 효과적으로 관리할 수 없는 경우 대화를 더 작은 세션으로 나누거나 Copilot에 도구 출력을 자르거나 요약하도록 요청하여 도구 출력의 크기를 줄이는 등의 대체 전략을 고려해야 할 수 있습니다. Copilot 또한 주 에이전트와는 별도로 컨텍스트 창이 있는 하위 에이전트에게 작업을 위임할 수 있습니다. 이렇게 하면 주 에이전트의 컨텍스트에 초점을 맞추는 데 도움이 될 수 있습니다.
/context 명령을 사용한 컨텍스트 사용
일부 환경에서는 /context 슬래시 명령을 사용하여 현재 컨텍스트 창 사용량을 시각화할 수 있습니다. 출력의 첫 번째 줄은 현재 모델의 총 컨텍스트 창 용량에서 현재 사용 중인 토큰 수와 활성 모델을 보여 줍니다. 출력의 나머지 부분에서는 토큰 사용량 및 컨텍스트 창 백분율을 보여 줍니다.
- 시스템 프롬프트: 기본 시스템 프롬프트입니다.
- 사용자 지정 지침: 로드된 사용자 지정 지침(있는 경우에만 표시됨).
- 시스템 도구: 기본 제공 도구 정의입니다.
- MCP 도구: MCP 서버에서 제공하는 도구 정의입니다.
- 메시지: 대화 기록.
- 사용 가능한 공간: 사용되지 않는 컨텍스트를 계속 사용할 수 있습니다.
- 버퍼: 모델의 응답 및 헤드룸용으로 예약된 용량입니다.
대용량 도구 출력 관리 Copilot CLI
단일 도구 응답이 컨텍스트 창을 너무 많이 사용하지 않도록 하려면 기본적으로 20KiB보다 큰 도구 출력이 임시 파일에 저장됩니다. 모델은 전체 출력 대신 파일 경로와 미리 보기를 받습니다. 이는 MCP 서버에서 제공하는 도구를 포함하여 모든 도구에 적용됩니다.
제한을 변경하려면 CLI를 시작하기 전에 COPILOT_LARGE_OUTPUT_THRESHOLD_BYTES를 양의 UTF-8 바이트 수로 설정합니다. 제한을 늘리면 대화 및 후속 도구 호출에 사용할 수 있는 컨텍스트가 줄어듭니다.
압축
압축은 컨텍스트 창의 제한에 도달하지 않고 장기 실행 세션을 지원할 수 있는 Copilot 프로세스입니다.
압축에 대한 가용성, 동작 및 컨트롤은 클라이언트 및 표면에 따라 다릅니다. 다음은 그 예입니다.
- Copilot CLI 및 GitHub Copilot app에서 압축이 자동으로 수행되거나
/compact로 트리거할 수 있습니다. - JetBrains IDEs 및 Visual Studio Code에서 Copilot Extension를 사용하여 세션을 수동으로 압축할 수 있습니다.
압축이 발생하는 경우
압축에 대한 정확한 임계값 및 동작은 클라이언트 및 해당 구성에 따라 달라집니다.
Copilot CLI의 경우, 대화가 컨텍스트 창의 용량 Copilot CLI 약 80%에 도달하면 자동으로 백그라운드에서 컨텍스트 압축을 시작합니다. 압축이 진행되는 동안 도구 호출이 계속 실행되도록 약 20개% 버퍼를 남깁니다. 압축이 완료 Copilot CLI 되기 전에 컨텍스트가 약 95% 채워지면 잠시 일시 중지하여 압축이 완료되기를 기다렸다가 계속합니다.
Copilot CLI 및 GitHub Copilot app에서 /compact 명령을 입력하여 언제든지 수동으로 압축을 트리거할 수 있습니다. 이는 새로운 작업 단계를 시작하려는 경우 컨텍스트 공간을 사전에 확보하려는 경우에 유용합니다. 마음이 바뀌면 Esc 키를 눌러 수동 압축을 취소합니다.
컴팩션이 발생하는 위치
압축은 Xcode IDE에서는 사용할 수 없지만, GitHub Copilot app, Copilot cloud agent, Visual Studio Code, Visual Studio, JetBrains IDEs, Copilot CLI 지원되는 대부분의 클라이언트와 Eclipse에서는 사용할 수 있습니다.
압축이 수행하는 기능
압축이 실행되면 다음을 Copilot수행합니다.
- 현재 대화 기록의 스냅샷을 만듭니다.
- 구조화된 요약을 생성하도록 요청하는 특별한 프롬프트를 사용하여 AI 모델에 전체 대화를 보냅니다. 요약은 대화의 목표, 수행된 작업, 주요 기술 세부 정보, 중요한 파일 및 계획된 다음 단계를 캡처합니다.
- 이전 대화 기록을 원래 사용자 지침 및 계획 또는 to-do 목록의 현재 상태와 함께 요약으로 바꿉니다.
- 압축이 백그라운드에서 실행되는 동안 추가된 모든 메시지를 유지합니다.
그 결과 대화 기록이 훨씬 더 작은 요약으로 압축되어 새 작업에 대한 대부분의 컨텍스트 창이 확보됩니다. Copilot 에서는 원본 메시지가 대체되었더라도 이 요약을 사용하여 연속성을 유지합니다. 이 요약은 설명된 내용, 결정된 내용 및 다음에 수행할 작업을 알고 있습니다.
압축이 보존하지 않는 것
압축은 요약 프로세스이므로 일부 세부 정보는 필연적으로 손실됩니다. 요약은 핵심 사항을 캡처하지만, 모든 메시지의 정확한 표현, 모든 명령의 전체 출력 또는 긴 대화 초기에 내려진 사소한 결정과 같은 세분화된 세부 정보는 포함되지 않을 수 있습니다. 세션의 앞부분에서 매우 구체적인 세부 정보를 기억해야 하는 Copilot 경우 압축 후 해당 정보가 없을 수 있습니다.
완성된 압축은 되돌릴 수 없습니다.
압축 없이 어떤 일이 일어날까요?
압축이 없으면 컨텍스트 창이 가득 차면 Copilot 이전 메시지를 단순히 삭제하여 요약이나 기록 없이 제거하게 됩니다. 이로 인해 Copilot가 삭제된 메시지에 어떤 내용이 있었는지 알 수 없게 되어, 컨텍스트가 갑자기 손실됩니다. 압축은 기록을 삭제하지 않고 지능형 요약으로 바꿔서 이를 방지합니다.
Checkpoints
체크포인트는 압축으로 생성된 저장된 요약, 파일 편집을 위한 복원 지점 및/또는 대화를 포크할 수 있는 지점일 수 있습니다. 이러한 기능은 고유한 기능이며, 가용성 및 작업은 클라이언트와 플랫폼에 따라 다릅니다.
이 문서의 나머지 부분 전체에서 체크포인트은 저장된 컴팩션 요약(예: Copilot CLI에서 생성된 번호와 제목이 있는 파일)을 참조합니다.
검사점이 유용한 경우
- 진행 상황 검토: 여러 압축이 포함된 긴 세션 후에는 대화의 이전 단계가 더 이상 활성 컨텍스트에 있지 않습니다. 검사점을 사용하면 Copilot가 각 압축 시점에서 수행한 작업을 다시 확인할 수 있습니다.
- 연속성 확인: 계속하기 전에 이전 작업을 정확하게 캡처한 요약을 확인 Copilot하려면 가장 최근의 검사점을 검토할 수 있습니다.
- 혼동 디버깅: 결정을 잊어버렸거나 이전 작업과 모순되는 방향으로 진행 중인 경우 검사점을 확인하면 Copilot 압축 중에 보존된 내용과 예상과 다르게 요약된 내용이 표시될 수 있습니다.
참고
Copilot CLI를 비롯한 대부분의 클라이언트에서는 검사점 요약이 자동으로 만들어집니다. 관리를 하지 않아도 됩니다. 필요할 때 이용 가능합니다. 대부분의 세션에서는 검사점을 전혀 볼 필요가 없습니다.
Copilot CLI에 대한 검사점 보기
현재 세션의 모든 검사점을 보려면 다음을 입력합니다.
/session checkpoints
/session checkpoints
그러면 모든 검사점의 번호와 제목이 나열됩니다.
Checkpoint History (3 total):
3. Refactoring authentication module
2. Implementing user dashboard
1. Initial planning and setup
검사점 번호를 사용하여 검사점의 전체 콘텐츠를 볼 수 있습니다. 예를 들어 검사점 2를 보려면 다음을 입력합니다.
/session checkpoints 2
/session checkpoints 2
장기 실행 세션 사용
자동 압축을 사용하면 컨텍스트 창의 제한에 도달할 염려 없이 장기 실행 세션에서 작업을 계속할 수 있습니다. 이 방법이 매우 유용한 경우도 있고, 새 세션을 시작하는 것을 선호할 수도 있는 경우도 있습니다.
긴 세션이 유용한 경우
장기 실행 세션은 다음과 같은 경우에 잘 작동합니다.
- 스캐폴딩, 구현, 테스트 및 끌어오기 요청이 필요한 기능을 빌드하는 것과 같은 다단계 작업을 수행하고 있습니다.
- 문제를 반복하고 있으며 시도된 내용과 작동하지 않은 항목의 컨텍스트를 유지하려고 Copilot 합니다.
- 코드베이스 전반에 걸쳐 탐색 작업을 수행하고 있으며, 시간이 지남에 따라 Copilot와 함께 공동의 이해를 구축하고 있습니다.
새 세션을 시작하는 경우
다음과 같은 경우 새 세션을 시작하는 것이 좋습니다.
- 관련 없는 작업으로 전환하고 있습니다. Copilot 에서는 이전 작업의 컨텍스트가 필요하지 않으며, 정리된 컨텍스트 창은 새 작업을 위한 더 많은 공간을 의미합니다.
- 대화는 많은 압축을 거쳤으며 요약 프로세스에서 중요한 컨텍스트가 손실되고 있다고 느낍니다.
- 예를 들어 작업이 잘못된 방향으로 진행되어 이전의 결정을 새 접근 방식으로 조정하는 것보다 Copilot 다시 시작하는 경우처럼 깨끗한 슬레이트를 원합니다.
일부 클라이언트 및 화면에서는 다시 시작하는 대신 기존 대화 컨텍스트를 계속 진행하기 위해 이전 세션을 다시 이어서 진행할 수 있습니다. 다시 시작 방법 및 검사점 가용성은 클라이언트 및 환경에 따라 다릅니다.