Projects를 소개합니다
TMT오늘 Cursor에서 Projects를 출시합니다. Projects를 쓰면 기능 하나, 마이그레이션, 앱 전체처럼 규모가 큰 작업을 맡길 수 있습니다. 몇 달에 걸친 작업 내내 컨텍스트를 유지하고, 수천 개의 서브에이전트에 작업을 위임하며, 따로 지시하지 않아도 반복되는 작업을 수행합니다.
지난 2월에 저희는 에이전트 무리가 작업 전체를 맡는 소프트웨어 개발의 제3시대에 대한 구상을 밝혔습니다. Projects는 그 구상을 실제로 구현한 결과입니다. 추상화 수준을 한 단계 올림으로써, 개발자는 에이전트를 관리하는 일에서 벗어나 작업 자체를 지휘할 수 있게 됩니다.
Cursor에서는 몇 달째 Projects를 쓰면서 수백 개의 PR에 걸친 마이그레이션을 돌리고, 디자인 시스템의 일관성을 유지하고, Projects 자체를 만들어 왔습니다. 생산성을 크게 끌어올려 주는 도구라는 것을 확인했습니다. 새로 쓰기 시작한 사용자는 PR을 30% 더 많이 머지하고, Projects를 주로 쓰는 사용자는 여섯 배 더 많이 머지합니다.
코디네이터 하나로 수천 개의 에이전트를 지휘합니다
Project는 코디네이터 에이전트와 대화하면서 관리합니다. 코디네이터는 직접 코드를 쓰지 않고, 코드를 쓰는 다른 에이전트들을 지휘합니다. 실행하지 않고 위임하기 때문에 막히는 일이 없고 언제든 지시에 응답합니다.
Projects를 가능하게 하는 핵심 기능은 세 가지입니다.
기본은 클라우드, 필요할 때는 로컬. Project는 자체 컴퓨터에서 실행되므로 노트북을 닫아도 멈추지 않습니다. 덕분에 노트북이 감당할 수 있는 수준보다 많은 서브에이전트를 병렬로 돌릴 수 있습니다. 사용자 컴퓨터에서 테스트해야 하는 일이 생기면 코디네이터가 로컬 에이전트를 띄워 그곳에서 실행합니다.
공유 컨텍스트. 작업을 시작할 때마다 에이전트에게 처음부터 다시 설명해야 한다면 곤란합니다. 각 Project는 파일 묶음을 유지하고, 이 파일들은 에이전트가 사용하는 모든 클라우드 머신과 로컬 머신에 동기화됩니다. 에이전트는 조사 결과와 산출물은 물론, 코드베이스에 대해 알아낸 내용과 사용자가 선호하는 작업 방식을 여기에 추가합니다. 예를 들어 어떤 에이전트가 서비스를 테스트하는 방법을 알아내면, 이후의 모든 에이전트가 그 방법을 그대로 쓸 수 있습니다. 이 컨텍스트는 Project와 함께 자라나므로 시간이 갈수록 코디네이터가 더 잘 일하게 됩니다.
구독. 코디네이터는 슬랙 채널을 지켜보거나, 정해진 일정에 맞춰 실행되거나, 사용자의 모든 PR을 따라다니며 PR이 열리거나 머지될 때 CI를 고치고 필요한 조치를 취할 수 있습니다. 이렇게 해서 사용자가 지시할 때까지 기다리지 않고, 스스로 감지한 신호를 바탕으로 움직입니다.
Cursor에서 Projects를 쓰는 방식
저희 엔지니어들이 Projects로 하는 일은 대부분 세 가지 패턴으로 정리됩니다.
기능 개발
대부분의 엔지니어는 규모가 큰 작업을 위해 Project를 만듭니다. 기능 개발은 보통 에이전트들이 시스템을 조사하고 알아낸 내용을 공유 컨텍스트에 기록하는 일로 시작합니다. 그다음 코디네이터가 계획을 세우고, 에이전트들을 보내 계획의 서로 다른 부분을 병렬로 구현하고 테스트하게 합니다.
피드백을 주고받을 때마다 Project는 사용자의 아키텍처와 취향을 배웁니다. 기능을 써 볼 준비가 되면 코디네이터가 사용자 컴퓨터에서 에이전트를 띄워 로컬로 실행할 수 있습니다. 출시한 뒤에도 같은 Project가 로그를 지켜보고, 원래 결정을 내린 배경까지 모두 파악한 상태로 버그 리포트를 처리할 수 있습니다.
마이그레이션
시작은 쉽지만 끝내기는 어려운 마이그레이션에 Projects가 특히 유용합니다. Cursor에서는 새 프레임워크를 도입하고 스타일 시스템을 교체하는 데 써서 수백 개의 PR을 처리했습니다.
사용자는 코디네이터와 함께 안전한 방식을 정하고, 코디네이터는 그 방식을 코드베이스 전체에 조금씩 적용해 나갑니다. 처음에는 PR을 하나하나 꼼꼼히 검토합니다. 수정한 결과가 계속 문제없이 통과하면 검토를 줄이게 되고, 코디네이터는 알아서 마이그레이션을 계속 진행합니다.
정원 가꾸기(Gardening)
코드 품질을 유지하거나 회귀를 감시하는 일처럼 끝이 없는 작업에도 Projects가 잘 맞습니다. 코디네이터에게 새 PR을 따라다니라고 하거나, 슬랙에서 버그 리포트를 지켜보라고 하거나, 정해진 일정에 맞춰 실행하라고 지시해 두면 새 작업이 생길 때마다 움직입니다.
저희 팀의 한 엔지니어는 디자인 시스템 Project를 이렇게 운영합니다. 처음에는 이 엔지니어가 수정 사항을 하나하나 검토하고 잘못된 것을 바로잡았습니다. 지금은 코디네이터가 새로 올라오는 모든 PR을 훑어서 디자인 시스템에 들어가야 할 컴포넌트를 뽑아내고, 같은 실수를 두 번 보면 린트 규칙을 추가합니다. 이 Project는 하루에 PR 20개에서 100개를 다루는 수준까지 가고 있어서, 코디네이터가 작업을 정리하고 엔지니어는 살펴봐야 할 지점만 확인합니다.
Projects 시작하기
Projects는 베타로 제공되며 오늘부터 모든 사용자에게 순차적으로 배포됩니다. 왼쪽 내비게이션에서 Project를 시작하고 무엇을 만들고 싶은지 설명하면, 그다음부터는 코디네이터가 맡아서 진행합니다. 대화 하나로 끝나지 않을 작업, 즉 PR 여러 개가 필요한 기능이나 마이그레이션, 자리를 비운 동안 처리되기를 바라는 일에 가장 잘 맞습니다.