동적 컨텍스트 디스커버리

TMT

https://cursor.com/blog/dynamic-context-discovery

소프트웨어가 만들어지는 방식은 코딩 에이전트에 의해 빠르게 변화하고 있습니다. 이들의 급속한 발전은 에이전틱 모델의 개선과, 에이전트를 유도하기 위한 더 나은 컨텍스트 엔지니어링에서 비롯됩니다.

Cursor의 에이전트 하니스(모델에 제공하는 지시사항과 도구)는 우리가 지원하는 모든 최신 프런티어 모델마다 개별 최적화되어 있습니다. 다만, 컨텍스트를 수집하고 긴 작업 경로에서 토큰 사용을 최적화하는 방식처럼, 하니스 내부의 모든 모델에 공통으로 적용할 수 있는 컨텍스트 엔지니어링 개선이 존재합니다.

모델이 에이전트로서 더 발전함에 따라, 우리는 초반에 더 적은 세부 정보를 제공해 에이전트가 스스로 관련 컨텍스트를 끌어오도록 하는 방식으로 성과를 내고 있습니다. 우리는 이 패턴을 **동적 컨텍스트 디스커버리(dynamic context discovery)**라고 부르며, 항상 포함되는 *정적 컨텍스트(static context)*와 대비됩니다.

동적 컨텍스트 디스커버리를 위한 파일들

동적 컨텍스트 디스커버리는 컨텍스트 윈도우에 필요한 데이터만 끌어오기 때문에 토큰 효율이 훨씬 높습니다. 또한 컨텍스트 윈도우 내 잠재적으로 혼란스럽거나 상충되는 정보를 줄여 에이전트의 응답 품질을 개선할 수도 있습니다.

다음은 우리가 Cursor에서 동적 컨텍스트 디스커버리를 사용한 방법입니다:

  1. 긴 도구 응답을 파일로 변환하기
  2. 요약 시 채팅 기록을 참조하기
  3. Agent Skills 오픈 표준 지원
  4. 필요한 MCP 도구만 효율적으로 로드하기
  5. 모든 통합 터미널 세션을 파일로 취급하기
  6. 긴 도구 응답을 파일로 변환하기

1. 도구 호출은 큰 JSON 응답을 반환함으로써 컨텍스트 윈도우를 급격히 증가시킬 수 있습니다.

Cursor의 1차 도구(파일 편집, 코드베이스 검색 등)에 대해서는 지능적인 도구 정의와 최소 응답 포맷으로 컨텍스트 팽창을 방지할 수 있지만, 서드파티 도구(예: 셸 명령 또는 MCP 호출)에는 이러한 처리가 기본적으로 적용되지 않습니다.

코딩 에이전트가 일반적으로 사용하는 접근법은 긴 셸 명령 또는 MCP 결과를 잘라내는 것입니다. 이는 컨텍스트에 포함하고자 했던 중요한 정보를 잃을 수 있습니다. Cursor에서는 대신 출력을 파일로 기록하고, 에이전트가 이를 읽을 수 있도록 합니다. 에이전트는 필요한 경우 끝부분을 확인하기 위해 tail⁠을 호출하고, 더 필요하면 계속 읽을 수 있습니다.

이로써 컨텍스트 한계에 도달했을 때 불필요한 요약이 줄어들었습니다.

2. 요약 시 채팅 기록을 참조하기

모델의 컨텍스트 윈도우가 가득 차면, Cursor는 에이전트에게 지금까지의 작업을 요약한 새 컨텍스트 윈도우를 제공하기 위해 요약 단계를 트리거합니다.

하지만 요약은 컨텍스트의 손실 압축이기 때문에, 에이전트의 지식이 저하될 수 있습니다. 에이전트는 자신의 작업에 대한 중요한 세부 정보를 잊을 수 있습니다. Cursor에서는 요약의 품질을 높이기 위해 채팅 기록을 파일로 사용합니다.

Image

컨텍스트 윈도우 한계에 도달하거나 사용자가 수동으로 요약을 결정한 후, 우리는 에이전트에게 기록 파일에 대한 참조를 제공합니다. 에이전트가 요약에 누락된 추가 상세가 필요하다고 판단하면, 기록을 검색해 이를 복원할 수 있습니다.

3. Agent Skills 오픈 표준 지원

Cursor는 코딩 에이전트를 특수한 역량으로 확장하는 오픈 표준인 Agent Skills를 지원합니다. 다른 유형의 Rules와 유사하게, Skill은 에이전트가 도메인별 작업을 수행하는 방법을 알려주는 파일로 정의됩니다.

Skill에는 이름과 설명도 포함되어 있으며, 이는 시스템 프롬프트의 “정적 컨텍스트”로 포함될 수 있습니다. 에이전트는 그런 다음 grep과 Cursor의 semantic search 같은 도구를 사용해 관련 스킬을 끌어오는 동적 컨텍스트 디스커버리를 수행할 수 있습니다.

Skill은 작업과 관련된 실행 파일이나 스크립트를 함께 묶을 수도 있습니다. 파일 형태이기 때문에, 에이전트는 특정 스킬에 관련된 것을 쉽게 찾을 수 있습니다.

4. 필요한 MCP 도구만 효율적으로 로드하기

MCP는 OAuth 뒤에 있는 보안 리소스에 접근하는 데 유용합니다. 예를 들어, 프로덕션 로그, 외부 디자인 파일, 또는 엔터프라이즈의 내부 컨텍스트 및 문서 등이 해당됩니다.

일부 MCP 서버는 긴 설명을 가진 많은 도구를 포함하며, 이는 컨텍스트 윈도우를 상당히 팽창시킬 수 있습니다. 이러한 도구의 대부분은 프롬프트에 항상 포함되지만 실제로는 사용되지 않습니다. 여러 MCP 서버를 사용하는 경우 이 문제는 더 커집니다.

모든 MCP 서버가 이를 최적화할 것으로 기대하는 것은 현실적이지 않습니다. 우리는 컨텍스트 사용을 줄이는 책임이 코딩 에이전트에 있다고 믿습니다. Cursor에서는 도구 설명을 폴더로 동기화함으로써 MCP에 대한 동적 컨텍스트 디스커버리를 지원합니다.

이제 에이전트는 도구 이름을 포함한 작은 양의 정적 컨텍스트만 받으며, 작업에 필요할 때 도구를 조회하도록 유도됩니다. A/B 테스트에서 MCP 도구를 호출한 실행에서는 이 전략이 총 에이전트 토큰을 46.9% 감소시켰습니다(통계적으로 유의하며, 설치된 MCP 수에 따라 분산이 큼).

Image

이 파일 기반 접근법은 에이전트에게 MCP 도구의 상태를 전달할 수 있는 능력도 제공합니다. 예를 들어, 이전에는 MCP 서버가 재인증이 필요할 때 에이전트가 해당 도구를 완전히 잊어버려 사용자가 혼란스러웠습니다. 이제 에이전트는 사전에 재인증을 안내할 수 있습니다.

5. 모든 통합 터미널 세션을 파일로 취급하기

에이전트 입력에 터미널 세션의 출력을 복사/붙여넣기할 필요 없이, Cursor는 이제 통합 터미널 출력을 로컬 파일시스템에 동기화합니다.

이를 통해 “왜 내 명령이 실패했지?”라고 묻기 쉬워지고, 에이전트가 사용자가 참조하는 내용을 이해할 수 있습니다. 터미널 기록이 길 수 있으므로, 에이전트는 관련 출력만 grep할 수 있으며, 서버 같은 장기 실행 프로세스의 로그에 유용합니다.

이는 CLI 기반 코딩 에이전트가 이전 셸 출력을 컨텍스트로 보는 방식을 반영하지만, 정적으로 주입되는 대신 동적으로 발견됩니다.

간단한 추상화

파일이 LLM 기반 도구의 최종 인터페이스가 될지는 확실하지 않습니다.

하지만 코딩 에이전트가 빠르게 개선되는 지금, 파일은 단순하면서도 강력한 프리미티브였고, 미래를 완전히 고려하지 못하는 또 다른 추상화보다 더 안전한 선택이었습니다. 이 분야에서 더 흥미로운 작업을 곧 많이 공유할 예정이니 계속 지켜봐 주세요.

이러한 개선사항은 향후 몇 주 내 모든 사용자에게 적용됩니다. 이 블로그 게시물에서 설명된 기술은 Lukas Moller, Yash Gaitonde, Wilson Lin, Jason Ma, Devang Jhabakh, Jediah Katz를 포함한 많은 Cursor 직원들의 작업 결과입니다.

Edit this page