우리가 풀고 싶은 문제들

작성자 Sualeh Asif작성일 리서치

업데이트: 우리는 더 많은 문제들에 대해서도 글을 썼습니다.

짧고 구체적인 문제들의 순서 없는 목록:

  • 더 나은 컨텍스트: 코드 에디터에는 많은 정보 소스가 있습니다. 열린 파일, 의미적으로 유사한 코드 청크, 심볼로 연결된 클래스, 린트 출력, 실행 트레이스, git 히스토리, 타이핑 히스토리, 외부 문서 등이 있습니다. 우리는 모델이 사용자 질문과 가장 관련 있는 정보를 즉시 파악하길 원하며, 이 문제를 해결하기 위해 현재 커스텀이면서도 빠른 리랭커(reranker) 모델을 학습하고 있습니다. 각 요청마다 서로 다른 모든 소스에서 50만 토큰을 모은 다음, 리랭커를 사용해 가장 관련성 높은 8k 토큰만 남기도록 필터링할 것입니다. 이는 모델 측 문제이기도 하고, 갈수록 인프라 측 문제이기도 합니다.

  • “편집을 위한 copilot”: GitHub Copilot은 새 코드를 작성할 때 정보량이 낮은, 반복적이고 단순한 키 입력을 제거하는 데 매우 유용하지만, 기존 코드 블록에 작고 단순한 변경을 해야 할 때 그런 키 입력을 줄이는 데는 도움이 되지 않습니다. 단순한 F2 심볼릭 리네임보다 약간 더 복잡한 리네임을 위해 필요한 이동, 삭제, 입력 키 입력들을 떠올려 보세요. 우리는 UX(코딩 중에 방해되지 않으면서 diff를 보여주는 방식)와 모델 측 모두에서 혁신이 필요합니다(비용, 지연 시간, 지능 문제 때문에 단순 프롬프트로는 해결되지 않습니다).

  • 제약된, 흐름 내 에이전트: 대규모 코드베이스에서의 엔지니어링을 위한 OpenAI의 code interpreter를 떠올려 보세요. 사용자는 제약된, 소수 단계의 에이전트에게 무엇을 해야 할지 지시하고, 에이전트는 코드를 검색하고 작성하고 실행하면서, 중간중간 피드백을 위해 사용자에게 다시 묻습니다. 이를 달성하기 위한 첫 단계로, 우리는 지금 수십만 토큰 규모의 폴더에서 동작하는 이런 유형의 에이전트를 만드는 작업을 하고 있습니다. 그것이 성공한다면, 전체 코드베이스까지 확장할 계획입니다.

  • 버그 찾기: 여기에는 두 가지 모드가 있습니다. (1) 백그라운드에서 Cursor가 항상 파일을 지속적으로 스캔해 잠재적인 버그를 찾아주고, (2) 여러분이 디버깅 세션에 깊이 몰입해 있을 때 Cursor가 여러분과 함께 적극적으로 버그를 찾습니다. 이 영역에서 흥미로운 데이터를 수집할 수 있는 여지가 매우 많습니다.

  • 더 큰 규모의 편집: Cursor는 전체 파일은 물론, 전체 디렉터리까지 수정할 수 있어야 합니다. 이는 능력과 UX 모두에 대한 도전입니다. 속도를 위해서는, 모델이 전체를 다시 쓰지 않고도 수정할 부분만 영리하게 골라낼 수 있어야 합니다. 좋은 경험을 제공하기 위해서는 변경 사항을 파싱 가능하고 실시간으로 볼 수 있는 형태로 보여줘야 합니다.

  • 스케일: 2023년 10월 12일 기준으로, 우리는 14억 개의 벡터와 15만 개의 코드베이스를 인덱싱해 두었습니다. 연말까지 아마 10배 정도 성장할 것입니다. 우리는 이미 Rust로 매우 빠른 머클 트리 기반 코드베이스 동기화 엔진을 만들어 두었고, 곧 커스텀 인덱싱 시스템도 구축해야 할 가능성이 큽니다.

향후 아이디어:

  • Time warp: 앞으로 15분간 여러분이 만들 교차 파일 코드 변경을 예측하고 표시합니다. 모든 삽입/삭제를 한 번의 키보드 명령으로 수락합니다.

  • 이해: 우리의 모델은 어떤 코드베이스든 그 안의 모든 개념을 파라미터(가중치) 수준에서 깊이 이해해야 합니다.

  • 리더 모드: 원하는 어떤 수준의 구체성으로 문서를 제공하고, 관련 코드 경로를 따라가며 필요할 때 설명해 주는 봇을 통해 코드 이해를 부담 없이 만들기.

  • Pseudo-code 모드: 코드의 “개요” 표현을 편집하면 그 변경 사항이 자동으로 소스 레벨에 적용되도록 합니다.

  • 더 이상 스택 트레이스를 걱정하지 않기: IDE가 그것을 바로 이해하고, 코드를 자동으로 고쳐줘야 합니다.

우리가 지금 생각하고 있는 모든 문제들을 모아 보려 했지만 — 그리고 이것은 하루에 12시간씩 스스로 사용하는 제품을 만든다는 것의 멋진 점 중 하나이기도 한데 — 우리는 계속해서 새로운 아이디어를 떠올리고 우선순위를 바꾸기 때문에, 이 목록을 완결적인 로드맵으로 보아서는 안 됩니다. 그럼에도, 우리가 매일 어떤 일에 두뇌를 쓰고 있는지에 대한 감은 줄 수 있기를 바랍니다.

또한 여기까지 읽으신 걸 보니, 우리가 관심을 두고 있는 문제들에 여러분도 어느 정도 관심이 있으신 것 같습니다 :). 그렇다면, 우리 팀에 합류하는 것을 진지하게 고민해 보셔야 합니다! 여러분이 우리와 함께 일하는 것을 좋아하실 거라고 생각하는 몇 가지 다른 이유도 있습니다:

  • 사람들은 Cursor를 쓰는 걸 좋아합니다. 우리는 초기 성장세에 매우 만족하고 있습니다.

  • 여기서는 정말 뛰어난 사람들과 함께 일하게 됩니다. 우리는 높은 인재 밀도를 매우 중요하게 생각합니다. 여기서 함께 일하는 모든 동료들은 하나같이 정말 뛰어납니다.

  • AI 코딩은 거대한 시장입니다. 그리고 우리는 이 시장에서 이길 수 있습니다.

  • 재미있습니다. 이는 우리에게 정말 중요합니다! 함께 일하기 좋은 사람들과 일하는 건 즐겁고, Cmd-Shift-R을 눌러 바로 사용자 피드백을 받을 수 있는 제품을 만드는 건 즐겁고, 코드를 짜는 본인 스스로가 타깃 사용자이기 때문에 더 즐겁고, 프로그래밍에서 지루한 부분을 모두 자동화하려는 목표를 향해 매일 조금씩 나아가는 것도 즐겁습니다.

  • 우리는 열심히 일합니다. 이런 문제들을 다룰 수 있다는 걸 행운으로 여기며, 그것들을 해결하는 데 우리의 모든 에너지를 쏟아붓는 일을 즐깁니다.

카테고리: 리서치

작성자: Sualeh Asif

우리가 풀고 싶은 문제들 · Cursor