홈으로 돌아가기

Claude Code 소스: CLI 아키텍처

Claude Code 소스 유출 공개: React/Ink 기반 멀티 모드 런타임, Agent Orchestration, Dynamic Imports, 엄격한 Bash Security. 터미널 AI 아키텍처에 초점 맞춘 분석.

유출로부터 본 Claude Code 내부: React와 Agents
Advertisement 728x90

클로드 코드 해부: 유출된 소스 코드가 드러내는 것들

2026년 3월 31일, npm 패키지의 소스맵을 통해 클로드 코드의 소스 코드가 유출되었습니다. 이는 깔끔한 git 체크아웃이 아닌, 변환 과정을 거친 클라이언트 측 코드의 복구된 스냅샷으로, assistant/index.tsdaemon/main.js와 같은 파일이 누락되어 있습니다. screens/REPL.tsx는 이미 React 컴파일러로 컴파일되었으며, main.tsx에는 런치 최적화의 흔적이 남아 있습니다: profileCheckpoint, 키체인 프리페칭, 병렬 MDM 읽기.

이 코드는 단순한 CLI에서 터미널 운영 체제로의 진화를 보여줍니다. 지연 로딩을 위해 임포트는 동적이며, --version은 의존성 없이 실행됩니다. 하지만 복잡성은 증가하고 있습니다: 데몬, 원격 제어, tmux, MCP 서버.

CLI: 다중 모드 런타임의 얼굴

entrypoints/cli.tsx는 라우팅 허브입니다: --version, 시스템 프롬프트, 데몬, 환경 실행기, 자체 호스팅 실행기, ps/로그/연결/종료. 동적 임포트는 평가를 최소화합니다: 워커는 가볍습니다. 빠른 경로는 무거운 모듈을 끌어오지 않아 메모리와 충돌 위험을 줄입니다.

Google AdInline article slot

장점: 시작 최적화. 단점: 모든 모드를 알고 있어 CLI가 공항처럼 느껴집니다. 지연 로딩이 구원투수지만, 구조는 부담스럽습니다.

// cli.tsx 예시
if (fastPath) {
  // 이 파일을 넘어서는 임포트 없음
  console.log(version);
  process.exit(0);
}

main.tsx: 시스템의 중심

main.tsx는 수렴 지점입니다: 초기화, 모드 선택, 도구 풀, 기능 플래그, KAIROS/Proactive, 구조화된 출력, 세션 복구. 장점: 모든 분기 로직이 한곳에 모여 있습니다. 단점: SleepTool.isEnabled()를 위해 getTools() 전에 Proactive 모드와 같은 타협이 있습니다.

진화가 보입니다: CLI에서 플래그와 검사를 가진 시스템으로. 규모가 이런 구성을 낳습니다.

Google AdInline article slot
  • 초기화 및 모드 선택
  • 시스템 프롬프트와 도구 풀
  • 기능 플래그와 원격 세션
  • UI 실행 및 세션

터미널 속 리액트: Ink와 프론트엔드의 결합

클로드 코드는 Ink 위의 리액트 애플리케이션입니다. screens/REPL.tsx는 알림, 모달, IDE 통합, MCP, 플러그인, 팀원 모드, 플로팅 UI, 버디를 관리합니다.

상태를 동기화하고, 도구를 필터링하며, 플러그인을 혼합합니다. 채팅이 아닌, 브라우저 같은 습관을 가진 터미널 내 프론트엔드입니다.

에이전트를 인프라로 조율하기

단일 에이전트가 아닌, 제어 센터입니다. AgentTool은 다음을 지원합니다:

Google AdInline article slot
  • 동기/비동기 실행
  • 백그라운드 및 작업 트리 격리
  • 원격 및 팀원 모드
  • 자체 도구 풀과 권한 모드
  • 프롬프트/도구용 캐시 아이덴티티

진행 상황과 알림을 가진 비동기 에이전트. 작업 트리는 경로의 일부입니다. Promise.all을 넘어선 성숙한 에이전트 능력입니다.

탐색 에이전트는 제한적입니다: 읽기 전용, 쓰기/삭제/리다이렉트/히어독 없음, 병렬 grep/읽기에 집중. 자율성과 제약의 균형입니다.

도구 실행: 동시성과 내결함성

도구는 그룹화됩니다: 읽기 전용은 병렬로, 위험한 것은 직렬로. 스트리밍 실행기는 다음을 가집니다:

  • 오류 시 형제 작업 취소
  • user_interrupted vs sibling_error vs streaming_fallback
  • 순서를 위한 버퍼링
  • 인터럽트 처리

제품은 멈춤과 충돌에서 살아남습니다.

자멸 없는 배시: 보안 편집증

bashPermissionsbashSecurity는 다음을 차단합니다:

  • 명령/프로세스 치환
  • 히어독/zsh 등호
  • zmodload/ztcp/zpty
  • 난독화된 플래그
  • env/sudo/nice/timeout
  • 공백/이스케이핑

LLM의 실제 셸 공격에 대비한 성숙한 레이어입니다.

인간적인 손길: 버디와 애니메이션

buddy/ — ASCII 스프라이트, 말풍선, 애니메이션. 터미널 동반자가 CLI에 생명을 불어넣습니다.

핵심 요약:

  • 빠른 모드 시작을 위한 동적 임포트
  • 규모 타협을 가진 오케스트레이션 허브로서의 main.tsx
  • 격리와 생명주기를 가진 에이전트 인프라
  • 오류 처리와 함께하는 병렬/직렬 도구 호출
  • 셸 공격에 대비한 배시 보안
  • 버디와 함께하는 터미널 UI용 리액트/Ink

— Editorial Team

Advertisement 728x90

다음 읽기