Cursor Agent가 이제 스스로 컴퓨터를 제어할 수 있습니다
에이전트의 역량은 그들이 실행되는 환경에 의해 결정됩니다. 자신이 만드는 소프트웨어를 직접 사용할 수 없다면, 에이전트는 곧 한계에 부딪힙니다.
지난 몇 달 동안 우리는 에이전트에게 전체 개발 환경이 갖춰진 전용 가상 머신을 제공하고, 변경 사항을 테스트하며 아티팩트(동영상, 스크린샷, 로그)를 생성할 수 있게 해서 이 문제를 내부적으로 해결해 왔습니다. 이를 통해 여러분은 에이전트의 작업을 빠르게 검증할 수 있습니다.
오늘 우리는 어디에서 작업하든 사용할 수 있는 새로운 버전의 Cursor Cloud Agents를 출시합니다. 웹, 모바일, 데스크톱 앱, Slack, GitHub 어디에서나 사용할 수 있습니다. 클라우드 에이전트는 자동으로 여러분의 코드베이스를 온보딩하고, 변경 사항을 데모하기 위한 아티팩트와 함께 머지 준비가 완료된 PR을 생성합니다. 또한 에이전트의 원격 데스크톱을 직접 제어해 수정된 소프트웨어를 사용해 보고, 로컬에서 브랜치를 체크아웃하지 않고도 직접 수정할 수 있습니다.
이는 Tab 자동완성에서 에이전트와 동기적으로 작업하는 방식으로 전환된 이후, 우리가 소프트웨어를 만드는 방식에 일어난 가장 큰 변화입니다. 현재 Cursor에서 머지되는 PR의 30% 이상은 클라우드 샌드박스에서 자율적으로 동작하는 에이전트가 생성하고 있습니다.


자율성의 다음 단계
로컬 에이전트는 코드 생성을 쉽게 만들어 주지만, 곧 서로(그리고 사용자와) 충돌을 일으키고 컴퓨터 리소스를 두고 경쟁하게 됩니다. 클라우드 에이전트는 각 에이전트에 격리된 VM을 제공해 이러한 제약을 제거하므로, 여러 에이전트를 병렬로 실행할 수 있습니다.
클라우드 에이전트는 자체 샌드박스 안에서 소프트웨어를 직접 빌드하고 그 소프트웨어와 상호작용할 수도 있어, 첫 시도 결과를 바로 넘기는 대신 출력이 검증될 때까지 반복 작업을 수행할 수 있습니다. 아래 영상은 향상된 컴퓨터 활용에 관한 초기 연구 단계에서 만든 개념 증명(PoC)을 보여 줍니다.
에이전트가 브라우저에서 웹 페이지를 탐색하고, 스프레드시트 같은 도구를 조작하고, 데이터를 해석해 의사결정을 내리고, 복잡한 UI 환경에서 문제를 해결하는 모습을 확인할 수 있습니다.
Cursor에서 클라우드 에이전트 사용하기
지난 한 달 동안 우리는 내부적으로 클라우드 에이전트를 사용해 왔고, 그 결과 소프트웨어를 만드는 방식 자체가 달라졌습니다. 작업을 작은 단위로 쪼개서 에이전트를 일일이 마이크로 매니징하는 대신, 더 큰 단위의 과제를 통째로 위임하고 에이전트가 자율적으로 실행하도록 맡깁니다.
우리가 클라우드 에이전트를 사용하는 방식은 대략 다음과 같습니다:
새로운 기능 구현
우리는 클라우드 에이전트를 활용해 plugins를 개발했고, 이 플러그인들을 최근 Cursor Marketplace에 출시했습니다. 다음은 우리가 사용한 프롬프트 중 하나입니다:
주어진 플러그인의 페이지에 표시된 각 컴포넌트마다 소스 코드에 대한 링크를 포함하고 싶습니다. skills, commands, rules, subagents의 경우 .md 파일입니다. hooks는 hooks.json입니다. mcps는 .mcp.json 또는 그것이 정의된 manifest입니다. 플러그인의 모든 컴포넌트를 인덱싱하면서, 각 컴포넌트의 소스 파일을 추적하고, 해당 파일이 있는 기본 github url을 통해 그 파일로 연결되는 링크를 구성하세요. 이 정보를 프런트엔드에 노출하고, 프런트엔드가 이 아이콘을 사용해 github로 링크하도록 하세요. 로컬에서
https://github.com/prisma/cursor-plugin으로 테스트하세요
에이전트는 이 기능을 구현한 뒤, 가져온 Prisma 플러그인으로 이동해 각 컴포넌트를 클릭하면서 GitHub 링크를 검증하는 과정을 스스로 녹화했습니다.
로컬 테스트를 위해 에이전트는 마켓플레이스 페이지를 제어하는 기능 플래그를 일시적으로 우회한 뒤, 푸시하기 전에 다시 원복했습니다. 그리고 main 브랜치에 리베이스하고, 머지 컨플릭트를 해결한 다음, 하나의 커밋으로 스쿼시했습니다.
취약점 재현
우리는 Slack에서 클라우드 에이전트를 실행하면서, 클립보드 탈취 취약성에 대한 설명과 함께 “이 취약점을 매우 자세하게 분류하고 설명해 주세요.”라는 프롬프트를 보냈습니다. 에이전트의 실행이 끝나자, 수행한 작업의 요약을 Slack 스레드에 답글로 남겼습니다.
에이전트는 노출된 API를 통해 취약점을 악용하는 HTML 페이지를 만들었습니다. 데모 페이지를 로컬에서 호스팅하기 위해 백엔드 서버를 기동하고, Cursor 인앱 브라우저에서 해당 페이지를 로드했습니다.
비디오 아티팩트에는 전체 공격 플로우가 담겨 있습니다. 에이전트가 테스트용 UUID를 시스템 클립보드에 복사한 다음, Cursor 브라우저에서 데모 페이지를 로드하고, UUID를 탈취해 표시하는 버튼을 클릭하는 과정이 녹화되어 있습니다. 또한 클립보드 탈취에 성공한 화면을 스크린샷으로 남기고, 데모 HTML 파일을 레포에 커밋했습니다.
간단한 수정 처리
우리는 클라우드 에이전트에게 정적인 "Read lints" 레이블을 린트 결과에 따라 달라지는 동적 레이블로 교체해 달라고 요청했습니다. 에이전트는 진단이 0개일 때는 "No linter errors", 진단이 N개일 때는 "Found N errors"를 표시하도록 구현했고, 기존 CSS와 일치하도록 스타일도 맞췄습니다.
에이전트는 Cursor 데스크톱 앱에서 두 가지 케이스를 테스트했습니다. 여러 타입 에러가 있는 파일과, 에러가 전혀 없는 깨끗한 파일입니다. 비디오 아티팩트에는 깨끗한 파일의 확장된 그룹에 “No linter errors”가 표시되는지 에이전트가 확인하는 모습이 담겨 있습니다.
UI 테스트
우리는 cursor.com/docs가 모두 제대로 동작하는지 확인하기 위해 클라우드 에이전트를 실행했습니다. 에이전트는 45분 동안 문서 사이트 전체를 꼼꼼하게 살펴보며 점검했습니다. 사이드바, 상단 내비게이션, 검색, 페이지 복사 버튼, 피드백 공유 다이얼로그, 목차, 테마 전환 등 테스트한 모든 기능의 요약을 제공했습니다.
이제 에이전트가 구현의 대부분을 처리할 수 있게 되면서, 우리는 개발자의 역할이 방향을 정하고 무엇을 출시할지 결정하는 쪽에 더 가까워졌다고 느끼고 있습니다.
다음 단계
우리는 에이전트가 PR을 머지하고, 롤아웃을 관리하고, 운영 환경을 모니터링하는 self-driving codebases의 미래를 향해 나아가고 있습니다. 개발자가 에이전트를 사용해 diff를 만드는 데 그치던 세상에서, 에이전트가 테스트를 거친 기능을 엔드투엔드로 직접 배포하는 세상으로 전환될 것입니다.
이 변화를 완전히 실현하려면 툴링, 모델, 상호작용 패턴을 모두 개선해야 합니다. 단기적으로는 다수의 에이전트 간 작업을 조율하고, 과거 실행 기록에서 학습해 경험이 쌓일수록 더 효과적으로 동작하는 모델을 만드는 데 집중하고 있습니다.
cursor.com/onboard에 접속해 Agent가 스스로 설정하고 데모를 녹화하는 과정을 직접 확인해 보세요. 또는 문서에서 더 자세한 내용을 살펴볼 수 있습니다.