Cursor에서 @Codebase를 처음 써본 분들은 신기함을 느껴요. “파일이 수십 개인데 어떻게 전체를 이해하지?” 맞아요, 이게 Cursor가 일반 AI 챗봇과 다른 결정적인 이유예요. Codebase 컨텍스트의 원리를 알면 이 기능을 훨씬 잘 활용할 수 있어요.
일반 AI와 Cursor의 차이
ChatGPT나 Claude에 직접 접속해서 코딩 질문을 하면, AI는 여러분이 붙여넣은 코드만 보고 답해요. 프로젝트의 다른 파일이 어떻게 생겼는지 전혀 몰라요.
Cursor의 @Codebase는 달라요. Cursor는 프로젝트 폴더 전체를 인덱싱해서 벡터 데이터베이스로 만들어요. 그리고 AI에게 질문할 때 관련성 높은 코드 조각들을 자동으로 찾아서 컨텍스트에 포함시켜줘요.
벡터 인덱싱이 무엇인가요
벡터 인덱싱은 코드의 의미를 수치로 변환해서 저장하는 기술이에요. 단어나 코드의 의미를 수백~수천 차원의 숫자 벡터로 표현해요. 그러면 “의미적으로 비슷한 코드”를 빠르게 찾을 수 있어요.
예를 들어 “사용자 인증”에 관한 질문을 하면, Cursor는 auth.ts, middleware.ts, login 컴포넌트 같은 관련 파일들을 자동으로 찾아서 AI의 컨텍스트에 넣어줘요. 어떤 파일이 관련 있는지 여러분이 직접 찾을 필요가 없어요.
@Codebase vs 파일 직접 참조
@Codebase는 Cursor가 알아서 관련 파일을 찾아줘요. 편리하지만 Cursor가 어떤 파일을 선택했는지 항상 명확하지 않아요.
@filename으로 특정 파일을 직접 지정하면 확실하게 그 파일을 참고하게 할 수 있어요. 특정 파일을 기반으로 작업할 때는 직접 지정하는 게 더 확실해요. 예를 들어 “@components/UserCard.tsx와 같은 형식으로 ProductCard 컴포넌트 만들어줘”처럼요.
@Codebase 실전 활용 시나리오
시나리오 1: 버그 추적
로그인 기능이 특정 조건에서만 실패한다면, “@Codebase 로그인 관련 파일을 전부 찾아서 인증 흐름을 추적해줘. 어디서 문제가 생길 수 있는지 알려줘.”라고 요청할 수 있어요. 파일을 하나하나 열지 않아도 AI가 관련 코드를 전부 파악해서 답해줘요.
시나리오 2: 새 기능 추가
기존 스타일에 맞춰 새 컴포넌트를 만들고 싶을 때, “@Codebase 기존 Card 컴포넌트와 같은 스타일로 ProductCard 컴포넌트를 새로 만들어줘.”처럼 요청하면, AI가 현재 프로젝트의 디자인 패턴을 파악해서 일관된 코드를 만들어줘요.
컨텍스트 윈도우의 한계
LLM의 컨텍스트 윈도우는 한 번에 처리할 수 있는 텍스트 양에 한계가 있어요. 프로젝트가 아무리 커도 모든 파일을 한 번에 AI에게 넣을 수 없어요. 그래서 Cursor는 가장 관련성 높은 파일들을 선별해서 넣어요.
이런 이유로 아주 큰 프로젝트에서는 @Codebase가 항상 완벽하게 작동하지 않을 수 있어요. 중요한 파일을 직접 @파일명으로 지정해주는 습관을 들이면 더 정확한 결과를 얻을 수 있어요.
실전 활용 팁
새로운 기능을 추가할 때는 먼저 이렇게 물어보세요. “@Codebase 현재 프로젝트 구조에서 장바구니 기능을 어디에 추가하면 좋을까? 기존 코드 패턴을 유지하면서 구현하는 방법을 알려줘.”
이렇게 하면 Cursor가 기존 코드를 분석하고 일관성 있는 방식으로 새 기능을 만들어줘요. 혼자 처음부터 만드는 것보다 훨씬 자연스럽게 기존 코드와 어우러지는 코드가 나와요.
프로젝트 규모가 커질수록 @Codebase의 가치가 더 커져요. 파일이 100개 이상이 되면 어디에 무엇이 있는지 기억하기 어렵거든요. 그때 @Codebase가 AI의 기억 역할을 대신해줘요. 단, 컨텍스트 윈도우 한계로 매우 큰 프로젝트에서는 관련 파일만 @파일명으로 직접 지정하는 게 더 정확할 수 있어요.
댓글 0