각 토큰에서 더 많이 활용하는 법: Copilot이 컨텍스트 처리와 모델 라우팅을 향상시킨다
출처: GitHub 블로그
Copilot이 계획 및 편집, 디버깅, 검토, 도구 호출 등 더 긴 세션에서 에이전트 작업을 수행하면서 효율성은 단순히 토큰을 적게 사용하는 것 이상으로 의미합니다. 사용 방법을 스마트하게 활용하는 것입니다.
효율성 증가는 Copilot이 턴 간에 반복해야 하는 내용을 줄이는 것으로 시작됩니다. 여기에는 컨텍스트, 도구 정의, 캐시된 상태가 포함됩니다. 이어서 올바른 모델을 선택하는 것이 중요합니다. 빠른 설명, 집중 편집, 복잡한 다 파일 변경은 모두 동일한 방식으로 처리될 필요가 없습니다.
우리는 두 가지 목표를 동시에 진행하고 있습니다: Copilot 하니스 개선을 통해 세션의 더 많은 부분이 실제 작업에 할당되도록 하고, Auto 확장을 통해 Copilot이 개발자가 매번 선택할 필요 없이 해당 작업을 수행할 수 있는 모델을 자동으로 선택하도록 합니다. 이 포스트는 GitHub Copilot for VS Code의 하니스 개선과 Auto가 Copilot 서비스 전반에 걸친 확장 작업에 초점을 맞춥니다.
프롬프트 캐싱 및 도구 로드 지연
더 긴 GitHub Copilot 세션에서 VS Code는 모델을 위한 반복 정보를 많이 준비합니다: 지시문, 저장소 컨텍스트, 대화 기록, 사용 가능한 도구, 현재 작업 상태. 이 중 일부는 필요하고, 일부는 캐시하거나 지연해서 로드할 수 있습니다.
GitHub Copilot for VS Code의 두 가지 개선이 대부분의 작업을 수행합니다. 프롬프트 캐싱은 모델 상태를 반복된 프롬프트 접두리에서 재사용하게 하여 매 요청 시 동일한 접두리를 다시 계산하는 것을 피합니다. 도구 검색을 통해 모델은 필요할 때만 도구 정의를 로드하여, 매 턴에 전체 도구 스키마를 컨텍스트에 전송하는 대신 사용할 수 있습니다.
이 점이 중요해지는 이유는 에이전트가 더 많은 도구를 사용하기 때문입니다. 세션에서는 MCP 도구, 터미널 명령, 파일 작업, 워크스페이스 검색, 제품별 작업을 필요로 할 수 있습니다. 모든 도구 정의를 사전에 로드하면 매 턴에 고정 비용이 발생하며, 실제 필요한 도구가 몇 개인지와 무관합니다. 도구 검색을 사용하면 Copilot은 넓은 도구 집합을 유지하면서 불필요한 도구 스키마를 모델에 전송할 수 있어 효율성이 향상됩니다.
보다 기술적인 구현 세부 사항을 원하시면 프롬프트 캐싱, 캐시 제어 브레이크포인트, 제공업체별 도구 검색, 그리고 이러한 변경이 장시간 에이전트 세션에서 어떻게 작동하는지 확인해 보세요. VS Code 기술 심층 분석.
GitHub Copilot 자동 모델 선택 위치
Auto는 실용적인 질문을 답합니다: 지금 이 작업에 가장 적합한 모델은 무엇인가요?
첫 번째 프롬프트 이후, Copilot은 작업 의도와 현재 모델 상태를 활용해 가장 알맞은 모델을 선택합니다. 빠른 설명, 집중 편집, 다 파일 변경과 같은 다양한 작업 유형은 동일한 수준의 추론에서 이점을 보지 못하므로 Auto는 모델 설정을 조정하지 않고 자동으로 판단합니다.
우리의 평가에서는 단일 모델이 모든 작업을 일관되게 가장 잘 수행하지 않았습니다. 많은 경우 더 효율적인 모델이 동일 결과를 얻었고, 강력한 모델은 작업에 깊은 추론이 필요할 때 가장 큰 차이를 만들었습니다. Auto는 더 강한 추론이 결과를 개선하는 영역을 학습하고, 작업 요구가 있을 때는 상향 라우팅하며, 그렇지 않을 때는 보다 효율적으로 작동합니다. 목표는 품질을 비용과 교환하는 것이 아니라 작업을 가장 잘 맞는 모델을 사용하는 것입니다.
Auto가 올바른 모델을 선택하는 방법
Auto는 두 가지 신호를 결합합니다: 현재 건강하고 가용한 모델, 그리고 Copilot이 수행하도록 요청받은 작업 유형.
-
실시간 모델 건강: 동적 엔진은 모델 가용성, 사용량, 속도, 오류율, 비용을 추적합니다. 모델이 작업을 수행할 수 있음에도 불구하고 가장 적합한 선택일とは 보장되지 않습니다. Auto는 현재 시스템 상태를 고려해 Copilot가 capability와 준비성이 모두 갖춘 모델로 라우팅하도록 합니다.
-
작업 인식 라우팅 HyDRA: 추론 깊이, 코드 복잡도, 디버깅 난이도, 도구 조율 필요성 등 요소를 고려한 라우팅 모델입니다. HyDRA는 작업에 필요한 품질 기준을 충족할 수 있는 모델을 찾은 뒤 가장 알맞은 모델을 선택합니다.
이러한 신호들을 통해 Auto는 일괄적 접근법을 피할 수 있습니다. 가장 큰 모델이나 가장 저렴한 모델에게 모든 작업을 맡기는 것이 아니라, 작업에 맞는 모델을 선택하는 것이 목표입니다.
Auto를 실제에 적용하기
평가에서 라우팅을 정확히 하는 것은 문제의 일부일 뿐입니다. Auto를 실제 워크플로에 유용하게 만들기 위해 우리는 개발자가 Copilot을 실제로 어떻게 사용하는지 고려해야 했습니다: 대화가 길어지고, 컨텍스트가 쌓이며, 작업이 전환되고, 다양한 언어로 작업합니다.
캐시 인식 라우팅. 매 턴마다 모델을 바꾸는 것이 유연해 보일 수 있지만 효율성을 해칠 수 있습니다. 대화가 동일한 모델에서 진행될 경우 프롬프트 접두리는 캐시되어 턴 간에 재사용될 수 있습니다. 중간Conversation에서 모델을 바꾸면 캐시가 깨져 라우팅 변경이 가져오는 절감 효과보다 더 큰 비용이 발생할 수 있습니다. Auto는 자연스러운 캐시 경계를 기준으로 라우팅합니다: 첫 번째 턴(캐시가 없을 때)과 compaction 후(older turns를 요약하고 프롬프트 접두리가 리셋될 때)입니다. 이 두 지점 사이에서는 선택된 모델이 유지되어 캐시가 계속 구축될 수 있습니다.
다중 언어 라우팅. Copilot은 전 세계 개발자를 대상으로 하므로 영어以外의 언어도 지원해야 합니다. 우리는 CJK, 유럽어 등 16개 언어 파밀리에서 대화 데이터를 활용해 라우팅 모델을 훈련했습니다. 평가에서는 라우팅 정확도가 언어별로 영문 기준 대비 4포인트 이내에 유지되었으며, 품질 격차도 통계적으로 유의하지 않았습니다.
확장 시점 학습. escalation이 언제 중요한지를 파악하는 것입니다. 단순히 “쉽다” 혹은 “어려워” 라벨에 의존하는 대신, 라우터는 모델 간 실제 차이를 학습하도록 trein했습니다. 각 훈련 문의에서 덜 Capable한 모델과 더 Capable한 모델의 응답을 품질 차원별로 점수화합니다. 라우터는 더 강한 모델이 가치를 제공하는 시점과, 보다 효율적인 모델이 동등한 결과를 낼 수 있는 시점을 학습합니다. 장시간 에이전트 세션에서 컨텍스트 의존 메시지는 전체 멀티 턴 대화를 기반으로 훈련되며, 이는 원본 사용자 의도, 최근 보조 응답 및 대화 메타 정보를 포함합니다.