클로드 코드 해부: 유출된 소스 코드가 드러내는 것들
2026년 3월 31일, npm 패키지의 소스맵을 통해 클로드 코드의 소스 코드가 유출되었습니다. 이는 깔끔한 git 체크아웃이 아닌, 변환 과정을 거친 클라이언트 측 코드의 복구된 스냅샷으로, assistant/index.ts나 daemon/main.js와 같은 파일이 누락되어 있습니다. screens/REPL.tsx는 이미 React 컴파일러로 컴파일되었으며, main.tsx에는 런치 최적화의 흔적이 남아 있습니다: profileCheckpoint, 키체인 프리페칭, 병렬 MDM 읽기.
이 코드는 단순한 CLI에서 터미널 운영 체제로의 진화를 보여줍니다. 지연 로딩을 위해 임포트는 동적이며, --version은 의존성 없이 실행됩니다. 하지만 복잡성은 증가하고 있습니다: 데몬, 원격 제어, tmux, MCP 서버.
CLI: 다중 모드 런타임의 얼굴
entrypoints/cli.tsx는 라우팅 허브입니다: --version, 시스템 프롬프트, 데몬, 환경 실행기, 자체 호스팅 실행기, ps/로그/연결/종료. 동적 임포트는 평가를 최소화합니다: 워커는 가볍습니다. 빠른 경로는 무거운 모듈을 끌어오지 않아 메모리와 충돌 위험을 줄입니다.
장점: 시작 최적화. 단점: 모든 모드를 알고 있어 CLI가 공항처럼 느껴집니다. 지연 로딩이 구원투수지만, 구조는 부담스럽습니다.
// cli.tsx 예시
if (fastPath) {
// 이 파일을 넘어서는 임포트 없음
console.log(version);
process.exit(0);
}
main.tsx: 시스템의 중심
main.tsx는 수렴 지점입니다: 초기화, 모드 선택, 도구 풀, 기능 플래그, KAIROS/Proactive, 구조화된 출력, 세션 복구. 장점: 모든 분기 로직이 한곳에 모여 있습니다. 단점: SleepTool.isEnabled()를 위해 getTools() 전에 Proactive 모드와 같은 타협이 있습니다.
진화가 보입니다: CLI에서 플래그와 검사를 가진 시스템으로. 규모가 이런 구성을 낳습니다.
- 초기화 및 모드 선택
- 시스템 프롬프트와 도구 풀
- 기능 플래그와 원격 세션
- UI 실행 및 세션
터미널 속 리액트: Ink와 프론트엔드의 결합
클로드 코드는 Ink 위의 리액트 애플리케이션입니다. screens/REPL.tsx는 알림, 모달, IDE 통합, MCP, 플러그인, 팀원 모드, 플로팅 UI, 버디를 관리합니다.
상태를 동기화하고, 도구를 필터링하며, 플러그인을 혼합합니다. 채팅이 아닌, 브라우저 같은 습관을 가진 터미널 내 프론트엔드입니다.
에이전트를 인프라로 조율하기
단일 에이전트가 아닌, 제어 센터입니다. AgentTool은 다음을 지원합니다:
- 동기/비동기 실행
- 백그라운드 및 작업 트리 격리
- 원격 및 팀원 모드
- 자체 도구 풀과 권한 모드
- 프롬프트/도구용 캐시 아이덴티티
진행 상황과 알림을 가진 비동기 에이전트. 작업 트리는 경로의 일부입니다. Promise.all을 넘어선 성숙한 에이전트 능력입니다.
탐색 에이전트는 제한적입니다: 읽기 전용, 쓰기/삭제/리다이렉트/히어독 없음, 병렬 grep/읽기에 집중. 자율성과 제약의 균형입니다.
도구 실행: 동시성과 내결함성
도구는 그룹화됩니다: 읽기 전용은 병렬로, 위험한 것은 직렬로. 스트리밍 실행기는 다음을 가집니다:
- 오류 시 형제 작업 취소
user_interruptedvssibling_errorvsstreaming_fallback- 순서를 위한 버퍼링
- 인터럽트 처리
제품은 멈춤과 충돌에서 살아남습니다.
자멸 없는 배시: 보안 편집증
bashPermissions와 bashSecurity는 다음을 차단합니다:
- 명령/프로세스 치환
- 히어독/zsh 등호
zmodload/ztcp/zpty- 난독화된 플래그
env/sudo/nice/timeout- 공백/이스케이핑
LLM의 실제 셸 공격에 대비한 성숙한 레이어입니다.
인간적인 손길: 버디와 애니메이션
buddy/ — ASCII 스프라이트, 말풍선, 애니메이션. 터미널 동반자가 CLI에 생명을 불어넣습니다.
핵심 요약:
- 빠른 모드 시작을 위한 동적 임포트
- 규모 타협을 가진 오케스트레이션 허브로서의
main.tsx - 격리와 생명주기를 가진 에이전트 인프라
- 오류 처리와 함께하는 병렬/직렬 도구 호출
- 셸 공격에 대비한 배시 보안
- 버디와 함께하는 터미널 UI용 리액트/Ink
— Editorial Team
아직 댓글이 없습니다.