오늘도 공부
Claude Code 2.0 완벽 가이드: AI 코딩 에이전트 200% 활용하기 본문
들어가며
요즘 개발자들 사이에서 가장 핫한 도구가 뭔지 아시나요? 바로 Claude Code입니다. CLI 기반 AI 코딩 에이전트의 대명사가 된 이 도구를 제대로 활용하는 방법을 알려드리겠습니다.
Karpathy가 최근 트위터에서 "AI 도구의 발전 속도를 따라가기 힘들다"고 토로했죠. 하지만 걱정하지 마세요. 이 글을 통해 Claude Code의 핵심 기능들을 체계적으로 이해하고, 여러분의 개발 워크플로우에 바로 적용할 수 있습니다.
"따라가기"보다는 "함께 성장하기"로 마인드를 바꿔보세요. AI 도구로 자신을 **증강(augment)**하는 것이 핵심입니다.
왜 Opus 4.5인가?
2025년은 AI 모델 출시의 해였습니다. OpenAI의 GPT-5 시리즈, Anthropic의 Claude 4.5 시리즈가 쏟아졌죠. 그 중에서도 Opus 4.5가 제 메인 드라이버가 된 이유를 정리하면:
특징 Opus 4.5 GPT-5.2 Codex
| 속도 | 빠름 ⚡ | 상대적으로 느림 |
| 코드 품질 | 우수 | 약간 더 우수 |
| 의사소통 | 탁월한 협업 파트너 | 지시 무시하는 경향 |
| 의도 파악 | 정확함 | 보통 |
핵심 포인트: Opus 4.5는 원시 코딩 능력에서 GPT-5.2보다 약간 뒤처질 수 있지만, 빠른 피드백 루프와 뛰어난 협업 능력 덕분에 실제 개발 경험이 훨씬 좋습니다.
기초 개념 정리 (입문자용)
Claude Code를 제대로 활용하려면 몇 가지 개념을 이해해야 합니다.
1. 컨텍스트 윈도우 (Context Window)
LLM이 한 번에 처리할 수 있는 토큰의 최대량입니다. 쉽게 말해 AI의 작업 메모리죠.
Opus 4.5: 200K 토큰 ≈ 약 15만 단어
GPT-5.2: 400K 토큰 ≈ 약 30만 단어
2. 도구 호출 (Tool Calling)
LLM이 텍스트 생성을 넘어 실제 행동을 수행하는 방식입니다.
# 예시: 날씨 조회 도구
def get_weather(city: str) -> dict:
"""특정 도시의 날씨 정보를 반환"""
return {"temp": 22, "condition": "맑음"}
# LLM이 이 도구를 호출할 수 있음!
3. 에이전트 (Agent)
목표 달성을 위해 능동적으로 도구를 실행하는 LLM입니다.
┌─────────────────────────────────────┐
│ 에이전트 루프 │
├─────────────────────────────────────┤
│ 사용자 입력 │
│ ↓ │
│ LLM 추론 (어떤 도구를 쓸까?) │
│ ↓ │
│ 도구 실행 │
│ ↓ │
│ 결과 확인 → 목표 달성? → 종료 │
│ ↓ (아니면) │
│ 다시 추론... │
└─────────────────────────────────────┘
Claude Code 2.0의 핵심 기능들
1. 문법 강조 (Syntax Highlighting)
2.0.71부터 추가된 기능으로, diff 확인이 훨씬 편해졌습니다.
- const oldFunction = () => { return null; }
+ const newFunction = (data: Data) => {
+ return processData(data);
+ }
2. Ultrathink 모드
어려운 작업이나 Claude가 더 신중하게 생각하길 원할 때 사용합니다.
# 프롬프트에 추가하면 됨
/ultrathink 이 버그의 근본 원인을 분석해줘
3. 컨텍스트 확인
/context # 현재 컨텍스트 사용량 확인
팁: 총 60%에 도달하면 /compact 또는 새 대화 시작을 고려하세요.
4. 체크포인팅 (Checkpointing)
Cursor처럼 이전 상태로 되돌릴 수 있습니다!
Esc + Esc # 빠르게 두 번 누르기
# 또는
/rewind
5. 프롬프트 히스토리 검색
Ctrl + R # 이전 프롬프트 검색 (터미널 backsearch와 동일)
서브 에이전트 완전 정복
Explore 에이전트
읽기 전용 코드베이스 탐색 전문가입니다.
# 기본 사용
"이 프로젝트의 인증 로직을 찾아줘"
# Sonnet 사용 (더 빠른 탐색)
"Sonnet으로 Explore 에이전트 실행해서 API 엔드포인트 찾아줘"
중요: Explore 에이전트는 요약만 반환합니다. 복잡한 작업에서는 Claude가 직접 파일을 읽도록 요청하세요.
"Explore 결과 파일들을 네가 직접 다시 읽어봐"
왜냐하면 attention 메커니즘 때문입니다. 모델이 직접 모든 관련 컨텍스트를 읽어야 더 나은 추론이 가능합니다.
서브 에이전트 종류
타입 용도 컨텍스트 상속
| general-purpose | 복잡한 멀티스텝 작업 | ✅ 전체 상속 |
| Explore | 코드베이스 탐색 | ❌ 새로 시작 |
| Plan | 구현 계획 수립 | ✅ 전체 상속 |
| claude-code-guide | 문서 조회 | ❌ 새로 시작 |
Task Tool 스키마 예시
{
"description": "API 리팩토링 계획",
"prompt": "현재 REST API를 GraphQL로 마이그레이션할 계획을 세워줘",
"subagent_type": "Plan",
"model": "opus"
}
컨텍스트 엔지니어링 심화
토큰 소비 패턴
에이전트는 토큰 먹는 하마입니다. 왜 그런지 봅시다:
컨텍스트 윈도우 상태:
├─ User: "커피숍 랜딩페이지 만들어줘"
│
├─ Assistant: [tool_call: web_search("모던 커피숍 랜딩페이지 디자인")]
├─ Tool 결과: [10개 결과와 스니펫] ← ~1.5K 토큰
│
├─ Assistant: [tool_call: read_file("brand-guidelines.pdf")]
├─ Tool 결과: [추출된 텍스트, 색상, 폰트] ← ~4K 토큰
│
├─ Assistant: "따뜻하고 미니멀한 디자인으로..."
├─ Assistant: [tool_call: create_file("landing-page.html")]
├─ Tool 결과: [성공, 140줄] ← ~50 토큰
│
└─ Total: 단일 작업에 ~6K+ 토큰!
핵심: 도구 호출과 그 결과가 모두 컨텍스트에 추가됩니다. LLM은 상태가 없기(stateless) 때문입니다.
컨텍스트 부패 (Context Rot)
컨텍스트가 길어질수록 LLM의 성능이 저하됩니다.
성능
│
100%├──────╮
│ ╲
│ ╲
50%├────────╲──────
│ ╲
│ ╲____
└───────────────────
컨텍스트 길이
실용적 가이드라인: 유효 컨텍스트는 전체의 50-60% 정도로 생각하세요.
System Reminder 활용
Claude Code는 <system-reminder> 태그를 통해 목표를 반복 주입합니다.
<system-reminder>
현재 작업: API 리팩토링
진행 상태: 3/7 단계 완료
다음 단계: 인증 미들웨어 수정
</system-reminder>
Manus(AI 에이전트 회사)도 비슷한 전략을 씁니다. todo.md를 계속 업데이트하며 목표를 컨텍스트 끝에 배치하죠.
Skills와 Hooks 활용하기
Skills: 온디맨드 전문 지식
Skills는 필요할 때만 로드되는 전문 지식 모듈입니다.
.claude/skills/
└── api-patterns/
└── SKILL.md
SKILL.md 예시:
---
name: api-patterns
description: REST/GraphQL API 설계 패턴과 베스트 프랙티스
---
## API 설계 원칙
1. 리소스 명명 규칙
- 복수형 명사 사용 (/users, /orders)
- 케밥 케이스 (/user-profiles)
2. 버전 관리
- URL 경로: /v1/users
- 헤더: Accept: application/vnd.api+json;version=1
...
Claude가 API 관련 작업을 감지하면 자동으로 이 skill을 로드합니다!
Hooks: 에이전트 라이프사이클 제어
Hooks로 Claude의 동작을 커스터마이징할 수 있습니다.
완료 알림 Hook 예시:
// .claude/hooks/stop.json
{
"command": "afplay /path/to/notification.mp3"
}
재미있는 활용: "더 해"라는 프롬프트를 자동 주입해서 Claude를 계속 돌리기(!)
# Stop hook에 연결
echo "계속해서 다음 작업을 진행해" | claude-code --continue
Skills + Hooks 조합
Skills를 상황에 맞게 주입하는 고급 패턴:
UserPromptSubmit Hook
│
▼
프롬프트 분석
│
▼
관련 Skill 감지
│
▼
<system-reminder>
skill://api-patterns 참조하세요
</system-reminder>
실전 워크플로우
제가 사용하는 방식
- 탐색 단계: Opus 4.5에게 많은 질문을 던집니다
- "이 함수가 왜 이렇게 구현되어 있어?" "이 아키텍처 결정의 트레이드오프는?"
- 실행 단계: /ultrathink와 함께 구체적인 지시
- /ultrathink 다음 변경사항을 적용해줘: 1. UserService에 캐싱 레이어 추가 2. 기존 테스트 유지하면서 새 테스트 추가
- 리뷰 단계: Codex에게 검토 요청
- /review # GPT-5.2 Codex의 코드 리뷰
버려지는 첫 번째 드래프트 전략
복잡한 기능 개발시:
- 새 브랜치 생성
- Claude에게 전체 기능 구현 위임
- 결과물과 내 멘탈 모델 비교
- Claude의 결정/편향 파악
- 이 인사이트로 더 날카로운 프롬프트 작성
- 두 번째 이터레이션 실행
영화 테넷처럼, 역방향으로 배우고 순방향으로 실행합니다.
커스텀 명령어 만들기
Handoff 명령어 예시
컨텍스트가 차면 새 대화로 인계할 때 유용합니다.
<!-- .claude/commands/handoff.md -->
# Handoff Command
현재 세션의 진행 상황을 정리해주세요:
1. 완료된 작업
2. 진행 중인 작업
3. 남은 TODO
4. 중요한 결정사항과 그 이유
5. 다음 세션에서 알아야 할 컨텍스트
결과를 HANDOFF.md 파일로 저장해주세요.
사용법:
/handoff
# 그 다음
/clear
# 새 세션에서
"HANDOFF.md 읽고 이어서 진행해줘"
마무리: 핵심 정리
기능 언제 사용? 팁
| /ultrathink | 어려운 작업, 자기 검토 | 남발 OK |
| /context | 60% 넘으면 확인 | 복잡한 작업 전 체크 |
| /compact | 컨텍스트 정리 | /clear보다 연속성 유지 |
| Explore 에이전트 | 코드베이스 탐색 | Sonnet 사용 권장 |
| Checkpointing | 실수 복구 | Esc+Esc 단축키 |
성장을 위한 3가지 축
- 도구 최신화: 새 기능 꾸준히 익히기
- 도메인 심화: 구현이 빨라진 만큼 설계에 더 투자
- 열린 마음으로 실험: "이건 못하겠지?"라는 선입견 버리기
참고 자료
- Claude Code 공식 문서
- Anthropic: Effective Context Engineering
- Anthropic: Building Effective Agents
- Context Rot 연구
이 글이 도움이 되셨다면, 오늘 하나의 새로운 기능을 직접 사용해보세요. Happy Coding! 🚀
