AI 코딩 에이전트 4종 완전 비교: Claude Code · Cursor · Copilot · Antigravity
터미널 에이전트부터 IDE·자율 에이전트까지 — 실제 설정·운영·함정까지 한 편에
2025년을 지나면서 "AI 코드 자동완성"이라는 범주는 사실상 해체됐다. 지금 개발자가 마주하는 건 네 가지 서로 다른 제품 형태다. 터미널에서 도는 에이전트(Claude Code), 에디터 자체를 포크한 AI-네이티브 IDE(Cursor), 기존 에디터에 깊게 박힌 인라인 어시스턴트 + 에이전트(GitHub Copilot), 그리고 "에이전트가 주도하고 사람이 검토한다"를 전면에 내세운 에이전트-퍼스트 IDE(Google Antigravity). 같은 작업을 시켜도 어디서 도는지, 컨텍스트를 어떻게 모으는지, 권한 경계를 누가 쥐는지가 전부 다르다.
이 차이는 취향 문제가 아니라 운영 비용·보안 경계·CI 통합 방식을 가른다. 예를 들어 Claude Code는 헤드리스(-p) 모드로 CI에 박을 수 있지만 Cursor는 그게 안 된다. Copilot은 회사 정책(콘텐츠 제외, 조직 정책)을 관리자가 중앙에서 강제할 수 있지만 개인 CLI 도구는 그렇지 않다. Antigravity는 에이전트가 만든 산출물을 "Artifact(작업 계획·스크린샷·검증 리포트)"로 강제 출력해 검토 가능성을 높이는 대신, 더 무거운 워크플로를 요구한다.
이 가이드는 마케팅 문구가 아니라 실제로 무엇을 깔고, 어떻게 설정하고, 어떤 명령으로 돌리고, 어디서 깨지는지를 다룬다. 각 도구의 설정 파일·실행 명령·MCP 연동·권한 모델을 코드 수준으로 보여주고, 마지막에 의사결정 트리와 실측 기반 선택 기준을 제시한다. 모든 가격·모델·기능은 변동성이 크므로, 구체 수치보다 "어떤 축에서 비교해야 하는가"에 초점을 둔다(가격·모델명은 반드시 공식 페이지에서 재확인할 것).
전제: 네 도구 모두 "LLM이 코드를 읽고 쓴다"는 점은 같다. 다른 건 루프를 누가 돌리는가(사람 vs 에이전트), 그 루프가 어디서 도는가(터미널/IDE/클라우드), 권한 게이트를 어디에 두는가다. 비교는 이 세 축으로 한다.
네 도구의 정체성: 같은 LLM, 다른 루프
먼저 범주를 명확히 해야 한다. 네 도구는 "AI 코딩"이라는 한 단어로 묶이지만 제품 형태가 근본적으로 다르다.
| 도구 | 형태 | 실행 위치 | 주도권 | 핵심 강점 |
|---|---|---|---|---|
| Claude Code | 터미널 에이전트(CLI) | 로컬 셸 / CI / SDK | 에이전트(사람이 게이트) | 무인 실행, 스크립트화, MCP, 헤드리스 |
| Cursor | AI-네이티브 IDE (VS Code 포크) | 로컬 에디터 | 사람 주도 + Agent 모드 | 인라인 편집 UX, 멀티파일 컨텍스트, Tab 자동완성 |
| GitHub Copilot | 에디터 확장 + 에이전트 | VS Code / JetBrains / CLI / github.com | 사람 주도 + Agent | 생태계 통합, 조직 정책, 무료 티어 |
| Antigravity | 에이전트-퍼스트 IDE | 로컬 IDE + 에이전트 매니저 | 에이전트 주도 + 검토 | 자율 에이전트, Artifact 검증, 멀티에이전트 |
핵심 통찰: **"루프를 누가 돌리는가"**가 도구를 가른다.
- 사람이 루프를 돌린다: 전통적 자동완성. 사람이 타이핑하고 AI가 다음 토큰을 제안. → Copilot의 인라인, Cursor의 Tab.
- 사람이 루프를 돌리되 AI가 한 스텝을 크게 떠넘는다: "이 함수 리팩터해줘" → AI가 멀티파일 편집 제안 → 사람이 승인. → Cursor Agent, Copilot Edits/Agent.
- AI가 루프를 돌린다: "이 이슈 고쳐줘" → AI가 스스로 파일 읽기·편집·테스트 실행·반복을 수행하고 사람은 결과만 검토. → Claude Code, Antigravity, Copilot coding agent.
이 구분이 중요한 이유는 권한 경계가 루프 위치를 따라가기 때문이다. AI가 루프를 돌리면 "이 명령 실행해도 돼?"라는 게이트가 수십 번 발생한다. 각 도구가 이 게이트를 어떻게 처리하는지가 곧 보안·생산성의 차이다(뒤에서 상세히 다룬다).
함정: "Cursor는 Copilot보다 좋다" 같은 비교는 무의미하다. Cursor의 Tab 자동완성과 Copilot의 인라인은 같은 범주지만, Cursor의 Agent 모드와 Claude Code는 다른 범주다. 같은 범주끼리 비교하라.
Claude Code: 설치부터 첫 실행, 그리고 헤드리스 모드
Claude Code는 Anthropic의 공식 터미널 에이전트다. 에디터가 아니라 셸에서 도는 에이전트라는 점이 정체성이다.
설치 및 인증
# npm 글로벌 설치
npm install -g @anthropic-ai/claude-code
# 프로젝트 디렉터리에서 실행
cd my-project
claude
# 최초 실행 시 브라우저로 OAuth 로그인 (Claude 구독) 또는 API 키
인증은 두 갈래다. **Claude 구독(Pro/Max)**으로 로그인하면 정액제 한도 내에서 돌고, API 키(ANTHROPIC_API_KEY)를 쓰면 토큰 종량제로 돈다. CI에서는 후자가 일반적이다.
대화형 실행
> 이 레포의 인증 미들웨어를 읽고, JWT 만료 검증이 빠진 곳을 찾아서 고쳐줘
Claude Code는 알아서 파일을 Grep/Read하고, 편집하고, 테스트를 돌린다. 파일 쓰기·bash 실행 전에는 권한 프롬프트가 뜬다(이게 사람 게이트다).
헤드리스(무인) 모드 — CI의 핵심
이게 다른 IDE 도구와 가장 크게 갈리는 지점이다. -p(print) 플래그로 한 번 돌고 종료하는 비대화형 실행이 가능하다.
# 단발 실행, 결과를 stdout으로
claude -p "CHANGELOG.md를 최근 커밋 기준으로 업데이트해줘" \
--output-format json
# 파이프 입력 + 권한 자동 승인 (CI 전용, 신중히)
cat error.log | claude -p "이 스택트레이스의 근본 원인을 짚어줘"
--output-format json을 쓰면 결과·비용·세션 ID가 구조화된 JSON으로 나와 후속 스크립트가 파싱할 수 있다. --allowedTools로 허용 도구를 화이트리스트하고, --permission-mode로 권한 모드를 제어한다.
claude -p "테스트 실패 원인 분석" \
--allowedTools "Read,Grep,Bash(npm test:*)" \
--output-format json
프로젝트 메모리: CLAUDE.md
프로젝트 루트의 CLAUDE.md는 매 세션 자동 로드되는 시스템 프롬프트 보강 파일이다. 컨벤션·아키텍처·금지사항을 여기 적으면 매번 설명할 필요가 없다.
# 프로젝트 규칙
- 패키지 매니저는 pnpm. npm 쓰지 말 것
- DB 접근은 반드시 repository 레이어 경유
- 커밋 전 `pnpm lint && pnpm test` 통과 필수
함정: 헤드리스 모드에서
--dangerously-skip-permissions(권한 게이트 전부 우회)는 강력하지만 위험하다. 신뢰할 수 있는 격리 환경(컨테이너)에서만 쓰고, 호스트 셸에서 함부로 쓰지 말 것. 에이전트가rm -rf를 제안할 수 있는 구조다.
Cursor: AI-네이티브 IDE의 설정과 컨텍스트 제어
Cursor는 VS Code를 포크해 AI 기능을 1급 시민으로 박은 에디터다. 기존 VS Code 익스텐션·키바인딩·테마가 대부분 그대로 동작하므로 마이그레이션 비용이 낮다.
세 가지 상호작용 모드
- Tab(자동완성): 멀티라인·멀티커서 예측. 단순 다음-토큰이 아니라 "다음에 네가 할 편집"을 예측한다. 변수명을 바꾸면 관련 위치 수정을 연쇄 제안.
- Inline Edit (
Cmd/Ctrl+K): 선택 범위에 대해 자연어 지시 → diff 제안 → 승인. - Agent / Chat (
Cmd/Ctrl+L): 사이드 패널에서 멀티파일 작업. Agent 모드는 스스로 파일을 찾고 편집하고 터미널 명령을 제안한다.
컨텍스트 제어: @ 심볼
Cursor의 강점은 무엇을 컨텍스트에 넣을지 명시적으로 제어하는 점이다. 채팅에서 @로 참조를 건다.
@Files src/auth/middleware.ts 를 기준으로,
@Folder src/routes 의 모든 핸들러에 인증 가드를 추가해줘
@Files/@Folder: 특정 파일·폴더를 컨텍스트에 고정@Code: 심볼 단위 참조@Docs: 외부 문서 인덱싱(라이브러리 공식 문서 등)@Web: 웹 검색 결과 포함@Git: 커밋·diff 참조
프로젝트 규칙: .cursor/rules
Cursor는 프로젝트별 규칙을 .cursor/rules/ 디렉터리의 .mdc 파일로 관리한다(구버전의 단일 .cursorrules를 대체). 규칙마다 적용 범위(glob)를 지정할 수 있다.
# .cursor/rules/typescript.mdc
---
description: TypeScript 코딩 규칙
globs: ["**/*.ts", "**/*.tsx"]
alwaysApply: false
---
- any 타입 금지, unknown + 타입 가드 사용
- 함수는 named export, default export 지양
- 에러는 throw 대신 Result<T, E> 패턴
glob에 매칭되는 파일을 편집할 때만 해당 규칙이 컨텍스트에 주입되므로, 거대한 단일 규칙 파일보다 토큰 효율이 좋다.
코드베이스 인덱싱
Cursor는 프로젝트를 임베딩으로 인덱싱해 시맨틱 검색을 제공한다. 큰 레포에서 "이 기능 구현이 어디 있지?"를 의미 기반으로 찾는다. .cursorignore로 인덱싱 제외를 지정한다(.gitignore 문법).
# .cursorignore
node_modules/
dist/
*.log
secrets/
함정:
.cursorignore는 인덱싱·AI 접근에서 제외할 뿐, 민감 파일을 완벽히 차단하는 보안 경계가 아니다. API 키·시크릿은 애초에.env로 빼고 git에서도 제외하라. AI가 채팅에서 명시적으로 참조하면 ignore 여부와 무관하게 읽힐 수 있는 경로가 존재할 수 있다.
GitHub Copilot: 인라인부터 coding agent까지, 그리고 조직 정책
Copilot은 가장 넓은 생태계 통합을 가진 도구다. VS Code, JetBrains, Neovim, Visual Studio, github.com, CLI까지 같은 구독으로 동작한다. 무료 티어가 있어 진입 장벽이 가장 낮다.
표면별 기능
- 인라인 자동완성: 타이핑 중 회색 고스트 텍스트.
Tab으로 수락. - Copilot Chat: 에디터 내 채팅.
@workspace,@terminal,@vscode등 참여자(participant)로 컨텍스트 범위 지정. - Copilot Edits: 멀티파일 편집을 채팅에서 지시 → 여러 파일 diff 일괄 제안.
- Agent 모드: VS Code 내 자율 에이전트. 작업을 받아 파일 탐색·편집·터미널 실행·반복.
- Coding agent: github.com에서 이슈를 할당하면 클라우드에서 에이전트가 돌아 PR을 생성. 완전 비동기.
채팅 컨텍스트 참조
@workspace 결제 모듈에서 환불 로직이 어디에 있는지 찾아줘
#file:src/payment/refund.ts 이 함수의 엣지케이스를 테스트로 작성해줘
@workspace: 전체 워크스페이스를 컨텍스트로(인덱싱 기반)#file:/#selection: 특정 파일·선택 영역 변수/fix,/tests,/explain: 슬래시 커맨드
사용자 지침: copilot-instructions.md
.github/copilot-instructions.md에 프로젝트 지침을 적으면 Chat·Edits에 자동 주입된다.
<!-- .github/copilot-instructions.md -->
- 이 프로젝트는 React 18 + TypeScript. 클래스 컴포넌트 금지
- 상태관리는 Zustand. Redux 도입 제안하지 말 것
- 테스트는 Vitest + Testing Library
조직 정책 — 엔터프라이즈의 결정적 차이
Copilot이 개인 CLI 도구와 가장 크게 갈리는 지점은 관리자가 중앙에서 정책을 강제할 수 있다는 것이다.
- 콘텐츠 제외(Content exclusion): 특정 레포·경로·파일 패턴을 Copilot이 아예 보지 못하게 조직/레포 설정에서 차단. 시크릿 디렉터리, 라이선스 민감 코드 등.
- 퍼블릭 코드 매칭 필터: 공개 코드와 일치하는 제안을 차단하는 정책을 조직 단위로 on.
- 모델 선택 제한: 조직이 허용한 모델만 쓰도록 제한.
# 콘텐츠 제외는 레포 설정 또는 조직 설정 UI에서 경로 패턴으로 지정
# 예시 패턴 (Settings > Copilot > Content exclusion)
"*":
- "secrets/**"
- "**/*.env"
- "config/credentials.yml"
이건 "개발자가 알아서 조심"이 아니라 조직이 강제하는 경계라는 점에서 규제 산업·대기업에 결정적이다.
함정: 콘텐츠 제외는 인라인 자동완성·채팅 컨텍스트에는 적용되지만, 제외 정책의 적용 범위·전파 시점은 표면마다 차이가 있을 수 있다. 시크릿을 "제외 설정했으니 안전"이라고 믿지 말고, 시크릿 자체를 코드베이스에서 분리하는 것이 1차 방어선이다.
Google Antigravity: 에이전트-퍼스트 IDE와 Artifact 검증
Antigravity는 Google이 2025년 11월 공개한 에이전트-퍼스트 개발 플랫폼이다. "코드를 타이핑하는 에디터"가 아니라 "에이전트를 지휘하는 콘솔"이라는 포지셔닝이다. Gemini 모델을 백엔드로 쓰며, VS Code 기반 IDE와 별도의 Agent Manager 뷰를 제공한다.
두 가지 표면
- Editor 뷰: 익숙한 VS Code 스타일 편집기. 인라인 어시스트·채팅 제공.
- Agent Manager 뷰: 여러 에이전트를 동시에 띄워 작업을 분배하고 진행 상황을 추적하는 대시보드. "미션 컨트롤" 형태로, 각 에이전트가 무엇을 하고 있는지·무엇을 끝냈는지를 한눈에 본다.
Artifact: 검증 가능성을 강제하는 출력
Antigravity의 차별점은 Artifact다. 에이전트가 작업을 수행하면 그냥 코드만 바꾸는 게 아니라, 검토 가능한 산출물을 강제로 남긴다.
- Task list / 작업 계획: 무엇을 어떤 순서로 할지
- Implementation plan: 구현 접근
- Walkthrough / 검증 리포트: 무엇을 바꿨고 어떻게 확인했는지
- 브라우저 스크린샷·녹화: 웹 앱이면 실제로 브라우저를 띄워 동작을 캡처
핵심 철학은 "에이전트를 신뢰하되 검증하라(trust but verify)"다. 사람이 매 편집을 보는 대신, 에이전트가 자기 작업의 증거를 제출하게 만들어 검토 비용을 낮춘다. Claude Code가 "권한 프롬프트"로 게이트를 거는 것과 달리, Antigravity는 "산출물 검토"로 게이트를 건다.
멀티에이전트 워크플로
Agent Manager에서 여러 에이전트에 독립 작업을 분배할 수 있다. 예: 에이전트 A는 백엔드 API, 에이전트 B는 프론트 UI, 에이전트 C는 테스트 작성을 병렬로. 각자 자기 브랜치/작업공간에서 돌고, 결과를 Artifact로 제출한다.
브라우저 통합
Antigravity는 에이전트가 브라우저를 직접 구동해 웹 앱을 실제로 클릭·검증하는 기능을 강조한다. "로그인 폼 고쳐줘" → 에이전트가 코드를 고치고 → 브라우저를 띄워 실제 로그인을 시도하고 → 스크린샷을 Artifact로 첨부.
함정: 에이전트-퍼스트 워크플로는 작은 작업에는 과하다. "이 한 줄 오타 고쳐줘"에 작업 계획·검증 리포트를 받는 건 오버헤드다. Antigravity는 "여러 파일에 걸친 기능 구현", "반복적 디버그-검증 루프"처럼 에이전트가 진짜 가치를 내는 큰 작업에서 빛난다. 또한 신생 제품이므로 안정성·쿼터·모델 가용성이 빠르게 바뀐다 — 프로덕션 워크플로에 박기 전 현재 상태를 직접 확인하라.
권한과 보안 경계: 에이전트가 루프를 돌 때 누가 게이트를 쥐는가
AI가 자율 루프를 돌면 "파일 써도 돼?", "이 명령 실행해도 돼?"가 수십 번 발생한다. 각 도구가 이 게이트를 처리하는 방식이 보안의 핵심이다.
게이트 모델 비교
| 도구 | 게이트 방식 | 범위 제어 | 무인 실행 시 |
|---|---|---|---|
| Claude Code | 도구 호출 전 권한 프롬프트 | --allowedTools 화이트리스트, .claude/settings.json | --dangerously-skip-permissions(격리 환경 전용) |
| Cursor | 터미널 명령 실행 전 확인, 자동 승인 옵션 | 에이전트 설정에서 auto-run 허용/차단 | auto-run 켜면 위험 |
| Copilot | Agent 모드 터미널 명령 확인 | 조직 콘텐츠 제외 정책 | coding agent는 격리 클라우드 환경 |
| Antigravity | Artifact 검토 + 명령 확인 | 워크스페이스/브랜치 격리 | 멀티에이전트 격리 작업공간 |
Claude Code의 도구 권한 설정
.claude/settings.json으로 프로젝트 단위 권한을 선언한다. 화이트리스트 방식이라 명시적으로 허용한 것만 자동 실행된다.
{
"permissions": {
"allow": [
"Read",
"Grep",
"Bash(npm run test:*)",
"Bash(git diff:*)"
],
"deny": [
"Bash(rm:*)",
"Bash(curl:*)"
]
}
}
Bash(npm run test:*)처럼 명령 패턴을 좁게 허용하면, npm run test는 자동 실행되지만 npm install evil-pkg는 여전히 사람 승인을 거친다. deny가 allow보다 우선한다.
공통 보안 원칙
- 시크릿은 코드베이스에서 분리한다. ignore 설정에 의존하지 말 것 — 모든 도구에서 1차 방어선은 "애초에 AI가 볼 게 없게 만드는 것".
- 무인 실행은 격리 환경에서. CI 러너, Docker 컨테이너, 일회용 작업공간. 호스트 셸에서 권한 우회 모드를 쓰지 말 것.
- 에이전트 출력은 항상 리뷰. 자율 에이전트가 만든 코드는 사람이 PR 리뷰하듯 본다. 특히 의존성 추가·외부 네트워크 호출·파일 삭제.
- 프롬프트 인젝션을 경계한다. 에이전트가 읽는 외부 콘텐츠(이슈 본문, 웹 페이지, 의존성 README)에 "이 명령을 실행하라"는 악성 지시가 숨어 있을 수 있다. 외부 콘텐츠를 읽는 에이전트에 자동 명령 실행 권한을 주는 조합이 가장 위험하다.
함정: 가장 흔한 사고는 "편의를 위해 권한 게이트를 다 끄고" 호스트에서 돌리다 에이전트가 의도치 않은 파괴적 명령을 실행하는 것이다. 편의와 안전의 트레이드오프를 환경 격리로 해소하라 — 컨테이너 안에서는 게이트를 풀어도 블래스트 반경이 제한된다.
MCP 연동: 도구를 외부 시스템에 연결하기
Model Context Protocol(MCP)은 LLM 에이전트가 외부 도구·데이터 소스에 표준 방식으로 연결하는 오픈 프로토콜이다. Claude Code, Cursor, Copilot 모두 MCP 서버를 클라이언트로 붙일 수 있어, "에이전트가 GitHub 이슈를 읽고, Postgres를 쿼리하고, Slack에 알림을 보내는" 식의 확장이 가능하다.
Claude Code에서 MCP 추가
# stdio 방식 MCP 서버 추가 (로컬 프로세스)
claude mcp add postgres -- npx -y @modelcontextprotocol/server-postgres \
postgresql://localhost/mydb
# HTTP/SSE 방식 원격 MCP 서버
claude mcp add --transport http linear https://mcp.linear.app/sse
# 등록된 서버 확인
claude mcp list
프로젝트 단위로 공유하려면 .mcp.json을 레포에 커밋한다(단, 시크릿이 들어가는 설정은 커밋하지 말 것).
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/data"]
}
}
}
Cursor에서 MCP
Cursor는 .cursor/mcp.json(프로젝트) 또는 글로벌 설정에서 MCP 서버를 등록한다.
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": { "GITHUB_TOKEN": "..." }
}
}
}
등록 후 Agent/Chat에서 해당 도구를 호출할 수 있게 된다.
Copilot / VS Code에서 MCP
VS Code의 Agent 모드는 .vscode/mcp.json 또는 사용자 설정에서 MCP 서버를 붙인다. 입력 변수로 시크릿을 안전하게 주입하는 메커니즘을 제공한다.
{
"servers": {
"playwright": {
"command": "npx",
"args": ["-y", "@playwright/mcp@latest"]
}
}
}
공통 운영 주의
- MCP 서버는 제3자 코드다. 신뢰할 수 없는 MCP 서버를 붙이는 건 신뢰할 수 없는 의존성을 까는 것과 같다 — 에이전트의 권한으로 임의 동작을 할 수 있다.
- 시크릿은 환경 변수/입력 변수로 주입하고, MCP 설정 파일에 평문으로 박아 커밋하지 말 것.
- 도구 과다는 컨텍스트를 잡아먹는다. 에이전트에 30개 MCP 도구를 붙이면 도구 스키마만으로 토큰이 소진되고 선택 정확도가 떨어진다. 작업에 필요한 도구만 활성화하라.
함정: MCP 서버가 반환하는 데이터(예: 외부 이슈 본문)에 프롬프트 인젝션이 숨어 있을 수 있다. "MCP로 외부 데이터를 읽는 에이전트" + "자동 명령 실행 권한" 조합은 앞 섹션에서 말한 가장 위험한 패턴이다. 외부 데이터를 읽는 도구와 부수효과를 내는 도구의 권한을 분리하라.
컨텍스트 관리: 큰 레포에서 무엇을 모델에 넣는가
AI 코딩 도구의 품질은 결국 **"올바른 컨텍스트를 모델에 넣었는가"**로 결정된다. 같은 모델이라도 컨텍스트 전략이 다르면 결과가 갈린다.
도구별 컨텍스트 수집 전략
| 도구 | 자동 수집 | 명시적 제어 | 큰 레포 대응 |
|---|---|---|---|
| Claude Code | 에이전트가 Grep/Read로 능동 탐색 | CLAUDE.md, 직접 파일 지정 | 에이전트가 필요한 만큼만 읽음(토큰 효율) |
| Cursor | 코드베이스 임베딩 인덱싱 | @Files/@Folder/@Code | 시맨틱 검색 + 명시 참조 |
| Copilot | @workspace 인덱싱 | #file, #selection | 워크스페이스 인덱스 |
| Antigravity | 에이전트 능동 탐색 | 작업 지시 | 에이전트가 탐색 |
핵심 분기: 인덱싱 기반(Cursor, Copilot) vs 능동 탐색 기반(Claude Code, Antigravity).
- 인덱싱 기반: 레포를 미리 임베딩해두고 시맨틱 검색으로 관련 코드를 끌어온다. 빠르지만, 인덱스가 stale하거나 임베딩이 못 잡는 관계가 있으면 놓친다.
- 능동 탐색 기반: 에이전트가 그때그때
grep/read로 파일을 뒤진다. 정확하지만 토큰·시간을 더 쓴다.
실전 패턴: 컨텍스트를 좁혀라
어느 도구든 "전체 레포를 다 넣어줘"는 나쁜 전략이다. 토큰 한도에 닿고, 노이즈가 신호를 묻는다.
# 나쁨: 막연한 지시
"이 버그 고쳐줘"
# 좋음: 컨텍스트를 좁히고 증거를 준다
"@Files src/payment/charge.ts 의 chargeCard 함수에서
금액이 음수일 때 검증이 빠져 있어. 음수/0 검증을 추가하고
@Files tests/payment.test.ts 에 테스트 케이스를 더해줘"
프로젝트 메모리 파일을 활용하라
각 도구는 프로젝트 규칙 파일을 갖고 있다. 이걸 잘 쓰면 매번 컨텍스트를 설명할 필요가 없다.
| 도구 | 파일 |
|---|---|
| Claude Code | CLAUDE.md |
| Cursor | .cursor/rules/*.mdc |
| Copilot | .github/copilot-instructions.md |
여기엔 아키텍처 결정·금지사항·컨벤션·자주 틀리는 함정을 적는다. "패키지 매니저는 pnpm", "any 타입 금지", "DB는 repository 레이어 경유" 같은 것들. 거대한 문서보다 간결하고 실행 가능한 규칙 위주로.
함정: 규칙 파일이 너무 길면 역효과다. 매 요청에 주입되므로 토큰을 먹고, 모순된 규칙이 섞이면 모델이 혼란스러워한다. Cursor의 glob 기반 규칙처럼 적용 범위를 좁힐 수 있으면 좁혀라. 그리고 "CRITICAL: YOU MUST..." 같은 과격한 표현은 최신 모델에서 오히려 과잉 발동을 부른다 — 담백하게 "~할 때 ~하라"로 쓰는 게 낫다.
CI·자동화 통합: 무인 실행이 가능한가
에디터 도구와 에이전트 도구가 가장 크게 갈리는 실무 지점은 **"사람 없이 파이프라인에서 돌릴 수 있는가"**다.
무인 실행 가능 여부
| 도구 | 무인 실행 | 방식 |
|---|---|---|
| Claude Code | O (1급 기능) | claude -p, SDK, GitHub Action |
| Copilot coding agent | O | github.com 이슈 할당 → 클라우드 에이전트 → PR |
| Cursor | 제한적 | 주로 인터랙티브, 별도 백그라운드 에이전트 기능 |
| Antigravity | 부분적 | 에이전트 매니저 기반, 비동기 작업 |
Claude Code를 GitHub Actions에 박기
Claude Code는 헤드리스 모드 덕분에 CI 통합이 직관적이다. 공식 GitHub Action을 쓰거나 직접 호출한다.
# .github/workflows/claude-review.yml
name: Claude PR Review
on:
pull_request:
types: [opened, synchronize]
jobs:
review:
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: write
steps:
- uses: actions/checkout@v4
- name: Run Claude review
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
run: |
npm install -g @anthropic-ai/claude-code
git diff origin/${{ github.base_ref }}...HEAD > /tmp/pr.diff
cat /tmp/pr.diff | claude -p \
"이 diff를 리뷰해. 버그·보안 이슈만 간결히 지적. 없으면 'LGTM'" \
--allowedTools "Read,Grep" \
--output-format json > review.json
격리된 CI 러너이므로 --allowedTools로 읽기 전용 도구만 허용하면 안전하게 돌릴 수 있다.
Copilot coding agent의 비동기 워크플로
Copilot의 coding agent는 다른 접근이다. github.com에서 이슈를 에이전트에 할당하면, 클라우드의 격리 환경에서 에이전트가 작업해 드래프트 PR을 연다. CI나 스크립트가 아니라 "이슈 → PR" 자동화에 가깝다.
# 이슈에 코파일럿 할당 → 에이전트가 브랜치 생성, 작업, 드래프트 PR 생성
# 사람은 PR을 리뷰하고 추가 지시를 코멘트로 전달
자동화 설계 원칙
- 읽기 전용부터 시작한다. PR 리뷰·이슈 분류처럼 부수효과 없는 작업이 무인 자동화의 안전한 진입점.
- 출력은 구조화(
--output-format json)해 후속 스텝이 파싱하게. - 쓰기 작업은 PR로. 에이전트가 직접 main에 푸시하지 않고 PR을 열게 해 사람 리뷰 게이트를 남긴다.
- 비용 모니터링. 무인 루프는 토큰을 빠르게 태운다. 종량제 API라면 작업당 토큰 상한을 두고, 폭주 방지 장치(타임아웃·최대 반복)를 건다.
함정: 무인 자동화에서 가장 흔한 실패는 에이전트가 컨텍스트 부족으로 헛다리를 짚는 것이다. 인터랙티브에서는 사람이 즉시 교정하지만 무인에서는 그대로 진행된다. 무인 작업일수록 첫 지시에 전체 명세를 충분히 담고(점진적으로 풀어놓지 말고), 검증 가능한 종료 조건(테스트 통과 등)을 명시하라.
비용·모델·라이선스: 어디에 돈이 새는가
네 도구는 과금 구조가 근본적으로 다르다. 이걸 모르고 쓰면 청구서에서 놀란다.
과금 모델 비교
| 도구 | 기본 과금 | 무인/대량 작업 |
|---|---|---|
| Claude Code | Claude 구독(정액) 또는 API 토큰 종량 | API 종량이라 사용량=비용 직결 |
| Cursor | 월 구독(요청/사용량 기반 티어) | 구독 한도 내, 초과분 별도 |
| Copilot | 월 구독 + 무료 티어 | premium request 카운트 기반 |
| Antigravity | (출시 초기) 쿼터/무료 제공 단계 | 빠르게 변동 |
핵심 분기: 정액 구독 vs 토큰 종량.
- 구독형(Cursor, Copilot): 예측 가능한 월 비용. 단, "무제한"이 아니라 요청 수·premium 모델 사용에 한도가 있고 초과 시 과금되거나 느려진다.
- 종량형(Claude Code API): 쓴 만큼 낸다. 무인 루프·대량 작업에서 비용이 선형으로 늘어나므로 반드시 상한과 모니터링을 걸어야 한다. (Claude 구독으로 Claude Code를 쓰면 정액 한도 내에서 돈다.)
비용을 줄이는 실전 기법
- 작업에 맞는 모델 선택. 모든 작업에 최고 성능 모델을 쓸 필요는 없다. 단순 분류·포맷팅은 빠르고 싼 모델로, 복잡한 설계·디버그만 강한 모델로. 도구가 모델 선택을 허용하면 활용하라.
- 컨텍스트를 좁힌다. 토큰 비용은 입력에서 대부분 발생한다. 전체 레포를 매번 넣지 말고 관련 파일만.
- 프롬프트 캐싱 활용. 반복되는 큰 컨텍스트(시스템 프롬프트, 대형 문서)는 캐시되면 입력 비용이 크게 준다. API 직접 호출 시 특히 효과적.
- 무인 루프에 가드레일. 최대 반복 횟수, 타임아웃, 토큰 상한.
라이선스·코드 출처 리스크
AI 생성 코드의 출처·라이선스 리스크는 도구마다 처리가 다르다.
- Copilot: 공개 코드와 일치하는 제안을 차단하는 필터를 조직/개인이 켤 수 있다. 일치 시 출처 참조를 보여주는 기능도 있다.
- Cursor / Claude Code / Antigravity: 정책은 각 제공자의 약관을 따른다. 생성 코드가 특정 오픈소스와 동일하면 라이선스 의무가 따라올 수 있다.
순수 AI 생성물의 저작권 귀속은 법적으로 불확실한 영역이다(관할마다 다름). 상용 제품에 AI 생성 코드를 대량 투입한다면 법무 검토가 필요하다.
함정: 종량제 무인 에이전트를 "한 번 돌려보자"고 가드 없이 켜뒀다가 루프가 폭주해 수십 달러가 순식간에 나가는 사고가 흔하다. 첫 무인 실행은 반드시 토큰/반복 상한을 걸고, 작은 작업으로 비용 곡선을 실측한 뒤 확장하라.
어떤 도구를 언제 쓸까: 의사결정 트리와 조합 전략
결론은 "하나만 골라라"가 아니다. 실무자들은 보통 2~3개를 역할별로 병행한다. 선택 기준을 정리한다.
의사결정 트리
주된 작업이 무엇인가?
│
├─ 타이핑하며 인라인 자동완성이 핵심
│ ├─ 무료로 시작하고 싶다 → GitHub Copilot
│ └─ 자동완성 UX가 최우선 → Cursor (Tab)
│
├─ IDE 안에서 멀티파일 편집을 사람이 주도
│ ├─ VS Code 생태계 유지 + 조직 정책 필요 → Copilot
│ └─ AI-네이티브 편집 경험 우선 → Cursor
│
├─ 에이전트가 자율적으로 작업 (사람은 검토)
│ ├─ 터미널/CI/스크립트에서 무인 실행 → Claude Code
│ ├─ 이슈→PR 비동기 자동화 (github.com) → Copilot coding agent
│ └─ 멀티에이전트 + 검증 산출물 중심 → Antigravity
│
└─ CI 파이프라인에 박아 무인 실행
└─ Claude Code (-p 헤드리스) 또는 Copilot coding agent
역할별 조합 (실무 패턴)
흔한 스택은 이렇다:
- 에디터 안에서의 일상 코딩: Cursor 또는 Copilot. 인라인 자동완성 + 사람 주도 멀티파일 편집.
- 큰 작업·리팩터·무인 자동화: Claude Code. 터미널에서 에이전트에 위임, CI에서 PR 리뷰.
- 이슈 백로그 처리: Copilot coding agent. 잡무성 이슈를 비동기로 PR화.
- 검증이 중요한 기능 구현: Antigravity. Artifact로 작업 근거를 남겨 검토.
선택 시 던질 질문 5개
- 무인 실행이 필요한가? Yes면 Claude Code(CLI/CI) 또는 Copilot coding agent(이슈→PR)가 거의 강제된다. 순수 IDE 도구는 부적합.
- 조직이 중앙 정책(콘텐츠 제외·모델 제한)을 강제해야 하나? Yes면 Copilot의 엔터프라이즈 거버넌스가 앞선다.
- 기존 에디터/생태계를 유지해야 하나? VS Code·JetBrains를 그대로 → Copilot. 에디터 교체 가능 → Cursor/Antigravity.
- 비용 예측 가능성 vs 사용량 직결 중 무엇이 중요한가? 예측 가능 → 구독형(Cursor/Copilot). 정밀 제어·무인 종량 → Claude Code API.
- 작업 단위가 "한 줄~한 함수"인가 "한 기능~한 PR"인가? 전자는 인라인 도구(Cursor/Copilot), 후자는 에이전트(Claude Code/Antigravity).
마지막 원칙
도구보다 워크플로가 먼저다. "어떤 작업을, 누가(사람/에이전트) 루프를 돌며, 어디서(로컬/CI) 실행하고, 어디에 검토 게이트를 둘 것인가"를 먼저 설계하라. 그 설계가 도구를 고른다. 그리고 가격·모델·기능은 빠르게 바뀌므로, 이 가이드의 비교 축은 유지하되 구체 수치·최신 기능은 반드시 각 공식 문서에서 재확인할 것.
함정: "최고의 AI 코딩 도구"를 찾으려는 시도 자체가 함정이다. 범주가 다른 제품들이라 단일 우승자는 없다. 자율 에이전트의 무인 실행과 인라인 자동완성의 타이핑 보조는 애초에 경쟁 관계가 아니다 — 둘 다 쓰는 게 정답인 경우가 많다.