Claude Code의 다양한 진입점과 SDK 통합 — CLI, 데스크톱 앱, 웹, IDE 확장, Agent SDK까지.
Claude Code는 다양한 진입점을 통해 접근할 수 있습니다. CLI(터미널), 데스크톱 앱(Mac/Windows), 웹(claude.ai/code), IDE 확장(VS Code, JetBrains) — 각 진입점은 동일한 코어 엔진을 공유하지만 UI와 전송 계층이 다릅니다. 또한 SDK와 Agent SDK를 통해 프로그래밍 방식으로 Claude Code를 통합할 수 있습니다.
entrypoints/cli.tsx, @anthropic-ai/claude-code 패키지, @anthropic-ai/claude-agent-sdk 패키지, IDE 확장 전송 레이어
진입점 아키텍처의 핵심 원칙:
entrypoints/cli.tsx가 메인 CLI 진입점입니다. 터미널에서 claude 명령을 실행하면 이 파일이 가장 먼저 로드됩니다.
CLI 진입점은 무거운 모듈 로드 전에 빠르게 처리할 수 있는 경로를 먼저 체크합니다:
--version / -v — 버전 문자열 출력 후 즉시 종료--daemon-worker — 데몬 워커 프로세스 실행remote-control / bridge — 브릿지 모드 실행// 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가 인수를 파싱합니다. 주요 CLI 플래그:
--model — 사용할 모델 지정 (예: claude-sonnet-4-6)--print / -p — 비대화형 모드, 결과 출력 후 종료--resume — 이전 세션 재개--session — 특정 세션 ID로 시작--worktree — git worktree 생성 후 실행--bare — SDK/스크립트용 최소 시작 모드--mcp-config — MCP 서버 구성 파일 경로CLI 진입점에서 인터랙티브 REPL까지의 경로: cli.tsx → main.tsx(Commander 파싱) → setup.ts(세션 배선) → replLauncher.tsx(Ink 렌더링). 이 파이프라인은 MDM 읽기, 키체인 프리페치를 병렬로 실행하여 체감 시작 시간을 최소화합니다.
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);
}
}
query()에 전달할 수 있는 주요 옵션:
model — 사용할 모델 (기본: 설정된 모델)systemPrompt — 커스텀 시스템 프롬프트tools — 활성화할 도구 목록maxTurns — 최대 턴 수 제한permissionMode — 권한 모드 ('default', 'acceptEdits', 'bypassPermissions')cwd — 작업 디렉토리스트림에서 반환되는 메시지 타입:
assistant — 어시스턴트 응답 (텍스트, 도구 호출)user — 사용자 메시지 (도구 결과 포함)system — 시스템 이벤트result — 최종 결과 메타데이터SDK를 사용할 때는 --bare 모드가 내부적으로 활성화됩니다. UDS 메시징, 팀메이트 스냅샷, 세션 메모리, 플러그인 훅, 지연 프리페치가 모두 건너뛰어져 최소한의 오버헤드로 실행됩니다.
@anthropic-ai/claude-agent-sdk 패키지는 커스텀 에이전트를 구축하기 위한 고급 SDK입니다. Claude Code의 핵심 기능을 재사용하면서 자체 로직을 추가할 수 있습니다.
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 등)를 재사용하거나 완전히 새로운 도구를 정의할 수 있습니다.
@anthropic-ai/claude-code SDK는 Claude Code를 블랙박스로 호출합니다 — 기존 도구, 권한, 설정을 그대로 사용합니다. 반면 @anthropic-ai/claude-agent-sdk는 Claude Code의 내부 구성 요소를 직접 활용하여 커스텀 에이전트를 구축합니다 — 도구 세트, 시스템 프롬프트, 실행 흐름을 완전히 제어할 수 있습니다.
VS Code 확장과 JetBrains 플러그인은 IDE 내에서 Claude Code를 사용할 수 있게 합니다.
IDE 확장은 CLI의 stdio 대신 전용 전송 프로토콜을 사용합니다:
sse-ide — Server-Sent Events 기반 IDE 전송ws-ide — WebSocket 기반 IDE 전송전송 프로토콜은 다르지만 내부적으로 동일한 QueryEngine과 도구 시스템을 사용합니다.
IDE 확장의 핵심 장점은 풍부한 컨텍스트 공유입니다:
sse-ide는 서버→클라이언트 단방향 스트리밍에 적합하고 HTTP 인프라 위에서 동작하여 방화벽 친화적입니다. ws-ide는 양방향 실시간 통신이 필요한 경우에 사용됩니다. 확장은 환경에 따라 자동으로 적절한 전송을 선택합니다.
claude.ai/code는 브라우저 기반 Claude Code 인터페이스를 제공합니다.
로컬 설치 없이 웹 브라우저에서 Claude Code를 사용할 수 있습니다. 터미널 에뮬레이션을 포함하여 CLI와 유사한 경험을 제공합니다.
CCR은 클라우드 원격 환경에서 Claude Code 세션을 실행합니다:
CCR 컨테이너는 NODE_OPTIONS를 통해 8GB 힙 제한이 적용됩니다. 매우 큰 프로젝트에서는 메모리 제한에 주의해야 합니다.
Mac과 Windows용 네이티브 데스크톱 앱은 CLI의 모든 기능을 GUI 환경에서 제공합니다.
데스크톱 앱은 내부적으로 CLI와 동일한 코어 엔진을 실행합니다. UI 레이어만 Ink(터미널) 대신 네이티브 윈도우로 대체됩니다.
모든 진입점은 공통 코어 위에 구축됩니다. 공유 컴포넌트와 진입점별 차이를 명확히 이해하는 것이 중요합니다.
--bare 플래그(또는 CLAUDE_CODE_SIMPLE 환경 변수)는 SDK와 스크립트 사용에 최적화된 최소 시작 모드를 활성화합니다.
Bare 모드에서는 다음 시작 단계가 모두 건너뛰어집니다:
startDeferredPrefetches() 실행 안 함Bare 모드에서도 다음은 여전히 실행됩니다:
tengu_started)CI 파이프라인에서 하루에 수백 번 Claude Code를 호출할 때 밀리초 단위의 시작 시간 절감이 누적되어 큰 차이를 만듭니다. Bare 모드는 인터랙티브 세션에 필요한 기능(팀메이트 인식, 세션 연속성, 플러그인 UI)을 제거하여 최소한의 오버헤드로 프로그래밍 방식 호출을 지원합니다.
entrypoints/cli.tsx)은 패스트 패스 분기로 불필요한 모듈 로드를 방지합니다@anthropic-ai/claude-code SDK의 query() 함수는 AsyncGenerator<SDKMessage>를 반환하여 실시간 스트리밍을 지원합니다@anthropic-ai/claude-agent-sdk의 AgentRuntime으로 커스텀 도구와 로직을 가진 에이전트를 구축할 수 있습니다sse-ide 또는 ws-ide 전송 프로토콜을 사용하며, 열린 파일, 선택 영역, 진단 정보를 공유합니다--bare)는 SDK/스크립트용으로 UDS 메시징, 세션 메모리, 플러그인 훅, 지연 프리페치를 건너뜁니다Q1. SDK에서 query() 함수의 반환 타입은?
query()는 AsyncGenerator<SDKMessage>를 반환합니다. for await...of 루프로 실시간 스트리밍 메시지를 소비할 수 있으며, 각 메시지는 assistant, user, system, result 타입 중 하나입니다.Q2. IDE 확장이 사용하는 전송 타입은?
sse-ide(Server-Sent Events) 또는 ws-ide(WebSocket) 전송 프로토콜을 사용합니다. CLI의 stdio와 달리 IDE 환경에 최적화된 전용 프로토콜입니다.Q3. Bare 모드에서 건너뛰는 것은?
--bare / CLAUDE_CODE_SIMPLE)는 인터랙티브 세션에만 필요한 기능을 건너뜁니다: UDS 메시징 서버, 팀메이트 스냅샷, 세션 메모리 초기화, 플러그인 훅 사전 로드, 지연 프리페치. 인증, 마이그레이션, Commander 파싱은 여전히 실행됩니다.Q4. 모든 진입점이 공유하는 핵심 컴포넌트는?
Q5. CCR에서 Claude Code 세션 실행 시 사용 환경은?