Claude CLI 가이드

Anthropic 공식 Claude CLI의 모든 기능과 활용법을 마스터하세요.

⚡ 빠른 참조
# macOS / Linux 설치
curl -fsSL https://claude.ai/install.sh | bash

# Windows PowerShell 설치
irm https://claude.ai/install.ps1 | iex

# 또는 패키지 매니저
brew install --cask claude-code   # Homebrew
winget install Anthropic.ClaudeCode  # WinGet

# 로그인 및 시작
claude auth login
claude

# 버전/상태 확인
claude --version
claude doctor

# 도움말
claude --help

소개

Claude CLI (Claude Code)는 Anthropic이 공식 제공하는 커맨드라인 인터페이스로, 터미널에서 직접 Claude와 대화하며 코드를 생성하고 프로젝트를 관리할 수 있습니다.

처음 이해할 핵심
  • 대화형 코딩 도구: 질문만 받는 챗봇이 아니라 프로젝트 폴더를 읽고 수정하는 CLI입니다.
  • 작업 단위 실행: 파일 읽기, 코드 수정, 명령 실행, 결과 요약을 한 세션 안에서 이어서 진행합니다.
  • 검토 루프 중요: 좋은 사용법은 작은 범위 지정 → 실행 → 결과 검토 → 다음 단계 순서를 지키는 것입니다.
1. 목표 입력 "로그인 버그 수정" 범위와 제약 전달 2. Claude CLI 파일 탐색 계획 및 편집 3. 로컬 작업 코드 수정 명령 실행 / 테스트 4. 사용자 검토 diff 확인 추가 지시 또는 종료 필요하면 더 작은 작업으로 다시 요청

그림: Claude CLI의 가장 기본적인 사용 흐름

왜 Claude CLI인가?

특징 설명
공식 도구 Anthropic이 직접 개발 및 유지보수
최신 모델 Opus 4.7, Sonnet 4.6, Haiku 별칭, 1M 컨텍스트 별칭 지원
에이전트 코딩 파일 읽기/쓰기, 명령 실행, Git 통합 등 자율적 코딩
CLAUDE.md 프로젝트 규칙, 코드 스타일, 빌드 명령 등 영구 지침
MCP 통합 Model Context Protocol로 GitHub, Slack 등 외부 서비스 연결
Hooks 파일 편집 후 자동 포매팅, 테스트 실행 등 이벤트 기반 자동화
멀티 플랫폼 CLI, VS Code, JetBrains, Desktop App, Web 등 다양한 환경

설치

방법 1: 공식 설치 스크립트 (권장)

# macOS / Linux
curl -fsSL https://claude.ai/install.sh | bash

# Windows PowerShell
irm https://claude.ai/install.ps1 | iex

# Windows CMD
curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd

# 설치 확인
claude --version

공식 설치 스크립트는 자동 업데이트를 지원합니다.

방법 2: 패키지 매니저

# Homebrew (macOS/Linux)
brew install --cask claude-code

# WinGet (Windows)
winget install Anthropic.ClaudeCode

# npm (공식 지원, 네이티브 바이너리 래핑)
npm install -g @anthropic-ai/claude-code

공식 문서는 네이티브 설치를 권장합니다. Homebrew/WinGet은 수동 업데이트가 필요하고, npm 설치는 내부적으로 네이티브 바이너리를 래핑하는 방식으로 정상 지원됩니다.

시스템 요구사항

  • OS: macOS 13.0+, Ubuntu 20.04+, Windows 10 1809+
  • RAM: 4GB 이상
  • Windows: Git for Windows 필수
  • 셸: Bash, Zsh, PowerShell, CMD 지원

인증 설정

Claude Code는 두 가지 인증 방식을 지원합니다.

방법 1: 대화형 로그인 (권장)

# 브라우저 기반 로그인 — Anthropic/Google/GitHub 계정 사용
claude auth login

# 로그아웃
claude auth logout

# 로그인 상태 확인
claude auth status

Pro/Max/Team/Enterprise 플랜 사용자는 이 방법으로 바로 시작할 수 있습니다.

방법 2: API 키

# macOS/Linux
export ANTHROPIC_API_KEY="sk-ant-api03-xxxxxxx"

# Windows PowerShell
$env:ANTHROPIC_API_KEY = "sk-ant-api03-xxxxxxx"

# 영구 설정 (~/.bashrc 또는 ~/.zshrc에 추가)
echo 'export ANTHROPIC_API_KEY="sk-ant-api03-xxxxxxx"' >> ~/.zshrc
source ~/.zshrc

API 키는 빠른 시작 가이드를 참고하여 발급받으세요.

🔐 보안 주의

API 키는 절대 Git에 커밋하지 마세요! .gitignore에 환경 변수 파일을 추가하세요.

API 키 안전 관리 가이드 →

🧭 Codex 대비 안내

Codex는 OpenAI 계정/키로 시작하며, Claude Code는 로그인 흐름 또는 API 키 인증을 제공합니다.

자세한 흐름은 Codex 가이드를 참고하세요.

기본 사용법

CLI 시작

# Claude CLI 시작
claude

# 특정 디렉토리에서 시작
cd my-project
claude

CLI가 시작되면 대화형 인터페이스가 표시됩니다:

╭────────────────────────────────────────╮
│  Welcome to Claude Code CLI            │
│  Model: sonnet               │
│  Type 'help' for commands              │
╰────────────────────────────────────────╯

💬 You: _

기본 명령어

파일 생성 요청

💬 You: "Python으로 간단한 웹 서버 만들어줘. Flask 사용해서."

🤖 Claude: "Flask 웹 서버를 생성하겠습니다."

# 파일 생성
Created: app.py
Created: requirements.txt
Created: templates/index.html

🤖 Claude: "3개 파일을 생성했습니다.
app.py - Flask 애플리케이션
requirements.txt - 의존성 목록
templates/index.html - 메인 페이지

설치 및 실행:
```
pip install -r requirements.txt
python app.py
```
http://localhost:5000 에서 확인하세요!"

파일 수정 요청

💬 You: "app.py에 /api/hello 엔드포인트 추가해줘. JSON으로 인사말 반환."

🤖 Claude: "app.py를 수정하겠습니다."

# 파일 수정
Modified: app.py

🤖 Claude: "/api/hello 엔드포인트를 추가했습니다:

@app.route('/api/hello')
def hello_api():
    return jsonify({'message': 'Hello from Claude!'})

curl로 테스트:
curl http://localhost:5000/api/hello"

여러 파일 동시 편집

💬 You: "데이터베이스 연동 추가해줘. SQLite 사용하고,
User 모델 만들고, app.py에서 사용하게."

🤖 Claude: "데이터베이스 기능을 추가하겠습니다."

# 여러 파일 생성/수정
Created: models.py
Created: database.py
Modified: app.py
Modified: requirements.txt

🤖 Claude: "SQLite 연동을 완료했습니다:
- models.py: User 모델 정의
- database.py: DB 초기화 및 연결
- app.py: User CRUD 엔드포인트 추가
- requirements.txt: SQLAlchemy 추가"

슬래시 명령어

대화형 세션에서 /로 시작하는 명령어를 사용할 수 있습니다.

명령어 설명
/help 사용 가능한 모든 명령 표시
/clear 대화 히스토리 초기화
/compact 대화 컨텍스트 압축 (토큰 절약)
/config 설정 접근 및 변경
/cost 현재 세션 토큰 사용량 및 비용 조회
/doctor 설치 및 환경 상태 진단
/effort 추론 노력 수준 조정 (low / medium / high / max)
/fast Fast Mode 토글 (Opus 4.7 고속 모드)
/hooks 구성된 hooks 검색 및 확인
/init 프로젝트 CLAUDE.md 자동 생성
/login / /logout Anthropic 계정 로그인/로그아웃
/memory CLAUDE.md, rules, Auto Memory 관리
/model 사용 모델 변경 (opus, sonnet, haiku 등)
/permissions 권한 모드 설정 변경
/plan Plan Mode 진입 (읽기 전용 분석 → 승인 후 실행)
/resume 이전 세션 재개
/review PR 코드 리뷰
/status 현재 세션 정보 표시
/terminal-setup 터미널 단축키 설정 (Shift+Enter 등)
/vim Vim 모드 토글

키보드 단축키

단축키 기능
Ctrl+C 현재 생성 취소
Ctrl+D 세션 종료
Ctrl+L 입력창 초기화
Ctrl+R 명령 기록 역순 검색
Shift+Tab Permission Mode 순환
Esc Esc 변경사항 되돌리기 또는 컨텍스트 요약
Option+P / Alt+P 모델 전환
Option+T / Alt+T Extended Thinking 토글
Option+O / Alt+O Fast Mode 토글

멀티라인 입력

  • Option+Enter — macOS 기본 터미널
  • Shift+Enter — iTerm2, WezTerm, Ghostty, Kitty (/terminal-setup 설정 후)
  • \+Enter — 모든 터미널에서 사용 가능

대화 히스토리

Claude CLI는 현재 세션의 대화 히스토리를 유지합니다. 이전 대화를 참조하여 연속적인 작업이 가능합니다.

💬 You: "React 컴포넌트 만들어줘. Button 컴포넌트."
🤖 Claude: "Button.jsx를 생성했습니다."

💬 You: "이 버튼에 hover 효과 추가해줘."
🤖 Claude: "Button.jsx에 CSS-in-JS로 hover 효과를 추가했습니다."
# "이 버튼"이 Button.jsx를 가리킨다는 것을 컨텍스트로 이해

💬 You: "테스트 코드도 작성해줘."
🤖 Claude: "Button.test.jsx를 생성했습니다."
# Button 컴포넌트에 대한 테스트라는 것을 컨텍스트로 이해

고급 기능

프로젝트 컨텍스트 (CLAUDE.md)

CLAUDE.md는 프로젝트의 영구 지침 파일입니다. Claude Code는 매 세션 시작 시 이 파일을 자동으로 읽어 프로젝트 규칙, 코드 스타일, 아키텍처 등을 이해합니다.

CLAUDE.md 자동 생성

# 프로젝트 루트에서 자동 생성
claude /init

# 또는 수동으로 생성
cat > CLAUDE.md << 'EOF'
# 프로젝트 지시사항

## 코드 스타일
- TypeScript 사용
- ESLint + Prettier 준수
- 함수형 컴포넌트 (React Hooks)

## 네이밍 규칙
- 컴포넌트: PascalCase (예: UserProfile)
- 함수: camelCase (예: getUserData)
- 상수: UPPER_SNAKE_CASE (예: API_BASE_URL)

## 테스트
- Jest + React Testing Library 사용
- 최소 80% 커버리지 유지

## 빌드 & 실행
- `npm run dev` — 개발 서버
- `npm test` — 테스트 실행
EOF

CLAUDE.md 우선순위 계층

우선순위위치용도
1 (최고)관리 정책 (조직 수준)Enterprise 보안 정책
2./CLAUDE.md 또는 ./.claude/CLAUDE.md프로젝트 공통 규칙 (Git 커밋)
3~/.claude/CLAUDE.md사용자 개인 기본 설정
4./.claude.local.md로컬 전용 (gitignored)
5.claude/rules/*.md주제별 규칙 파일

Rules 디렉토리

.claude/rules/에 주제별로 규칙 파일을 분리할 수 있습니다. YAML frontmatter로 특정 경로에만 적용되도록 제한할 수도 있습니다.

# .claude/rules/frontend.md
---
paths: ["src/components/**/*.tsx", "src/hooks/**/*.ts"]
---

- React 함수형 컴포넌트만 사용
- styled-components 대신 Tailwind CSS 사용
- 모든 props에 TypeScript 인터페이스 정의

설정 파일 (settings.json)

settings.json으로 도구 권한, 모델, 환경 변수 등을 설정할 수 있습니다.

// .claude/settings.json (프로젝트 — Git 커밋)
// .claude/settings.local.json (로컬 — gitignored)
// ~/.claude/settings.json (사용자 전역)
{
  "model": "sonnet",
  "permissions": {
    "allow": ["Bash(git *)", "Bash(npm test)", "Read"],
    "deny": ["Bash(rm -rf *)"]
  }
}

Auto Memory

Claude Code는 대화에서 배운 내용(빌드 명령, 선호도, 버그 원인 등)을 자동으로 ~/.claude/projects/<project>/memory/에 저장합니다. /memory 명령으로 관리할 수 있습니다.

멀티파일 편집

Claude CLI는 한 번의 요청으로 여러 파일을 동시에 생성하거나 수정할 수 있습니다.

💬 You: "사용자 인증 시스템 만들어줘.
- 회원가입, 로그인, 로그아웃 API
- JWT 토큰 사용
- bcrypt로 비밀번호 해싱
- Express + MongoDB

필요한 모든 파일 생성해줘."

🤖 Claude: "인증 시스템을 생성하겠습니다."

# 여러 파일 동시 생성
Created: src/models/User.js
Created: src/routes/auth.js
Created: src/middleware/auth.js
Created: src/utils/jwt.js
Created: src/config/database.js
Modified: src/app.js
Modified: package.json

🤖 Claude: "인증 시스템을 완성했습니다:
- User 모델 (MongoDB 스키마)
- 인증 라우트 (회원가입/로그인/로그아웃)
- JWT 미들웨어 (토큰 검증)
- 비밀번호 해싱 (bcrypt)
- 데이터베이스 연결 설정

환경 변수 설정 (.env):
```
MONGO_URI=mongodb://localhost:27017/myapp
JWT_SECRET=your-secret-key
```

테스트:
```
npm install
npm run dev
```"

스트리밍 응답

Claude CLI는 기본적으로 스트리밍 모드로 작동하여, 응답이 생성되는 즉시 표시됩니다. 긴 응답도 기다리지 않고 실시간으로 확인할 수 있습니다.

MCP 통합

Model Context Protocol (MCP) 서버를 연동하여 Claude에게 외부 도구 접근 권한을 부여할 수 있습니다. 설정 파일은 스코프별로 위치가 다릅니다.

스코프파일 위치용도
로컬.mcp.json프로젝트 루트 (gitignored)
프로젝트.claude/.mcp.json프로젝트 공유 (Git 커밋)
사용자~/.claude/.mcp.json전역 MCP 서버
// .mcp.json — MCP 서버 설정
{
  "mcpServers": {
    "github": {
      "type": "http",
      "url": "http://localhost:3000"
    },
    "filesystem": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/project"]
    },
    "slack": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@anthropic/mcp-server-slack"],
      "env": {
        "SLACK_TOKEN": "${SLACK_TOKEN}"
      }
    }
  }
}

CLI 플래그로 직접 MCP 설정 파일을 지정할 수도 있습니다:

claude --mcp-config ./my-mcp.json

MCP 가이드 →

CLI 플래그 레퍼런스

Claude Code CLI는 다양한 플래그로 동작을 제어할 수 있습니다.

기본 실행

claude                          # 대화형 세션 시작
claude "task description"        # 초기 프롬프트와 함께 시작
claude -p "query"               # 비대화형 모드 (print, 즉시 종료)
claude -c                       # 최근 대화 재개 (continue)
claude -r "session-name"        # 특정 세션 재개 (resume)

모델 및 추론

claude --model opus             # Opus 4.7 사용
claude --model sonnet           # Sonnet 4.6 사용
claude --model haiku            # Haiku 사용
claude --model opus[1m]         # Opus with 1M context window
claude --effort high            # 추론 노력 수준 (low/medium/high/max)

권한 및 보안

claude --permission-mode plan         # Plan Mode 시작
claude --permission-mode acceptEdits  # 파일 편집 자동 승인
claude --permission-mode auto         # Auto Mode (분류기 기반)
claude --permission-mode bypassPermissions  # 모든 권한 무시 (주의!)

도구 및 자동화

claude --allowedTools "Bash(git *)"  # 도구 사전 승인
claude --disallowedTools "Bash"     # 도구 비활성화
claude --mcp-config ./mcp.json       # MCP 서버 로드
claude --max-turns 5                # 최대 에이전트 턴 제한
claude --max-budget-usd 5.00        # 최대 비용 한도
claude --output-format json          # JSON 출력 (자동화용)
claude --output-format stream-json   # 스트리밍 JSON 출력

워크트리 및 추가 디렉토리

claude -w feature-auth          # Git worktree 생성 후 시작
claude --worktree               # 자동 이름으로 worktree 생성
claude --add-dir ../shared-lib  # 추가 작업 디렉토리 지정

권한 모드

Claude Code는 도구 실행 시 권한을 관리하는 여러 모드를 제공합니다.

모드 파일 편집 명령 실행 사용 시점
default 매번 확인 매번 확인 기본값, 안전한 작업
acceptEdits 자동 승인 매번 확인 파일 편집 신뢰 시
plan 계획만 (실행 안 함) 읽기 전용 분석 및 설계 단계
auto 분류기 판단 분류기 판단 자율 실행 (Team/Enterprise)
bypassPermissions 자동 자동 CI/CD 파이프라인 전용
# 실행 시 모드 지정
claude --permission-mode plan

# 세션 중 Shift+Tab으로 모드 순환

# settings.json에서 기본값 설정
# "defaultMode": "acceptEdits"

Hooks 시스템

Hooks는 특정 이벤트 발생 시 셸 명령을 자동 실행하는 기능입니다. 코드 포매팅, 린팅, 알림 등을 자동화할 수 있습니다.

주요 Hook 이벤트

이벤트시점활용 예시
PreToolUse도구 실행 전특정 명령 차단, 검증
PostToolUse도구 실행 후 (성공)자동 포매팅, 린팅
Notification알림 전송 시Slack/이메일 알림
StopClaude 응답 완료자동 테스트 실행
SessionStart세션 시작/재개환경 초기화
SessionEnd세션 종료정리 작업

Hook 설정 예시

// settings.json — 파일 편집 후 자동 포매팅
{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": "npx prettier --write $CLAUDE_FILE_PATH"
          }
        ]
      }
    ],
    "Stop": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "npm test --silent 2>&1 | tail -5"
          }
        ]
      }
    ]
  }
}

모델 선택

별칭모델특징
opusClaude Opus 4.7가장 강력, 복잡한 추론
sonnetClaude Sonnet 4.6속도와 품질 균형 (기본)
haikuClaude Haiku 최신 별칭빠르고 저렴
opus[1m]Opus 4.7 + 1M 컨텍스트대규모 코드베이스
sonnet[1m]Sonnet 4.6 + 1M 컨텍스트대규모 코드베이스 (경제적)
# 세션 중 모델 변경
/model opus

# CLI 플래그로 지정
claude --model sonnet

# 환경 변수로 기본값 설정
export ANTHROPIC_MODEL=opus

# 추론 노력 수준 조정
/effort low    # 최소 추론 (빠름, 저비용)
/effort high   # 깊은 추론
/effort max    # 최대 추론 (Opus 전용)

Plan Mode

Plan Mode는 코드를 수정하기 전에 분석과 계획을 먼저 수립하는 모드입니다. 파일 읽기와 명령 실행(읽기 전용)만 가능하며, 실제 수정은 승인 후 진행됩니다.

# Plan Mode 시작
/plan
# 또는
claude --permission-mode plan

# 프로세스:
# 1) Claude가 코드를 읽고 분석
# 2) 수정 계획을 제시
# 3) 승인 후 실행 모드 선택:
#    - Auto Mode로 실행
#    - Accept Edits로 실행
#    - 수동 검토 모드로 실행

Fast Mode

Fast Mode는 동일한 Opus 4.7 모델을 약 2.5배 빠르게 실행합니다. 토큰당 비용이 높지만 빠른 반복이 필요할 때 유용합니다.

# Fast Mode 토글
/fast
# 또는 단축키
# Option+O (Mac) / Alt+O (Win/Linux)

사용 가능한 플랫폼

Claude Code는 CLI 외에도 다양한 환경에서 사용할 수 있습니다.

플랫폼특징
Terminal CLI모든 기능 지원, 가장 풍부한 도구
VS Code 확장IDE 통합, 인라인 diff 검토
JetBrains PluginIntelliJ, PyCharm, WebStorm 등
Desktop App독립형 앱 (macOS / Windows)
Web (claude.ai/code)브라우저 기반 클라우드 실행
GitHub ActionsCI/CD 자동화 통합

실전 워크플로우

새 프로젝트 시작

# 1. 디렉토리 생성
mkdir my-new-project
cd my-new-project

# 2. Git 초기화
git init

# 3. 프로젝트 지시사항 작성
mkdir .claude
cat > .claude/instructions.md << 'EOF'
# Next.js 프로젝트

- TypeScript 사용
- Tailwind CSS 스타일링
- App Router (Next.js 13+)
- ESLint + Prettier
EOF

# 4. Claude CLI 시작
claude

# 5. 초기 구조 요청
💬 You: "Next.js 13 프로젝트 초기 구조 만들어줘.
TypeScript, Tailwind, App Router 사용.
홈페이지에 Hero 섹션과 Feature 섹션 포함."

기존 프로젝트 리팩토링

# 프로젝트 디렉토리로 이동
cd existing-project

# Claude CLI 시작
claude

💬 You: "src/utils/helpers.js를 읽어봐.
이 코드를 TypeScript로 변환하고,
함수들을 더 작은 단위로 분리해줘.
테스트 코드도 작성해줘."

🤖 Claude: "helpers.js를 분석했습니다."

# 파일 읽기 → 분석 → 리팩토링
Created: src/utils/helpers.ts
Created: src/utils/helpers.test.ts
Deleted: src/utils/helpers.js

🤖 Claude: "TypeScript로 변환하고 다음과 같이 리팩토링했습니다:
- formatDate → dateUtils.ts
- validateEmail → validators.ts
- debounce → performanceUtils.ts
각 유틸리티별 테스트 코드도 작성했습니다."

버그 디버깅

💬 You: "npm test 실행했는데 에러 나. 로그 첨부할게:

TypeError: Cannot read property 'map' of undefined
  at UserList.render (UserList.jsx:15:18)

UserList.jsx 파일 확인하고 수정해줘."

🤖 Claude: "UserList.jsx를 확인했습니다. 문제를 발견했습니다."

Modified: src/components/UserList.jsx

🤖 Claude: "버그를 수정했습니다.
문제: users prop이 undefined일 때 map()을 호출
해결: Optional chaining과 기본값 추가

수정 전:
```jsx
{users.map(user => ...)}
```

수정 후:
```jsx
{(users || []).map(user => ...)}
```

또는:
```jsx
{users?.map(user => ...) || 

No users

} ```"

테스트 주도 개발 (TDD)

💬 You: "calculateDiscount 함수 만들려고 해.
먼저 테스트 코드부터 작성해줘.

요구사항:
- 10% 기본 할인
- 100달러 이상이면 15% 할인
- VIP 회원이면 추가 5% 할인"

🤖 Claude: "테스트 코드를 먼저 작성하겠습니다."

Created: src/utils/discount.test.ts

🤖 Claude: "테스트 케이스를 작성했습니다. 지금 실행하면 모두 실패할 것입니다."

💬 You: "좋아. 이제 함수 구현해줘."

Created: src/utils/discount.ts

🤖 Claude: "calculateDiscount 함수를 구현했습니다.
`npm test`로 테스트를 실행하면 모두 통과할 것입니다."

Ollama 병행 워크플로우

Claude CLI와 Ollama를 상황에 따라 병행하면 클라우드 추론 품질로컬 무제한·프라이버시를 동시에 활용할 수 있습니다.

언제 Ollama를 병행하는가?

작업 유형Claude CLIOllama (Aider 등)병행 전략
아키텍처 설계✅ 최적△ 제한적Claude로 설계 → Ollama로 구현
보일러플레이트 생성△ 과잉✅ 최적Ollama로 빠르게 생성
복잡한 디버깅✅ 최적△ 제한적Claude로 분석, Ollama로 수정 적용
코드 리뷰✅ 최적○ 보통Claude로 리뷰, Ollama로 반복 수정
민감 데이터 처리✗ 불가✅ 필수로컬 Ollama만 사용
오프라인 환경✗ 불가✅ 필수로컬 Ollama만 사용
대량 코드 변환△ 비용 증가✅ 최적Ollama로 대량 처리

오프라인 개발 워크플로우

네트워크가 없는 환경(비행기, 보안 시설 등)에서도 Ollama로 AI 코딩을 유지하는 패턴입니다.

bash
# 📶 온라인 단계: Claude CLI로 핵심 작업 완료
# 아키텍처 설계, 핵심 알고리즘, 복잡한 로직 처리
claude "프로젝트 아키텍처를 설계하고 핵심 모듈 구조를 잡아줘"
claude "인증 모듈의 토큰 갱신 로직을 구현해줘"

# ✈️ 오프라인 전환: Ollama + Aider로 구현 작업 계속
ollama serve &   # 로컬 서버 시작

# 환경 변수 설정
export OLLAMA_API_BASE="http://localhost:11434"

# Aider + Ollama로 코딩 계속
aider --model ollama_chat/llama3.2 \
      --no-auto-commits \
      src/auth/*.ts

# 📶 다시 온라인: Claude CLI로 리뷰
claude "오프라인에서 작성한 auth 모듈 변경사항을 리뷰해줘"

작업 분할 패턴

Claude CLI와 Aider(Ollama)를 조합하여 작업을 효율적으로 분배하는 스크립트입니다.

bash
#!/bin/bash
# dual-workflow.sh — Claude CLI + Aider(Ollama) 듀얼 워크플로우

# 1단계: Claude CLI로 설계 문서 생성
echo "📐 Claude CLI로 설계 중..."
claude "다음 요구사항으로 설계 문서를 작성해줘: $1" \
  --output design.md

# 2단계: Aider + Ollama로 코드 구현
echo "🔨 Aider + Ollama로 구현 중..."
aider --model ollama_chat/qwen2.5-coder:7b \
      --message "design.md를 기반으로 구현해줘" \
      --no-auto-commits \
      src/**/*.ts

# 3단계: Claude CLI로 코드 리뷰
echo "🔍 Claude CLI로 리뷰 중..."
claude "방금 구현된 코드를 리뷰하고 개선점을 알려줘"

echo "✅ 워크플로우 완료"
실전 조합 추천
  • 일반 개발팀: Claude CLI(설계·리뷰) + Aider+Ollama(구현) — 비용 70% 절감
  • 데이터과학팀: Claude CLI(분석 설계) + Ollama(로컬 데이터 전처리) — 프라이버시 확보
  • 풀스택팀: Claude CLI(백엔드 설계) + Aider+Ollama(프론트 보일러플레이트)

Aider + Ollama 보완 사용

Claude CLI의 강점(고품질 추론)과 Aider+Ollama의 강점(무제한 로컬 실행)을 워크플로우 단계별로 조합합니다.

워크플로우
┌─────────────────────────────────────────────────────────┐
│                    설계 → 구현 → 리뷰 워크플로우            │
├─────────────────────────────────────────────────────────┤
│                                                         │
│  1️⃣ 설계 (Claude CLI)                                   │
│     $ claude "API 엔드포인트 설계해줘"                     │
│     → 아키텍처, 스키마, 인터페이스 정의                      │
│                                                         │
│  2️⃣ 구현 (Aider + Ollama)                                │
│     $ aider --model ollama_chat/qwen2.5-coder:7b        │
│     → 설계를 기반으로 코드 작성, 테스트 생성                │
│                                                         │
│  3️⃣ 리뷰 (Claude CLI)                                   │
│     $ claude "변경사항 리뷰해줘"                           │
│     → 코드 품질, 보안, 성능 검토                           │
│                                                         │
│  4️⃣ 수정 (Aider + Ollama)                                │
│     → 리뷰 피드백 반영, 반복 수정                          │
│                                                         │
└─────────────────────────────────────────────────────────┘

Local LLM 게이트웨이 연동

앞서 살펴본 Ollama 병행 워크플로우는 Claude CLI와 Ollama를 별도 도구로 사용하는 방식입니다. 여기서는 한 단계 더 나아가, Claude Code CLI 자체의 API 엔드포인트를 로컬 LLM으로 리다이렉트하여 동일한 CLI 인터페이스로 로컬 모델을 사용하는 방법을 다룹니다.

동작 원리

Claude Code CLI는 내부적으로 Anthropic Messages API(/v1/messages) 포맷을 사용합니다. 환경 변수 ANTHROPIC_BASE_URL을 설정하면 API 요청을 다른 서버로 보낼 수 있습니다. 단, 로컬 LLM은 Anthropic API 포맷을 직접 지원하지 않으므로, 중간에 API 변환 게이트웨이(프록시)가 필요합니다.

중요: Ollama나 LM Studio에 직접 연결할 수 없습니다. 이들은 OpenAI 호환 API만 제공하며, Claude Code CLI는 Anthropic Messages API 포맷만 사용하기 때문입니다. 반드시 LiteLLM 같은 API 변환 프록시를 거쳐야 합니다.

공식 지원 백엔드 비교

Claude Code CLI가 공식적으로 지원하는 API 백엔드와 로컬 게이트웨이를 비교합니다.

백엔드 설정 방법 인증 특징
Anthropic API (기본) ANTHROPIC_API_KEY API Key 기본값, 모든 기능 지원
Amazon Bedrock CLAUDE_CODE_USE_BEDROCK=1 AWS IAM AWS 인프라 활용, VPC 내부 사용
Google Vertex AI CLAUDE_CODE_USE_VERTEX=1 GCP 서비스 계정 GCP 인프라 활용
Custom Gateway ANTHROPIC_BASE_URL 커스텀 토큰 LiteLLM 등 프록시 연결용

환경 변수 레퍼런스

환경 변수 용도 예시 값
ANTHROPIC_BASE_URL API 엔드포인트 URL 오버라이드 http://localhost:4000
ANTHROPIC_API_KEY API 키 (프록시 인증용) sk-any-string
ANTHROPIC_AUTH_TOKEN Bearer 토큰 (기업 프록시용) OAuth/JWT 토큰
CLAUDE_CODE_USE_BEDROCK Amazon Bedrock 백엔드 활성화 1
CLAUDE_CODE_USE_VERTEX Google Vertex AI 백엔드 활성화 1
ANTHROPIC_MODEL 사용할 모델명 오버라이드 sonnet
NODE_EXTRA_CA_CERTS 자체 서명 인증서 경로 (TLS 프록시용) /path/to/ca.pem

LiteLLM 프록시 설정 가이드

LiteLLM은 Anthropic Messages API 포맷을 다양한 LLM 백엔드로 변환해주는 유일한 프록시입니다. 아래 단계를 따라 설정합니다.

Step 1: Ollama 모델 준비

bash
# Ollama 실행 (이미 실행 중이면 생략)
ollama serve

# 코딩에 적합한 모델 다운로드
ollama pull qwen2.5-coder:14b

# 모델 동작 확인
ollama run qwen2.5-coder:14b "Hello, world!"

Step 2: LiteLLM 설치 및 설정 파일 작성

bash
# LiteLLM 설치
pip install litellm[proxy]

# 설정 파일 생성
mkdir -p ~/.litellm
yaml — ~/.litellm/litellm_config.yaml
# Claude Code CLI가 요청하는 모델명을 로컬 모델로 매핑
model_list:
  - model_name: sonnet
    litellm_params:
      model: ollama/qwen2.5-coder:14b
      api_base: http://localhost:11434

  - model_name: haiku
    litellm_params:
      model: ollama/qwen2.5-coder:7b
      api_base: http://localhost:11434

  - model_name: opus
    litellm_params:
      model: ollama/qwen2.5-coder:32b
      api_base: http://localhost:11434

litellm_settings:
  # Anthropic Messages API 포맷 변환 활성화
  drop_params: true
  # 지원하지 않는 파라미터 자동 제거

Step 3: LiteLLM 프록시 시작

bash
# 프록시 서버 시작 (기본 포트 4000)
litellm --config ~/.litellm/litellm_config.yaml --port 4000

# 백그라운드 실행
nohup litellm --config ~/.litellm/litellm_config.yaml --port 4000 &

Step 4: Claude Code CLI 연결

방법 A: 환경 변수 (일시적)

bash
# 환경 변수 설정
export ANTHROPIC_BASE_URL="http://localhost:4000"
export ANTHROPIC_API_KEY="sk-any-string"  # 프록시 인증 불필요 시 아무 값

# Claude Code CLI 실행 — 로컬 모델 사용
claude

# 또는 한 줄로 실행
ANTHROPIC_BASE_URL="http://localhost:4000" \
ANTHROPIC_API_KEY="sk-any-string" \
claude "이 프로젝트 구조를 분석해줘"

방법 B: settings.json (영구 설정)

json — ~/.claude/settings.json
{
  "env": {
    "ANTHROPIC_BASE_URL": "http://localhost:4000",
    "ANTHROPIC_API_KEY": "sk-any-string"
  }
}
팁: settings.json에 설정하면 매번 환경 변수를 지정할 필요가 없습니다. 다시 Anthropic API를 사용하려면 해당 키를 제거하면 됩니다.

아키텍처 다이어그램

Claude Code CLI /v1/messages 요청 Anthropic API LiteLLM Proxy API 포맷 변환 :4000 Ollama :11434 LM Studio :1234 vLLM :8000 ANTHROPIC_BASE_URL=http://localhost:4000 환경 변수 또는 settings.json으로 설정 OpenAI 호환 API Claude Code CLI → (Anthropic Messages API) → LiteLLM Proxy → (OpenAI 호환 API) → 로컬 LLM 직접 연결 불가 — 반드시 API 포맷 변환 프록시 필요

그림: Claude Code CLI와 로컬 LLM 게이트웨이 연동 아키텍처

제약 사항 및 주의점

  • API 포맷 필수: Claude Code CLI는 Anthropic Messages API (/v1/messages) 포맷만 사용합니다. OpenAI 호환 API (/v1/chat/completions)로는 동작하지 않으며, LiteLLM 같은 변환 프록시가 반드시 필요합니다.
  • Claude 고유 기능 제한: Extended thinking, Computer use, Tool use 등 Claude 전용 기능은 로컬 모델에서 작동하지 않거나 품질이 크게 저하됩니다.
  • 에이전트 루프 성능: Claude Code의 핵심인 파일 읽기/쓰기, 명령 실행 등 에이전트 기능은 모델의 도구 사용 능력에 크게 의존합니다. 소형 로컬 모델은 복잡한 에이전트 루프를 안정적으로 수행하기 어렵습니다.
  • 모델 매핑 주의: litellm_config.yaml에서 Claude 모델 alias를 로컬 모델로 매핑해야 합니다. CLI가 요청하는 alias(예: sonnet, haiku, opus)를 설정하지 않으면 오류가 발생합니다.
  • 스트리밍 호환성: 일부 로컬 LLM 백엔드의 SSE 스트리밍 구현이 불완전할 수 있으며, 응답이 끊기거나 지연될 수 있습니다.
실무 가이드라인:
  • 로컬 모델 적합: 코드 리뷰, 문서 생성, 간단한 리팩토링, 테스트 작성 등 단일 턴 작업
  • Claude API 적합: 복잡한 멀티파일 수정, 에이전트 루프 기반 디버깅, 아키텍처 설계 등 다중 턴 작업
  • 하이브리드 전략: 개발 초기/간단 작업에는 로컬 모델, 복잡한 작업에는 Claude API로 전환

모범 사례

효과적인 프롬프트

❌ 나쁜 예

💬 You: "앱 만들어줘."

문제: 너무 모호함. 어떤 앱인지, 어떤 기능인지 불명확.

✅ 좋은 예

💬 You: "React로 날씨 앱 만들어줘.

기능:
- 현재 위치 기반 날씨 표시
- 도시 검색 기능
- 5일 예보
- 날씨 아이콘

기술:
- React 18 + TypeScript
- OpenWeather API
- Tailwind CSS
- React Query for data fetching

파일 구조:
- src/components/ (컴포넌트)
- src/hooks/ (커스텀 훅)
- src/services/ (API 호출)"

장점: 명확한 요구사항, 기술 스택, 구조까지 지정.

컨텍스트 관리

1. .claude/instructions.md 활용

프로젝트 전체에 적용될 규칙을 작성하여 매번 반복하지 않기

2. .claudeignore 설정

불필요한 파일 제외로 토큰 절약 및 응답 속도 향상

3. 대화 초기화

주제가 바뀌면 /clear로 히스토리 초기화

Git 통합

Claude Code는 Git과 깊이 통합되어 있습니다. 커밋, 브랜치, PR 생성을 자연어로 요청할 수 있습니다.

# Claude에게 직접 커밋 요청
💬 You: "변경사항 커밋해줘"
# → Claude가 git diff 분석 → 커밋 메시지 작성 → 커밋

# PR 생성 요청
💬 You: "이 브랜치로 PR 만들어줘"
# → gh pr create 실행

# 수동으로 하려면
git add .
git commit -m "feat: Add user authentication system

- JWT token-based auth
- bcrypt password hashing
- Login/signup endpoints"

비용 최적화

전략 설명
/effort low 간단한 작업에서 추론 노력 최소화
모델 전환 간단한 작업: Haiku, 일반: Sonnet, 복잡: Opus
/compact 컨텍스트 압축으로 토큰 사용량 절감
--max-budget-usd 세션별 비용 한도 설정 (예: 5 USD)
명확한 요청 모호한 요청은 재요청으로 이어져 비용 증가
Prompt Caching 반복되는 컨텍스트 자동 캐싱 (90% 비용 절감)

비용 모니터링 및 최적화 →

운영 플레이북

Claude CLI는 터미널 중심 도구라서 \"프롬프트 작성\"보다 \"작업 절차 표준화\"가 더 중요합니다. 세션 규칙과 비용 규칙을 팀 공통으로 맞추면 결과 품질 편차를 크게 줄일 수 있습니다.

세션 운영 템플릿

# Claude CLI 세션 시작 체크리스트
1) git status 확인 (작업 디렉토리 상태 점검)
2) 작업 목표 1~2문장으로 고정
3) 산출물 형식 지정 (파일/테스트/문서)
4) 성공 조건 정의 (테스트 통과, 빌드 통과 등)
5) 실패 시 재시도 전략 지정 (모델 상향 여부 포함)

# 세션 종료 체크리스트
1) git diff 검토
2) 테스트 로그 확인
3) 변경 요약 작성
4) 다음 작업 TODO 정리

모델 티어 전략

작업 유형 권장 모델 티어 운영 원칙
빠른 수정 / 단순 생성 Haiku 급 속도 우선, 실패 시 Sonnet으로 상향
일반 개발 작업 Sonnet 급 기본 모델로 고정
복합 리팩토링 / 설계 Opus 급 승인된 고난도 작업에서만 사용

비용 관리 템플릿

# 비용 운영 기준 (예시)
- 개인 일일 소프트 한도: 3 USD
- 개인 월 하드 한도: 60 USD
- 팀 월 한도: 700 USD
- 재시도 횟수 제한: 동일 작업 최대 2회
- 긴 컨텍스트 요청: 리뷰어 승인 후 실행

# 모니터링 지표
- 요청 수 / 성공 수 / 재시도 수
- 평균 입력 토큰 / 평균 출력 토큰
- 고비용 모델 사용 비율
요청 입력 목표/제약 명시 실행/검증 생성 → 테스트 → 수정 종료 정리 diff/요약/후속 TODO Claude CLI 표준 세션 루프 작업 범위 고정 → 산출물 생성 → 검증 → 정리 재시도는 제한하고 필요할 때만 상위 모델 사용 요청 템플릿 고정으로 팀 생산성 편차 축소

그림: Claude CLI 표준 세션 운영 구조

트러블슈팅

일반적인 문제

❌ "API key not found" 또는 인증 실패

해결:

# 방법 1: 대화형 로그인
claude auth login

# 방법 2: API 키 설정
export ANTHROPIC_API_KEY="sk-ant-api03-xxx"

# 환경 진단
claude doctor

❌ "Rate limit exceeded"

원인: 사용량 한도 초과

해결: 1분 대기 후 재시도. /cost로 현재 사용량 확인. /effort low로 토큰 절약.

❌ 파일이 생성되지 않음

해결:

  • 현재 디렉토리 쓰기 권한 확인
  • 권한 모드 확인 (Shift+Tab으로 전환)
  • 더 구체적인 요청으로 재시도 (파일 경로 명시)

❌ 응답이 중간에 끊김 / 컨텍스트 초과

해결:

# 대화 컨텍스트 압축
/compact

# 또는 새 대화로 시작
/clear

Claude Code는 컨텍스트 한계에 도달하면 자동으로 이전 대화를 압축(compaction)합니다.

디버깅 팁

# 환경 진단 (설치, 인증, 설정 모두 확인)
claude doctor

# 디버그 모드로 실행
claude --debug

# 세션 비용 확인
/cost

# 세션 상태 확인
/status

성능 최적화

  • /compact — 컨텍스트 압축으로 토큰 절약
  • /effort low — 간단한 작업에서 추론 노력 최소화
  • Haiku 모델 — 단순 작업에 /model haiku로 전환
  • subagent 활용 — 탐색과 구현을 분리하여 컨텍스트 보존
  • --max-turns — 에이전트 루프 횟수 제한으로 비용 관리
  • --max-budget-usd — 세션 비용 한도 설정

핵심 정리

  • 설치: curl -fsSL https://claude.ai/install.sh | bash로 설치, claude auth login 또는 API 키로 인증
  • 프로젝트 설정: CLAUDE.md에 프로젝트 규칙 작성, .claude/settings.json으로 권한 및 도구 관리
  • 모델 선택: 일반 작업은 Sonnet, 복잡한 추론은 Opus, 빠른 작업은 Haiku. /model로 전환
  • 권한 관리: Plan Mode로 분석 → 승인 후 실행. Shift+Tab으로 모드 순환
  • 자동화: Hooks로 포매팅/테스트 자동 실행, MCP로 외부 서비스 연동
  • 비용 최적화: /effort로 추론 수준 조절, /compact로 컨텍스트 압축, --max-budget-usd로 한도 설정
  • 플랫폼: CLI 외에 VS Code, JetBrains, Desktop App, Web 등 다양한 표면에서 이어서 사용할 수 있습니다.