동적 컨텍스트 디스커버리

작성자 Jediah Katz작성일 리서치

코딩 에이전트는 소프트웨어가 만들어지는 방식을 빠르게 바꾸고 있습니다. 이런 급속한 발전은 에이전트형 모델 자체의 향상과, 이를 올바른 방향으로 이끄는 더 나은 컨텍스트 엔지니어링 모두에서 나오고 있습니다.

Cursor의 에이전트 하니스는 우리가 모델에 제공하는 지시문과 도구들을 의미하며, 우리가 지원하는 각 새로운 프런티어 모델마다 개별적으로 최적화됩니다. 동시에, 긴 상호작용 과정 전반에 걸쳐 컨텍스트를 수집하는 방식이나 토큰 사용을 최적화하는 방식처럼, 이 하니스 안의 모든 모델에 공통으로 적용할 수 있는 컨텍스트 엔지니어링 개선도 존재합니다.

모델이 에이전트로서 더 뛰어나질수록, 처음에 제공하는 세부 정보를 줄여 에이전트가 스스로 관련 컨텍스트를 더 쉽게 찾아오도록 하는 접근이 효과적이라는 것을 확인했습니다. 우리는 이러한 패턴을, 항상 같은 내용을 포함하는 정적 컨텍스트와 대비하여 동적 컨텍스트 디스커버리라고 부르고 있습니다.

동적 컨텍스트 탐색을 위한 파일

동적 컨텍스트 탐색은 필요한 데이터만 컨텍스트 윈도우로 가져오기 때문에 토큰 사용 효율이 훨씬 높습니다. 또한 컨텍스트 윈도우 안의 잠재적으로 혼란스럽거나 상충되는 정보의 양을 줄여 Agent의 응답 품질을 향상시킬 수 있습니다.

다음은 Cursor에서 동적 컨텍스트 탐색을 활용하는 방식입니다:

  1. 긴 도구 응답을 파일로 전환하기
  2. 요약 과정에서 이전 대화 기록을 참조하기
  3. Agent Skills 오픈 표준 지원하기
  4. 필요한 MCP 도구만 효율적으로 불러오기
  5. 통합된 모든 터미널 세션을 파일로 취급하기

1. 긴 툴 응답을 파일로 변환하기

툴 호출은 큰 JSON 응답을 반환하면서 컨텍스트 윈도우를 크게 늘릴 수 있습니다.

파일 편집이나 코드베이스 검색 같은 Cursor의 퍼스트파티 툴의 경우, 지능적인 툴 정의와 최소한의 응답 포맷을 사용해 컨텍스트가 비대해지는 것을 막을 수 있지만, 서드파티 툴(예: 쉘 명령어나 MCP 호출)은 기본적으로 같은 처리를 적용받지 않습니다.

코딩 에이전트가 흔히 취하는 접근 방식은 긴 쉘 명령어 출력이나 MCP 결과를 잘라내는 것입니다. 하지만 이렇게 하면 컨텍스트에 포함하고 싶었던 중요한 정보를 잃을 수 있습니다. Cursor에서는 대신 출력 내용을 파일에 기록하고, 에이전트가 그 파일을 읽을 수 있도록 합니다. 에이전트는 끝부분을 확인하기 위해 tail을 호출하고, 필요하면 더 읽어들입니다.

이 방식 덕분에 컨텍스트 한도에 도달했을 때 불필요한 요약이 줄어들었습니다.

2. 요약 중에 채팅 기록 참조하기

모델의 컨텍스트 윈도우가 가득 차면, Cursor는 요약 단계를 실행해 지금까지의 작업 내용을 요약한 새로운 컨텍스트 윈도우를 에이전트에 제공합니다.

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

컨텍스트 윈도우 한도에 도달했거나 사용자가 수동으로 요약을 실행하기로 결정하면, 에이전트에 기록 파일에 대한 참조를 제공합니다. 에이전트가 요약에서 누락된 추가 세부 정보가 필요하다고 판단하면, 기록을 검색해 해당 정보를 다시 찾아올 수 있습니다.

3. Agent Skills 공개 표준 지원

Cursor는 코딩 에이전트에 특화된 기능을 추가하기 위한 공개 표준인 Agent Skills를 지원합니다. 다른 유형의 Rules와 마찬가지로, Skill은 에이전트가 도메인별 작업을 어떻게 수행해야 하는지 정의하는 파일들로 이루어집니다.

Skill에는 이름과 설명도 포함되며, 이는 시스템 프롬프트의 "정적 컨텍스트"로 포함될 수 있습니다. 그런 다음 에이전트는 grep 및 Cursor의 semantic search 같은 도구를 사용해, 관련된 Skill을 찾아 불러오기 위해 동적 컨텍스트 탐색을 수행할 수 있습니다.

Skill에는 작업과 관련된 실행 파일이나 스크립트를 함께 포함할 수도 있습니다. 그저 파일들이기 때문에, 에이전트는 특정 Skill과 관련된 내용을 쉽게 찾아낼 수 있습니다.

4. 필요한 MCP 도구만 효율적으로 불러오기

MCP는 OAuth 뒤에 있는 보호된 리소스에 접근할 때 유용합니다. 예를 들어 프로덕션 로그, 외부 디자인 파일, 또는 Enterprise용 내부 컨텍스트와 문서 등이 있습니다.

일부 MCP 서버에는 많은 도구가 포함되어 있고, 종종 설명도 길어서 컨텍스트 윈도우를 크게 부풀릴 수 있습니다. 이 도구들 대부분은 프롬프트에 항상 포함되어 있음에도 실제로는 거의 사용되지 않습니다. 여러 MCP 서버를 사용하는 경우 이 문제가 더욱 커집니다.

모든 MCP 서버가 이를 알아서 최적화해 주기를 기대하는 것은 현실적이지 않습니다. 컨텍스트 사용량을 줄이는 책임은 코딩 에이전트에 있다고 보고 있습니다. Cursor에서는 MCP용 동적 컨텍스트 디스커버리를 지원하기 위해 도구 설명을 폴더와 동기화하는 방식을 사용합니다.1

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

이 파일 기반 접근 방식은 MCP 도구의 상태를 에이전트에 전달하는 기능도 제공합니다. 예를 들어, 예전에는 MCP 서버가 다시 인증이 필요한 상태가 되면 에이전트가 해당 도구들을 완전히 잊어버려 사용자가 혼란스러워지곤 했습니다. 이제는 미리 다시 인증하라고 사용자에게 능동적으로 알려 줄 수 있습니다.

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

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

이제 "왜 내 명령어가 실패했지?"처럼 물어보면 Agent가 사용자가 어떤 상황을 말하는지 쉽게 파악할 수 있습니다. 터미널 히스토리가 매우 길어질 수 있기 때문에, Agent는 grep으로 관련 있는 출력만 골라낼 수 있고, 이는 서버처럼 오래 실행되는 프로세스의 로그를 다룰 때 특히 유용합니다.

이는 이전 셸 출력이 컨텍스트로 제공되는 CLI 기반 코딩 에이전트의 동작을 반영하지만, 출력을 정적으로 주입하는 대신 동적으로 찾아 활용한다는 점이 다릅니다.

단순한 추상화

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

하지만 코딩 에이전트가 빠르게 발전하는 지금, 파일은 사용하기 단순하면서도 강력한 기본 단위였고, 미래를 완전히 예측하지 못하는 또 다른 추상화를 도입하는 것보다 더 안전한 선택이었습니다. 이 영역에서 앞으로도 공유할 흥미로운 작업들이 많이 있으니 계속 지켜봐 주세요.

이 개선 사항들은 향후 몇 주 안에 모든 사용자에게 적용될 예정입니다. 이 블로그 글에서 설명한 기법들은 Lukas Moller, Yash Gaitonde, Wilson Lin, Jason Ma, Devang Jhabakh, Jediah Katz를 포함한 많은 Cursor 구성원들의 작업 결과입니다. AI를 사용해 가장 어렵고 야심찬 코딩 과제를 해결하는 데 관심이 있다면, 여러분의 이야기를 듣고 싶습니다. hiring@cursor.com으로 연락 주세요.


  1. 우리는 도구 검색 방식도 검토했지만, 그 경우 도구들이 플랫 인덱스 전체에 흩어지게 됩니다. 대신 서버마다 하나의 폴더를 만들어 각 서버의 도구를 논리적으로 묶어 둡니다. 모델이 폴더를 나열할 때, 해당 서버의 모든 도구를 한 번에 보고 하나의 응집된 단위로 이해할 수 있습니다. 파일은 더 강력한 검색도 가능하게 합니다. 에이전트는 전체 rg 파라미터나 심지어 jq까지 사용해 도구 설명을 필터링할 수 있습니다.

카테고리: 리서치

작성자: Jediah Katz

동적 컨텍스트 디스커버리 · Cursor