Cook Cursor

AI 코드 편집기 Cursor 내에서 Context 활용하기

앤써니킴 2025. 5. 3. 23:28

AI 기반 코드 편집기 Cursor는 개발 생산성을 높이는 다양한 기능을 제공하며, 그중에서도 컨텍스트(Context) 활용 기능은 매우 중요합니다. 코드베이스 인덱싱, 규칙 설정, @ 심볼 사용, 특정 파일 무시 등을 통해 AI가 코드베이스를 더 정확하게 이해하고 효과적인 지원을 제공하도록 도울 수 있습니다.  Cursor의 컨텍스트 활용 방법을 자세히 알아보겠습니다.

코드베이스 인덱싱 (Codebase Indexing)

더 정확한 코드베이스 관련 답변을 얻기 위해 코드베이스를 인덱싱할 수 있습니다. Cursor는 백그라운드에서 코드베이스의 각 파일에 대한 임베딩을 계산하고 이를 활용하여 답변의 정확도를 향상시킵니다.

  • 자동 인덱싱: 프로젝트를 열면 해당 작업 공간에 대한 인덱싱이 초기화됩니다. 초기 설정 후에는 작업 공간에 추가되는 새 파일을 자동으로 인덱싱하여 코드베이스 컨텍스트를 최신 상태로 유지합니다.
  • 인덱싱 상태 확인: Cursor Settings > Features > Codebase Indexing 에서 현재 상태를 확인할 수 있습니다.
  • 고급 설정: 기본적으로 모든 파일을 인덱싱하지만, 'show settings' 섹션을 확장하여 새 리포지토리에 대한 자동 인덱싱 활성화 여부나 인덱싱 시 무시할 파일을 구성할 수 있습니다.
  • 대규모 모노레포 작업: 수십만 개의 파일이 있는 경우, .cursorignore 파일을 사용하여 각 개발자가 작업하는 폴더 및 경로를 지정하여 인덱싱을 최적화하는 것이 중요합니다. .cursorignore는 전역 .gitignore에 추가하는 것이 좋습니다.


규칙 (Rules)

규칙은 에이전트 모델의 작동 방식을 제어하는 재사용 가능하고 범위가 지정된 지침입니다. 이를 통해 시스템 수준의 지침을 에이전트 및 편집기 내의 [Cmd-K] 단축키로 AI에 제공할 수 있으며, 프로젝트나 사용자 자신을 위한 컨텍스트, 기본 설정 또는 워크플로우를 영구적으로 인코딩하는 방법으로 생각할 수 있습니다.

  • 작동 방식: LLM(대규모 언어 모델)은 완료 사이에 메모리를 유지하지 않습니다. 규칙은 프롬프트 수준에서 지속적이고 재사용 가능한 컨텍스트를 제공하여 이 문제를 해결합니다. 규칙이 적용되면 해당 내용이 모델 컨텍스트 시작 부분에 포함되어 코드 생성, 편집 해석, 워크플로우 지원 등에서 AI에게 일관된 지침을 제공합니다.
  • 규칙 유형:
    • 프로젝트 규칙: .cursor/rules에 저장되며 버전 제어되고 코드베이스 범위로 지정됩니다. 코드베이스 관련 도메인 지식 인코딩, 프로젝트별 워크플로 자동화, 스타일 또는 아키텍처 결정 표준화 등에 사용됩니다.
    • 사용자 규칙: Cursor 환경 전체에 적용되며 설정에서 정의되고 항상 적용됩니다. 응답 언어, 톤 설정, 개인 스타일 선호도 추가 등에 사용됩니다. (MDC 형식이 아닌 일반 텍스트만 지원).
    • .cursorrules (레거시): 여전히 지원되지만, 더 많은 제어, 유연성 및 가시성을 위해 프로젝트 규칙 형식으로 마이그레이션하는 것이 좋습니다.

  • 프로젝트 규칙 구조: 각 규칙 파일은 MDC(.mdc) 형식으로 작성됩니다. 규칙 유형에는 Always(항상 포함), Auto Attached(glob 패턴과 일치하는 파일 참조 시 포함), Agent Requested(AI가 포함 여부 결정, 설명 필요), Manual(@ruleName으로 명시적 호출)이 있습니다. @service-template.ts와 같이 참조된 파일은 규칙이 트리거될 때 추가 컨텍스트로 포함됩니다.
  • 규칙 생성: 'New Cursor Rule' 명령을 사용하거나 Cursor Settings > Rules으로 이동하여 생성할 수 있습니다. 대화 중에 /Generate Cursor Rules 명령을 사용하여 직접 생성할 수도 있습니다.

  • 모범 사례: 좋은 규칙은 집중적이고 실행 가능하며 범위가 지정되어야 합니다. 간결하게 유지하고(500줄 미만 목표), 큰 개념은 여러 규칙으로 나누며, 구체적인 예나 참조 파일을 제공하고, 모호한 지침은 피해야 합니다.
  • 팀 규칙: 현재 프로젝트 간 규칙 공유 기능은 내장되어 있지 않습니다. 공유 규칙을 전용 리포지토리에 저장하고 각 프로젝트의 .cursor/rules 디렉토리에 복사하거나 심볼릭 링크를 생성하여 사용할 수 있습니다.

@ 심볼 (@ Symbols)

Cursor의 입력 상자(Chat(Cmd L), Cmd K 등)에서 @ 심볼을 사용하여 코드, 파일, 문서 및 기타 컨텍스트를 참조할 수 있습니다. @를 입력하면 제안 목록이 포함된 팝업 메뉴가 나타나며, 입력에 따라 가장 관련성 높은 제안만 자동으로 필터링됩니다.

  • @Files: 프로젝트 내 특정 파일을 참조합니다. @ 다음에 파일 이름을 입력하면 @Code 전략 이후에 파일 검색 결과가 표시됩니다. 파일 경로 미리보기를 제공하여 동일한 이름의 파일을 구별하는 데 도움이 됩니다. Chat에서는 파일 내용이 너무 길 경우 관련성에 따라 더 작은 청크로 나누고 순위를 다시 매깁니다. 파일을 기본 사이드바에서 Composer, Chat 또는 Cmd K로 드래그 앤 드롭하여 컨텍스트로 추가할 수도 있습니다.

  • @Folders: 폴더 전체를 컨텍스트로 참조합니다. Agent와 함께 사용하면 디렉토리 내 모든 항목 목록을 첨부하여 Agent가 필요에 따라 독립적으로 폴더 내용을 탐색하고 분석할 수 있습니다.

  • @Code: 특정 코드 섹션을 참조합니다. @Files와 유사하게 코드 내용 미리보기를 제공하여 올바른 코드를 참조하고 있는지 확인할 수 있습니다. 편집기에서 참조할 코드를 선택한 다음 "Add to Chat"(Ctrl/⌘ Shift L) 또는 "Add to Edit"(Ctrl/⌘ Shift K)를 클릭하여 선택한 코드 스니펫을 Chat 입력 상자 또는 현재 활성 Cmd K 프롬프트 표시줄에 추가할 수도 있습니다. 선택한 코드를 새 채팅에 추가하려면 Ctrl/⌘ L을 누릅니다.

  • @Docs: Cursor에 사전 크롤링되고 인덱싱된 타사 문서 또는 사용자 지정 문서를 컨텍스트로 참조합니다. @Docs > Add new doc을 통해 URL을 붙여넣어 사용자 지정 문서를 추가하고 인덱싱할 수 있습니다. 추가된 문서는 Cursor Settings > Features > Docs에서 관리(편집, 삭제, 추가)할 수 있으며, Cursor는 주기적으로 재인덱싱하여 최신 상태를 유지합니다.

  • @Git: Git 커밋, diff 또는 풀 리퀘스트를 프롬프트에 추가합니다 (Chat 전용). diff를 스캔하여 버그나 문제를 찾거나, 현재 diff(@Diff of Working State)를 사용하여 커밋 메시지를 생성하는 데 사용할 수 있습니다.

  • @Web: 사용자의 쿼리 및 제공된 컨텍스트를 기반으로 웹을 검색하여 관련 정보를 추가 컨텍스트로 찾습니다. 최신 정보를 찾거나 여러 웹사이트를 빠르게 스크랩하여 최상의 답변을 찾는 데 유용합니다. Agent 모드에서는 최신 정보나 추가 컨텍스트가 필요할 때 자동으로 웹을 검색합니다.

  • @Link (붙여넣기): 링크를 붙여넣으면 자동으로 "태그"되어 Cursor가 컨텍스트로 방문할 수 있습니다. 링크를 일반 텍스트로 유지하려면 링크를 클릭하고 "Unlink"를 클릭하거나 서식 없이 붙여넣기(Shift 키 누른 상태)를 사용합니다.

  • @Recent Changes: 코드베이스에서 최근 변경된 사항을 자동으로 추적하며, 이러한 수정을 컨텍스트로 전달할 수 있습니다.

  • @Lint Errors: 현재 활성 파일의 모든 린트 오류 및 경고에 대한 컨텍스트를 자동으로 캡처하여 제공합니다 (Agent는 기본적으로 확인 가능).

  • @Definitions: 주변 코드 정의를 Cmd K 컨텍스트에 추가합니다 (Cmd K 전용).

  • @Cursor Rules: 프로젝트에 설정한 프로젝트 규칙 및 지침에 액세스하여 컨텍스트에 명시적으로 적용할 수 있습니다.

  • @Terminal: shell(zsh)를 컨텍스트로 참조하고 실행할 수 있습니다. 

  • @Past Chats: 복잡한 작업 시 이전 대화의 컨텍스트나 결정을 참조하기 위해 이전 채팅의 요약 버전을 컨텍스트로 포함할 수 있습니다.

# 심볼 및 / 명령

  • #Files: # 뒤에 파일 이름을 입력하여 특정 파일에 초점을 맞춥니다. @ 심볼과 함께 사용하여 정밀한 컨텍스트 제어가 가능합니다.

  • /Commands: /를 입력하여 열려 있는 편집기 탭(Open editors: 현재 열려 있는 모든 편집기 탭, Active editors: 일반적으로 레이아웃을 분할하여 여러 편집기를 표시할 때 화면에 보이는 모든 편집기 탭)을 빠르게 참조하고 컨텍스트로 추가합니다.

 

파일 무시하기 (Ignore Files)

Cursor의 AI 기능 및 인덱싱이 특정 파일 및 디렉토리에 액세스하지 못하도록 제어할 수 있습니다.

  • .cursorignore: 루트 디렉토리에 이 파일을 추가하여 무시할 디렉토리와 파일을 지정합니다. 코드베이스 인덱싱, AI 기능(Tab, Chat, ⌘K)의 코드 접근, @ 심볼 참조 등에서 제외됩니다 (단, Chat의 터미널 및 MCP 서버 호출은 현재 제외 불가). .gitignore와 동일한 패턴 매칭 구문을 사용합니다.
  • .cursorindexingignore: 인덱싱에서만 파일을 제외하려면 이 파일을 사용합니다. AI 기능은 여전히 이 파일들에 접근할 수 있습니다.
  • 무시 이유: API 키 등 민감 정보 보안 또는 대규모 코드베이스(모노레포 등)의 성능 및 정확도 향상을 위해 사용됩니다.
  • 기본 무시 및 재정의: .gitignore 파일 및 Cursor의 기본 무시 목록에 있는 파일은 기본적으로 무시됩니다. 무시하지 않으려면 .cursorignore 파일에 ! 접두사를 사용하여 추가합니다.
  • 전역 무시 파일: 사용자 수준 설정을 통해 모든 프로젝트에 적용되는 무시 패턴을 정의할 수 있습니다.
  • 계층적 무시: 설정을 통해 활성화하면 Cursor가 파일 트리 상위로 이동하며 .cursorignore 파일을 검색하여 중첩된 프로젝트 디렉토리에 걸쳐 유연한 구성이 가능합니다.

Cursor의 다양한 컨텍스트 활용 기능을 통해 AI와의 협업을 더욱 효율적으로 만들고 개발 생산성을 높일 수 있습니다.

728x90