OpenAI Codex 모델을 위한 Cursor의 Agent 개선하기
Cursor는 코딩을 위한 최신 프론티어 AI 모델 전반과 통합되어 있습니다.
각 모델은 출력 품질을 높이고, 성의 없는 응답을 방지하며, 도구 호출을 효율화하는 등 더 나은 결과를 위해 우리의 Agent 하니스에 맞춤형 지침과 세부 조정이 필요합니다.
우리는 OpenAI와 협력하여 Cursor의 Agent를 통해 그들의 모델을 개발자들이 사용할 수 있도록 해 왔습니다. 이 포스트에서는 최신 프론티어 코딩 모델인 GPT-5.1-Codex-Max를 지원하기 위해 Agent 하니스를 어떻게 업데이트했는지 다룹니다.
견고한 Agent 하니스 구축
Cursor의 Agent 하니스에 있는 각 모델에는 Cursor 환경 안에서 해당 모델을 최적화할 수 있도록, 모델별로 설계된 지시문과 도구가 제공됩니다.
AI 연구소에서는 다양한 지시문과 도구를 활용해 새로운 모델을 학습시킵니다. 코딩과 같은 특정 도메인에서는 모델이 학습 과정에서 이미 접해 온 예시와 더 유사한 패턴을 선호하는 경향이 있습니다. 새로운 모델을 Cursor에 추가할 때 우리의 역할은, 모델이 익숙한 지시문과 도구를 Cursor 전용 지시문과 도구와 함께 통합하고, 그런 다음 내부 평가 스위트인 Cursor Bench를 기반으로 이를 튜닝하는 것입니다.
우리는 모델의 성공률, 도구 호출 능력, 그리고 전체 사용자 기반에서의 채택 정도를 기준으로 모델의 품질과 견고함을 측정합니다. 아래는 Codex를 위해 우리의 Agent 하니스에 적용한 일부 업데이트입니다.
최신 Codex 모델로 업데이트하기
OpenAI의 Codex 모델은 최신 프런티어 모델을 기반으로, 에이전트 기반 코딩에 특화되어 학습된 버전입니다.
OpenAI 팀은 Codex CLI 하네스에 도구와 프롬프트를 정렬하기 위해 저희와 긴밀히 협업했습니다. 다음은 저희가 적용한 주요 변경 사항입니다:
더 쉘 지향적인 접근 방식
OpenAI의 Codex CLI는 쉘 중심 워크플로우에 초점을 맞추고 있습니다. 그 결과, Codex 모델은 학습 중에 제한된 도구 집합만을 제공받고, 대신 쉘을 사용해 검색하고, 파일을 읽고, 수정하는 방법을 배우게 됩니다.
모델이 난이도 높은 수정 작업에서 어려움을 겪을 때는, 인라인 Python 스크립트를 사용해 파일을 작성하는 방식으로 되돌아가는 경우가 있습니다. 이런 스크립트는 강력하지만, Cursor에서의 수정 작업에는 도구 호출이 더 안전하고 사용자 경험도 더 좋습니다.
도구 호출을 유도하기 위해 Cursor의 도구 이름과 정의를 rg(ripgrep) 같은 쉘 도구와 더 비슷하게 만들었습니다. 이 변경은 우리의 모든 모델 하네스에 적용했습니다. 또한 다음과 같은 지침도 추가했습니다:
If a tool exists for an action, prefer to use the tool
instead of shell commands (e.g. read_file over `cat`).
Cursor의 Sandboxing 기능은 사용자가 명령을 하나하나 수동으로 승인하지 않아도 무단 파일 접근과 네트워크 활동을 차단하므로, 모델이 여전히 셸 명령을 실행하기로 선택하더라도 이 부분의 보안을 강화하는 데 도움이 됩니다.
프리앰블
메인라인 GPT-5 계열 모델과 달리, Codex 모델 계열은 현재 작업 중일 때 사용자에게 진행 상황을 알려 주기 위해 추론 요약을 사용합니다. 이는 한 줄짜리 제목일 수도 있고, 한 편의 전체 메시지일 수도 있습니다.
이러한 추론 요약에서는, 사용자가 에이전트의 진행 상황을 따라가고 잘못된 진행 경로를 일찍 파악할 수 있으면서도, 너무 자주 알림을 보내 사용자가 무시하게 만들지 않는 균형을 맞추고자 했습니다. 우리는 모델에 추론 요약을 1~2문장으로 제한하고, 새로운 정보를 발견하거나 새로운 전술을 시작할 때 이를 언급하며, 자신의 소통 방식에 대해 언급하는 것(“지금 사용자에게 설명하고 있습니다…” 같은 표현)을 피하도록 가이드라인을 제공했습니다.
Codex 모델은 에이전트 턴이 끝날 때까지는 일반적인 방식으로 사용자와 “대화”할 수 없기 때문에, 프롬프트에서 턴 도중 사용자와 소통하는 것과 관련된 문구는 모두 제거했습니다. 이렇게 했을 때 모델의 최종 코드 출력 성능이 향상되는 것을 확인했습니다.
린트 읽기
Cursor는 우리 하니스의 모든 모델이 린터 오류(예: ESLint, Biome)를 읽고, 에이전트가 이를 자동으로 고칠 수 있도록 하는 도구를 사용할 수 있게 합니다.
우리는 Codex에 도구 정의만 제공하는 것만으로는 read_lints 도구를 호출하도록 유도하기에 충분하지 않다는 것을 발견했습니다. 대신 Codex는 이 도구를 언제 호출해야 하는지에 대한 명확하고 직설적인 지침을 제공했을 때 성능이 크게 향상되었습니다:
After substantive edits, use the read_lints tool to check
recently edited files for linter errors. If you've introduced
any, fix them if you can easily figure out how.
추론 흔적 보존하기
OpenAI의 reasoning 모델은 도구 호출 사이에서 내부 추론 흔적을 내보내는데, 이는 사실상 모델이 각 행동을 선택한 이유를 설명하는 “chain of thought”입니다. Responses API는 이러한 reasoning item(또는 민감한 상황에서는 암호화된 reasoning item)을 캡처하고 전달하도록 설계되어 있어, 모델이 매번 계획을 처음부터 다시 세우지 않고도 여러 턴에 걸쳐 계획의 연속성을 유지할 수 있도록 돕습니다.
Codex는 이런 연속성에 특히 크게 의존합니다. 추론 흔적이 누락되면, 모델은 이전의 사고 과정을 스스로 추론해야 하고, 이는 종종 하위 목표 누락, 계획 품질 저하, 도구 호출 순서의 혼동, 또는 이미 수행한 단계를 반복해서 다시 도출하는 문제로 이어집니다. Cursor Bench 실험에서, GPT-5-Codex에서 추론 흔적을 제거했을 때 성능이 30% 하락하는 것을 확인했습니다. 이에 비해 OpenAI는 추론 흔적이 생략된 SWE-bench에서 GPT-5의 성능 저하가 더 작은 3% 수준이었다고 보고했습니다.
이처럼 영향이 큰 만큼, 우리는 추론 흔적이 항상 보존되고 올바르게 전달되도록 알림 기능을 추가했습니다. 이를 통해 Agent의 내부 계획을 온전히 유지하고, 모델이 도구 호출 사이의 공백을 억지로 “채워 넣어야” 할 때 발생하는 성능 회귀를 방지합니다.
모델이 직접 행동하도록 유도하기
Cursor의 기본 Agent 모드에서는 사용자의 요청에 따라 에이전트가 자율적으로 파일을 읽고 수정해 주기를 바라게 됩니다. 잠시 다른 작업을 하려고 탭을 전환했다가 돌아와 보니, 계속 진행해도 되는지 허락을 구하느라 에이전트가 기다리고만 있었다면 꽤 답답할 수 있습니다.
우리는 Codex를 더 잘 안내할 수 있도록, 보다 구체적인 지시문을 실험해 왔습니다:
사용자가 명시적으로 계획을 요청하거나 코드를 작성하지 않아야 함을 분명히 하는
다른 의도를 나타내지 않는 한, 사용자가 코드를 변경하거나 도구를 실행하여
문제를 해결하기를 원한다고 가정하세요. 이러한 경우, 제안된 해결책을 메시지로
출력하는 것은 바람직하지 않으며, 실제로 변경 사항을 구현해야 합니다. 어려움이나
장애물에 부딪히면 스스로 해결을 시도하세요.
Cloud Agents 비동기 원격 워크플로우에서는 이러한 규약을 한층 더 엄격하게 적용합니다.
메시지 순서
OpenAI 모델은 메시지의 순서를 따르고, 그에 따라 우선순위를 부여하도록 학습되어 있습니다. 예를 들어, system 프롬프트는 항상 사용자 메시지와 도구 결과보다 우선합니다.
이는 유용하지만, 동시에 Cursor가 제공하는 프롬프트에 사용자 메시지와 우연히 모순될 수 있는 지침이 들어가지 않도록 우리가 사용하는 하니스(harness)를 조정해야 한다는 뜻이기도 합니다. 그렇지 않으면 Codex가 사용자 요청을 따르려 하지 않는 상태에 빠질 수 있습니다.
예를 들어, 한때 우리는 Codex에게 토큰을 아끼고 낭비하지 않도록 주의하라고 지시했습니다. 하지만 이 메시지가 모델이 더 야심찬 작업이나 대규모 탐색을 수행하려는 의지에 영향을 주고 있다는 것을 발견했습니다. 때때로 모델은 멈춰 서서 아주 단호하게 이렇게 말하곤 했습니다. 나는 토큰을 낭비해서는 안 되고, 이 작업을 계속할 만한 가치가 없다고 생각해!
앞으로의 방향
모델 출시 속도는 점점 빨라지고 있습니다. 저희의 목표는 Cursor Agent 환경 안에서 모든 최첨단 모델의 성능을 최대한 끌어내는 것입니다. 아직 해야 할 일이 많으며, Cursor에 적용하는 개선 사항을 지속적으로 공유하겠습니다.