더 많은 과제들
AI 프로그래밍의 다음 단계에서 특히 중요하다고 생각하는 여러 흥미로운 과제 영역입니다.
이전 문제 정리 글에 이어, AI 프로그래밍의 다음 단계에서 가장 중요하다고 생각하는 추가적인 문제들을 소개합니다.
다음 액션 예측
Cursor에는 다음 편집을 예측하는, copilot의 더 지능적인 버전인 Copilot++이 포함되어 있습니다. 이 아이디어를 자연스럽게 갈 수 있는 끝까지 밀어붙일 수 있을까요?
코딩을 할 때는 단지 엔트로피가 낮은 편집만 하는 게 아닙니다. 에디터 전체에서 엔트로피가 낮은 키 입력, 클릭, 액션들을 수행합니다. 이 각각을 낮은 지연으로 예측하는 모델을 만들 수 있을까요?
우선 Copilot++를 확장해, 다음에 이동할 위치를 예측하도록 했습니다. 여기에 다음 편집 예측을 결합하면, 모델이 일련의 엔트로피가 낮은 변경들을 순서대로 실행해 나갈 수 있습니다:
현재는 사용자가 다음에 이동할 파일, 다음에 실행할 터미널 명령, 그리고 이전 터미널 명령에 조건화된 다음 편집까지 예측하는 기능을 개발 중입니다. 바로 다음 액션 예측 모델입니다.
더 나아가, 이 모델은 사용자가 필요로 하는 바로 그 순간에 정보를 띄워 줘야 합니다. 필요한 코드 조각이든, 문서든 마찬가지입니다.
Cursor는 사용자의 의지가 그대로 확장된 것처럼 느껴져야 합니다. 사용자가 변경 사항을 떠올리는 바로 그 순간, 언어 모델은 거의 최소한의 의도만으로 그것을 즉시 실행해 줄 수 있어야 합니다.
유망한 방향
-
코드베이스 전반에 걸친 action prediction에 대한 근본적인 연구.
-
~5–13B 활성 파라미터 코드 모델에 대한 지속적인 사전 학습 및 사후 학습(프리필에 제약된 저지연 예측을 위해).
-
Speculative Edits와 유사한 추가 추론 기법.
눈에 거슬리지 않는 방식으로 “actions”를 드러내는 영리한 UX. (사용자가 다음에 이동하면 좋을 파일을 어떻게 제안할까? 또는 현재 뷰포트 밖의 다음 위치를 어떻게 제안할까?)
완벽한 편집
더 높은 품질의, 더 대규모 편집을 만들기 위해 추론 시점의 계산 자원을 확장할 수 있을까요? 늘어난 지연 시간은 어떻게 보완해야 할까요?
편집을 백그라운드에서 수행해야 할 수도 있습니다. 신뢰할 수 있는 지능형 모델에게 맡길 수 있는 작업 단위를 별도로 띄우는 방식입니다.
우리는 강력한 에디터 전용 도구 활용 능력, 더 스마트한 코드베이스 전역 컨텍스트 이해, 그리고 향상된 장기 추론 능력을 가진 모델이 필요합니다.
그리고 비동기 코드 생성이 흐름을 보존하도록 만들려면 어떻게 해야 할까요. 모순어법처럼 들리지만, 모델 역량과 UX에 대한 영리한 연구를 통해 이것이 가능해질 수 있다고 믿습니다.
할루시네이션 의사 코드
사용자는 원하는 변경 사항을 설명하는 의사 코드를 작성하기만 하면 됩니다. 그러면 Cursor가 백그라운드에서 이를 전체 변경 사항으로 컴파일해 줍니다.
여러 파일 편집
Cmd-k는 이미 훌륭하지만, 코드베이스 전체에 동일한 종류의 수정을 한 번에 요청할 수 있다면 어떨까요? 특히 여러 파일에 걸친 변경도 정확하게 처리해 준다면요.
유망한 발전 방향
-
추론 시점 연산 리소스 스케일링. reward model과 rejection sampling만으로도 빠르고 손쉬운 개선이 가능하다는 것은 알지만, 어디까지 더 나아갈 수 있을까요?
-
더 나은 추론 모델 (GPT-5, Claude 4, Gemini 2.0)
-
하나의 사용자 워크스페이스에 대해 여러 language server/파일 시스템 인스턴스를 실행하기. 이를 위해서는 모델 툴 사용과 런타임 환경을 원격에서 재현하는 기능이 필요합니다.
-
에이전트 trajectory를 기반으로 모델을 학습하고 성능을 개선하기
-
작업 흐름을 끊지 않는 비동기 편집을 위한 대규모 UX 실험
최적의 컨텍스트
문서 토큰이 수백만 개, 소스 코드 토큰이 수천만 개, 커밋 히스토리 토큰이 또 다른 수천만 개에 달할 수 있으며, 이 모든 토큰이 단 하나의 쿼리를 해결하는 데 잠재적으로 유용할 수 있습니다.
여기에 더해, UI의 픽셀, 프로덕션과 localhost의 로그, Slack 메시지 등도 있습니다...
우리는 최고의 코딩 시스템이 이러한 모든 정보를 처리하기 위해 검색, 순환(recurrence), 롱 컨텍스트 어텐션을 조합해 사용할 것이라고 믿습니다.
우리가 시스템을 강조하는 이유는, 단기적으로는 코딩을 위한 무한 컨텍스트 엔진을 구성하는 여러 모델과 인프라의 앙상블 형태가 될 수 있기 때문입니다. 장기적으로는, 이런 능력이 아키텍처 자체에 내장될 것이라 예상합니다.
우리는 특히 검색의 미래를 창의적으로 상상할 때 큰 기대를 갖고 있습니다. 임베딩을 넘어서는 관점에서, 고비용의 인덱싱 단계와 저비용의 쿼리 단계(코퍼스 크기에 대해 서브선형)를 전제로 했을 때, 가능한 최상의 성능은 무엇일까요?
아마도 transformer memory as a differentiable search index의 어떤 변형처럼 보일 수도 있습니다. 어쩌면 완전히 다른 무언가일 수도 있습니다. 아직 충분히 탐구되지 않은 연구 방향입니다.
멀티홉 컨텍스트
내 코드베이스에서 두 문자열 사이의 diff를 계산하고 싶다. 임베딩을 사용하면 다음과 같은 청크를 얻게 된다:
function computeDiff(
firstModel: ITextModel,
secondModel: ITextModel,
): string {
//...
}원래 질의를 완전히 해결하려면 문자열에서 ITextModel을 생성하는 방법을 알아내야 합니다. 이 질의를 해결하려면 두 번의 홉이 필요합니다.
코드베이스에서 가장 어려운 질문과 질의는 여러 번의 홉을 필요로 합니다. 기본적인 리트리벌은 한 번의 홉에만 작동합니다.
유망한 방향
-
코드베이스에 특화되거나 개선된 임베딩(embedding) 및 리랭커(reranker).
-
멀티홉(multi-hop) 임베더를 학습시키기. 쿼리와 지금까지 찾은 관련 코드를 바탕으로, 다음으로 이동할 코드 조각을 결정하기.
-
코드베이스에 더 잘 맞는 효율적인 프리픽스 캐싱(prefix-caching)과, 필요하다면 커스텀 어텐션 마스크(attention mask).
-
코드베이스 수준의 검색(retrieval)에 대한 새로운 연구.
-
검색 인덱스로서의 트랜스포머(transformer)와 비슷하게, 모델이 코드베이스를 가중치 안에 학습하도록 가르치기.
버그 탐지 및 디버깅
기존 버그 탐지 시스템은 캘리브레이션(calibration)과 코드베이스에 대한 충분한 이해 측면에서 어려움을 겪습니다.
모델은 버그를 정확히 식별할 만큼 충분히 성능이 뛰어나지만, 많은 오탐(false positive)에 시달립니다. 가장 까다로운 버그를 찾으려면 코드베이스에 대한 더 깊은 이해가 필요합니다. 또 처음에는 버그처럼 보이는 코드도, 더 넓은 맥락에서 보면 실제로는 문제가 없을 수 있습니다.
이 문제가 드러나는 한 가지 방식은, 언어 모델을 활용해 코드 리뷰 경험을 크게 개선하는 것입니다:
AI 리뷰에서 버그 탐지하기
“AI 리뷰”의 장점은 사용자가 직접 리뷰를 요청하는 상황이기 때문에 오탐지에 더 관대할 수 있다는 점입니다. 단점은 이를 위해 사용자 행동을 바꾸도록 요구한다는 점입니다.
AI 린팅
버그 감지의 최적 형태는 항상 켜져 있으면서 백그라운드에서 버그를 잡아내는 린터입니다. 분당 여러 번 실행해야 하므로 AI-review보다 더 저렴하고 빠른 모델이어야 합니다. 또한 오탐(false positive) 비율이 더 낮도록 조정되어야 합니다.
더 똑똑한 디버깅
버그 탐지보다 더 인상적인 건, 까다로운 문제를 실제로 디버깅하는 능력입니다.
LLM 기반 정적 분석을 넘어설 필요가 있습니다. 예를 들어, 우리는 cursor/debug 패키지를 만들었습니다. 이 패키지를 코드에 연동하면 런타임 정보를 추적합니다.
백그라운드에서는 이를 활용해 추가 변수 상태까지 추적할 수 있습니다(관련 출력 내용을 Cursor의 컨텍스트로 전달하는 print 디버깅과 비슷한 방식).
유망한 방향
-
보정(calibration) 성능을 높이기 위한 (대부분 합성 데이터일 것으로 보이는) 영리한 데이터셋 선별과 최첨단 코드 모델에 대한 RL.
-
브라우저나 비통합 터미널 등 다른 환경에서 나오는 관련 정보 추적.
-
디버거 특화 도구 사용과 체인에서의 최첨단 모델 성능 개선.
-
사실상 무한한 컨텍스트와 코드베이스에 대한 거의 완벽한 이해.
-
유용한 모든 프로그램 상태 정보를 추적할 수 있도록
cursor/debug라이브러리의 범위 확장.
이 중 하나라도 관심 있는 과제가 있다면 hiring@cursor.com으로 연락해 주세요.