진입점 & SDK

Claude Code의 다양한 진입점과 SDK 통합 — CLI, 데스크톱 앱, 웹, IDE 확장, Agent SDK까지.

01

개요

Claude Code는 다양한 진입점을 통해 접근할 수 있습니다. CLI(터미널), 데스크톱 앱(Mac/Windows), 웹(claude.ai/code), IDE 확장(VS Code, JetBrains) — 각 진입점은 동일한 코어 엔진을 공유하지만 UI와 전송 계층이 다릅니다. 또한 SDKAgent SDK를 통해 프로그래밍 방식으로 Claude Code를 통합할 수 있습니다.

다루는 소스 파일: entrypoints/cli.tsx, @anthropic-ai/claude-code 패키지, @anthropic-ai/claude-agent-sdk 패키지, IDE 확장 전송 레이어

진입점 아키텍처의 핵심 원칙:

02

CLI 진입점

entrypoints/cli.tsx가 메인 CLI 진입점입니다. 터미널에서 claude 명령을 실행하면 이 파일이 가장 먼저 로드됩니다.

패스트 패스 분기

CLI 진입점은 무거운 모듈 로드 전에 빠르게 처리할 수 있는 경로를 먼저 체크합니다:

// cli.tsx — 패스트 패스: main.tsx를 전혀 임포트하지 않음
const args = process.argv.slice(2)
if (args.length === 1 && (args[0] === '--version' || args[0] === '-v')) {
  console.log(`${MACRO.VERSION} (Claude Code)`)
  return
}

Commander.js 인수 파싱

패스트 패스를 통과하면 Commander.js가 인수를 파싱합니다. 주요 CLI 플래그:

딥 다이브 — CLI에서 REPL까지

CLI 진입점에서 인터랙티브 REPL까지의 경로: cli.tsxmain.tsx(Commander 파싱) → setup.ts(세션 배선) → replLauncher.tsx(Ink 렌더링). 이 파이프라인은 MDM 읽기, 키체인 프리페치를 병렬로 실행하여 체감 시작 시간을 최소화합니다.

03

SDK 진입점

Claude Code는 프로그래밍 방식으로 사용할 수 있습니다. @anthropic-ai/claude-code 패키지가 공식 SDK를 제공합니다.

query() 함수

query()는 SDK의 핵심 진입점으로, 메시지를 전송하고 SDKMessage 스트림을 반환합니다. AsyncGenerator 패턴을 사용하여 실시간으로 응답을 스트리밍합니다.

import { query, SDKMessage } from '@anthropic-ai/claude-code';

const messages: SDKMessage[] = [];
for await (const msg of query({
  prompt: "Fix the TypeScript errors in src/",
  options: {
    model: 'claude-sonnet-4-6',
    maxTurns: 10,
    permissionMode: 'acceptEdits',
  }
})) {
  messages.push(msg);
  if (msg.type === 'assistant') {
    console.log(msg.message.content);
  }
}

SDK 옵션

query()에 전달할 수 있는 주요 옵션:

SDKMessage 타입

스트림에서 반환되는 메시지 타입:

주의사항

SDK를 사용할 때는 --bare 모드가 내부적으로 활성화됩니다. UDS 메시징, 팀메이트 스냅샷, 세션 메모리, 플러그인 훅, 지연 프리페치가 모두 건너뛰어져 최소한의 오버헤드로 실행됩니다.

04

Agent SDK

@anthropic-ai/claude-agent-sdk 패키지는 커스텀 에이전트를 구축하기 위한 고급 SDK입니다. Claude Code의 핵심 기능을 재사용하면서 자체 로직을 추가할 수 있습니다.

AgentRuntime 클래스

AgentRuntime은 에이전트의 실행 환경을 관리합니다:

import { AgentRuntime } from '@anthropic-ai/claude-agent-sdk';

const runtime = new AgentRuntime({
  model: 'claude-sonnet-4-6',
  tools: [myCustomTool, fileReadTool],
  systemPrompt: 'You are a code review assistant.',
});

const result = await runtime.run({
  prompt: 'Review the latest PR changes',
});

커스텀 도구 정의

Agent SDK에서 도구는 이름, 설명, 입력 스키마, 실행 함수로 구성됩니다. Claude Code의 기본 도구(파일 읽기/쓰기, Bash 등)를 재사용하거나 완전히 새로운 도구를 정의할 수 있습니다.

딥 다이브 — SDK vs Agent SDK

@anthropic-ai/claude-code SDK는 Claude Code를 블랙박스로 호출합니다 — 기존 도구, 권한, 설정을 그대로 사용합니다. 반면 @anthropic-ai/claude-agent-sdk는 Claude Code의 내부 구성 요소를 직접 활용하여 커스텀 에이전트를 구축합니다 — 도구 세트, 시스템 프롬프트, 실행 흐름을 완전히 제어할 수 있습니다.

05

IDE 확장 진입점

VS Code 확장과 JetBrains 플러그인은 IDE 내에서 Claude Code를 사용할 수 있게 합니다.

전송 프로토콜

IDE 확장은 CLI의 stdio 대신 전용 전송 프로토콜을 사용합니다:

전송 프로토콜은 다르지만 내부적으로 동일한 QueryEngine과 도구 시스템을 사용합니다.

IDE 컨텍스트 공유

IDE 확장의 핵심 장점은 풍부한 컨텍스트 공유입니다:

딥 다이브 — IDE 전송 선택

sse-ide는 서버→클라이언트 단방향 스트리밍에 적합하고 HTTP 인프라 위에서 동작하여 방화벽 친화적입니다. ws-ide는 양방향 실시간 통신이 필요한 경우에 사용됩니다. 확장은 환경에 따라 자동으로 적절한 전송을 선택합니다.

06

웹 진입점

claude.ai/code는 브라우저 기반 Claude Code 인터페이스를 제공합니다.

브라우저 기반 인터페이스

로컬 설치 없이 웹 브라우저에서 Claude Code를 사용할 수 있습니다. 터미널 에뮬레이션을 포함하여 CLI와 유사한 경험을 제공합니다.

CCR (Claude Code in Repositories) 통합

CCR은 클라우드 원격 환경에서 Claude Code 세션을 실행합니다:

주의사항

CCR 컨테이너는 NODE_OPTIONS를 통해 8GB 힙 제한이 적용됩니다. 매우 큰 프로젝트에서는 메모리 제한에 주의해야 합니다.

07

데스크톱 앱

Mac과 Windows용 네이티브 데스크톱 앱은 CLI의 모든 기능을 GUI 환경에서 제공합니다.

주요 특징

데스크톱 앱은 내부적으로 CLI와 동일한 코어 엔진을 실행합니다. UI 레이어만 Ink(터미널) 대신 네이티브 윈도우로 대체됩니다.

08

진입점 간 공유 아키텍처

모든 진입점은 공통 코어 위에 구축됩니다. 공유 컴포넌트와 진입점별 차이를 명확히 이해하는 것이 중요합니다.

모든 진입점이 공유하는 것

진입점별로 다른 것

09

Bare 모드 & Simple 모드

--bare 플래그(또는 CLAUDE_CODE_SIMPLE 환경 변수)는 SDK와 스크립트 사용에 최적화된 최소 시작 모드를 활성화합니다.

건너뛰는 단계

Bare 모드에서는 다음 시작 단계가 모두 건너뛰어집니다:

유지되는 단계

Bare 모드에서도 다음은 여전히 실행됩니다:

딥 다이브 — Bare 모드의 설계 원칙

CI 파이프라인에서 하루에 수백 번 Claude Code를 호출할 때 밀리초 단위의 시작 시간 절감이 누적되어 큰 차이를 만듭니다. Bare 모드는 인터랙티브 세션에 필요한 기능(팀메이트 인식, 세션 연속성, 플러그인 UI)을 제거하여 최소한의 오버헤드로 프로그래밍 방식 호출을 지원합니다.

10

핵심 요약

핵심 포인트

  • Claude Code는 CLI, 데스크톱 앱, 웹, IDE 확장, SDK 등 다양한 진입점을 통해 접근 가능합니다
  • CLI 진입점(entrypoints/cli.tsx)은 패스트 패스 분기로 불필요한 모듈 로드를 방지합니다
  • @anthropic-ai/claude-code SDK의 query() 함수는 AsyncGenerator<SDKMessage>를 반환하여 실시간 스트리밍을 지원합니다
  • @anthropic-ai/claude-agent-sdkAgentRuntime으로 커스텀 도구와 로직을 가진 에이전트를 구축할 수 있습니다
  • IDE 확장은 sse-ide 또는 ws-ide 전송 프로토콜을 사용하며, 열린 파일, 선택 영역, 진단 정보를 공유합니다
  • CCR(Claude Code in Repositories)은 클라우드 원격 환경에서 세션을 실행합니다
  • 모든 진입점이 QueryEngine, 도구 시스템, 권한 시스템, MCP 통합을 공유합니다
  • Bare 모드(--bare)는 SDK/스크립트용으로 UDS 메시징, 세션 메모리, 플러그인 훅, 지연 프리페치를 건너뜁니다
11

지식 확인

퀴즈 — 5문제

Q1. SDK에서 query() 함수의 반환 타입은?

  • A) Promise<string>
  • B) AsyncGenerator<SDKMessage>
  • C) Observable<Message>
  • D) ReadableStream
query()AsyncGenerator<SDKMessage>를 반환합니다. for await...of 루프로 실시간 스트리밍 메시지를 소비할 수 있으며, 각 메시지는 assistant, user, system, result 타입 중 하나입니다.

Q2. IDE 확장이 사용하는 전송 타입은?

  • A) stdio
  • B) http
  • C) sse-ide 또는 ws-ide
  • D) sdk
IDE 확장은 sse-ide(Server-Sent Events) 또는 ws-ide(WebSocket) 전송 프로토콜을 사용합니다. CLI의 stdio와 달리 IDE 환경에 최적화된 전용 프로토콜입니다.

Q3. Bare 모드에서 건너뛰는 것은?

  • A) 인증
  • B) 마이그레이션
  • C) Commander 파싱
  • D) UDS 메시징, 세션 메모리, 플러그인 훅, 지연 프리페치
Bare 모드(--bare / CLAUDE_CODE_SIMPLE)는 인터랙티브 세션에만 필요한 기능을 건너뜁니다: UDS 메시징 서버, 팀메이트 스냅샷, 세션 메모리 초기화, 플러그인 훅 사전 로드, 지연 프리페치. 인증, 마이그레이션, Commander 파싱은 여전히 실행됩니다.

Q4. 모든 진입점이 공유하는 핵심 컴포넌트는?

  • A) Ink 렌더러
  • B) QueryEngine, 도구 시스템, 권한 시스템
  • C) 터미널 에뮬레이터
  • D) React 컴포넌트
QueryEngine(모델 호출 관리), 도구 시스템(파일 읽기/쓰기, Bash 등), 권한 시스템(도구 실행 승인)은 모든 진입점에서 공유됩니다. Ink 렌더러는 CLI 전용, 터미널 에뮬레이터는 데스크톱 앱 전용, React 컴포넌트는 UI 계층이므로 진입점마다 다릅니다.

Q5. CCR에서 Claude Code 세션 실행 시 사용 환경은?

  • A) 로컬 터미널
  • B) IDE 확장
  • C) 클라우드 원격 환경
  • D) 데스크톱 앱
CCR(Claude Code in Repositories)은 클라우드 원격 환경에서 세션을 실행합니다. GitHub 레포지토리를 격리된 컨테이너에 클론하여 작업하며, 로컬 환경 설정 없이도 사용할 수 있습니다.
0 / 5