AI Agent는 정확히 무엇을 하는가? Claude Code 50만 줄 코드 유출 전면 분석
- 핵심 관점: Anthropic의 AI 코딩 도구 Claude Code의 소스 코드 유출 사건은, 그 강력한 성능의 핵심이 AI 모델 자체가 아니라 모델을 둘러싼 방대하고 복잡한 엔지니어링 아키텍처에 있음을 드러냈으며, 이는 향후 AI 제품의 핵심 경쟁 장벽이 될 수 있다.
- 핵심 요소:
- 유출된 소스 코드 규모는 51.2만 줄에 달하지만, AI 모델을 직접 호출하는 인터페이스 코드는 1.6%에 불과하며, 나머지 98.4%는 엔지니어링 아키텍처 코드이다.
- 핵심 엔지니어링 모듈에는 쿼리 엔진, 도구 시스템, 보안 권한 제어 및 다중 에이전트 오케스트레이션 시스템이 포함되어 있으며, 이는 LLM을 코어로 하는 완전한 런타임 환경을 구성한다.
- 비용을 통제하기 위해 복잡한 캐싱 메커니즘을 설계했으며, 캐시 히트와 캐시 미스 시의 API 호출 비용 차이는 10배에 달해, 캐시 관리가 비용 통제의 핵심이다.
- 유출된 코드에는 44개의 기능 스위치가 포함되어 있으며, 이는 KAIROS라는 자율 에이전트 시스템을 가리키며, 사용자의 주의력에 따라 AI의 적극성을 동적으로 조절할 수 있다.
- 코드에는 완전한 가상 펫 시스템(BUDDY)이 숨겨져 있으며, 다양한 종, 희귀도 등급 및 장식품을 포함하고 있으며, 원래 2026년 봄 출시를 계획했다.
512,000줄의 코드, 1906개의 파일, 59.8MB의 소스맵. 3월 31일 새벽, Solayer Labs의 Chaofan Shou는 Anthropic의 플래그십 제품 Claude Code의 완전한 소스 코드가 공개 npm 저장소에 노출된 것을 발견했습니다. 몇 시간 만에 코드는 GitHub에 미러링되었고, 포크 수는 41,000개를 돌파했습니다.
이것은 Anthropic이 처음 저지른 실수가 아닙니다. 2025년 2월 Claude Code가 처음 출시되었을 때, 동일한 소스맵 유출이 한 번 발생했습니다. 이번 버전은 v2.1.88이며, 유출 원인도 동일합니다. Bun 빌드 도구가 기본적으로 소스맵을 생성하는데, .npmignore 파일에서 이 파일을 누락시켰습니다.
대부분의 보도는 유출된 내용 속의 이스터 에그를 열거하고 있습니다. 예를 들어 가상 펫 시스템이 있고, Claude가 익명으로 오픈소스 프로젝트에 코드를 제출할 수 있는 '언더커버 모드'가 있습니다. 그러나 진짜로 파헤쳐볼 가치가 있는 질문은, 왜 동일한 Claude 모델이 웹 버전과 Claude Code에서 그렇게 많은 차이를 보이는가? 512,000줄의 코드는 도대체 무엇을 하고 있는가? 입니다.
모델은 빙산의 일각일 뿐
답은 코드 구조에 숨어 있습니다. GitHub 커뮤니티의 유출 소스 코드 역분석에 따르면, 512,000줄의 TypeScript 코드 중 AI 모델을 직접 호출하는 인터페이스 코드는 약 8,000줄에 불과하며, 이는 전체의 1.6%를 차지합니다.

나머지 98.4%는 무엇을 하고 있을까요? 가장 큰 두 모듈은 쿼리 엔진(4.6만 줄)과 도구 시스템(2.9만 줄)입니다. 쿼리 엔진은 LLM API 호출, 스트리밍 출력, 캐시 오케스트레이션 및 멀티턴 대화 관리를 처리합니다. 도구 시스템은 약 40개의 내장 도구와 50개의 슬래시 명령어를 정의하여 일종의 플러그인 아키텍처를 형성하며, 각 도구는 독립적인 권한 제어를 갖습니다.
이 외에도 2.5만 줄의 터미널 UI 렌더링 코드(그중 print.ts라는 파일은 5594줄로 길며, 단일 함수가 3167줄에 걸쳐 있음), 2만 줄의 보안 및 권한 제어(23개의 번호가 매겨진 Bash 보안 점검과 18개의 차단된 Zsh 내장 명령어 포함), 그리고 1.8만 줄의 멀티 에이전트 오케스트레이션 시스템이 있습니다.
머신러닝 연구자 Sebastian Raschka는 유출 코드를 분석한 후 지적하기를, Claude Code가 동일 모델의 웹 버전보다 강력한 이유는 핵심이 모델 자체가 아니라 모델 주변에 구축된 소프트웨어 스캐폴딩, 즉 저장소 컨텍스트 로딩, 전용 도구 스케줄링, 캐시 전략 및 하위 에이전트 협업에 있다고 했습니다. 그는 심지어 동일한 엔지니어링 아키텍처를 DeepSeek이나 Kimi와 같은 다른 모델에 적용해도 유사한 프로그래밍 성능 향상을 얻을 수 있을 것이라고 생각합니다.
직관적인 비교가 이 격차를 이해하는 데 도움이 될 수 있습니다. ChatGPT나 Claude 웹 버전에 질문을 입력하면, 모델이 처리 후 답변을 반환하고, 대화가 끝나면 아무것도 남지 않습니다. 하지만 Claude Code의 접근 방식은 완전히 다릅니다. 시작 시 먼저 사용자의 프로젝트 파일을 읽고, 코드베이스 구조를 이해하며, '테스트에서 데이터베이스를 mock 하지 마세요'와 같은 사용자의 이전 선호도를 기억합니다. 이는 사용자의 터미널에서 직접 명령을 실행하고, 파일을 편집하며, 테스트를 실행할 수 있으며, 복잡한 작업을 만나면 여러 하위 작업으로 분할하여 다른 하위 에이전트에 병렬 처리하도록 할당합니다. 달리 말하면, 웹 버전 AI는 질의응답 창인 반면, Claude Code는 사용자의 컴퓨터에 사는 협력자입니다.
누군가는 이 아키텍처를 운영체제에 비유합니다: 42개의 내장 도구는 시스템 호출에 해당하고, 권한 시스템은 사용자 관리에 해당하며, MCP 프로토콜은 장치 드라이버에 해당하고, 하위 에이전트 오케스트레이션은 프로세스 스케줄링에 해당합니다. 각 도구는 출고 시 기본적으로 '불안전, 쓰기 가능'으로 표시되며, 개발자가 이를 안전하다고 명시적으로 선언하지 않는 한입니다. 파일을 편집하는 도구는 사용자가 해당 파일을 먼저 읽었는지 강제로 확인하며, 읽지 않았다면 수정을 허용하지 않습니다. 이것은 채팅봇에 몇 가지 도구를 추가한 것이 아니라, LLM을 커널로 하고 완전한 보안 메커니즘을 갖춘 런타임 환경입니다.
이는 한 가지를 의미합니다: AI 제품의 경쟁 장벽은 모델 계층이 아닌 엔지니어링 계층에 있을 수 있습니다.
캐시 미스마다, 비용이 10배 증가
유출 코드에는 promptCacheBreakDetection.ts라는 파일이 있으며, 이는 프롬프트 캐시 무효화를 유발할 수 있는 14가지 벡터를 추적합니다. 왜 Anthropic의 엔지니어들은 캐시 미스를 방지하기 위해 이렇게 많은 노력을 기울일까요?
Anthropic의 공식 가격을 보면 알 수 있습니다. Claude Opus 4.6을 예로 들면, 표준 입력 가격은 100만 토큰당 5달러이지만, 캐시가 히트하면 읽기 가격은 0.5달러에 불과하여 90% 저렴합니다. 반대로 말하면, 캐시 미스가 발생할 때마다 추론 비용은 10배로 뛰어오릅니다.

이것은 유출 코드에서 '과잉 설계'로 보일 수 있는 많은 아키텍처 결정을 설명합니다. Claude Code는 시작 시 현재 git 브랜치, 최근 커밋 기록 및 CLAUDE.md 파일을 컨텍스트로 로드하며, 이러한 정적 콘텐츠는 전역적으로 캐시되고, 경계 마커를 사용하여 동적 콘텐츠와 분리되어 각 대화가 기존 컨텍스트를 반복 처리하지 않도록 합니다. 코드에는 sticky latches라는 메커니즘도 있어, 모드 전환이 이미 확립된 캐시를 파괴하는 것을 방지합니다. 하위 에이전트는 자신의 컨텍스트 창을 새로 구축하는 대신 부모 프로세스의 캐시를 재사용하도록 설계되었습니다.
여기서 자세히 살펴볼 만한 세부 사항이 있습니다. AI 프로그래밍 도구를 사용해본 사람들은 알겠지만, 대화가 길어질수록 AI 응답이 느려집니다. 왜냐하면 각 턴마다 이전 기록을 모델에 다시 전송해야 하기 때문입니다. 일반적인 방법은 공간을 확보하기 위해 오래된 메시지를 삭제하는 것이지만, 문제는 어떤 메시지라도 삭제하면 캐시의 연속성이 깨져 전체 대화 기록을 다시 처리해야 하며, 지연 시간과 비용이 동시에 급증한다는 점입니다.
유출 코드에는 cache_edits라는 메커니즘이 존재하며, 이는 메시지를 실제로 삭제하지 않고 API 계층에서 오래된 메시지에 '건너뛰기' 표시를 하는 방식입니다. 모델은 이 메시지를 볼 수 없지만, 캐시의 연속성은 깨지지 않습니다. 이는 몇 시간 동안 지속된 긴 대화에서 수백 개의 오래된 메시지를 정리한 후에도 다음 턴의 응답 속도가 첫 번째 턴과 거의 동일하게 빠르다는 것을 의미합니다. 일반 사용자에게 이것이 바로 'Claude Code가 왜 무한히 긴 대화를 지원하면서도 느려지지 않는가'에 대한 근본적인 답변입니다.

유출된 내부 모니터링 데이터(2026년 3월 10일 날짜가 표시된 autoCompact.ts 코드 주석)에 따르면, 자동 압축 실패 상한선을 도입하기 전에 Claude Code는 매일 약 25만 번의 API 호출을 낭비했습니다. 1279개의 사용자 세션에서 50회 이상의 연속적인 압축 실패가 발생했으며, 가장 심각한 세션은 3272회 연속 실패했습니다. 수정 방법은 단 한 줄의 제한을 추가하는 것이었습니다: MAX_CONSECUTIVE_AUTOCOMPACT_FAILURES = 3.
따라서 AI 제품에 있어서, 모델 추론 비용이 가장 비싼 계층이 아닐 수 있으며, 캐시 관리 실패가 가장 비쌀 수 있습니다.
44개의 스위치, 모두 같은 방향을 가리킴
유출 코드에는 44개의 피처 플래그(feature flags)가 숨어 있습니다. 이미 컴파일된 기능 스위치지만, 공개되지는 않았습니다. 커뮤니티 분석에 따르면, 이 플래그들은 기능 영역별로 다섯 가지 범주로 나뉘며, 그중 가장 밀도가 높은 것은 '자율 에이전트' 범주(12개)로, KAIROS라는 시스템을 가리킵니다.
KAIROS는 소스 코드에서 150회 이상 참조되며, 상주 백그라운드 데몬 모드입니다. Claude Code는 더 이상 사용자가 능동적으로 호출할 때만 응답하는 도구가 아니라, 지속적으로 관찰, 기록, 적절한 시기에 능동적으로 행동하는, 항상 백그라운드에서 실행되는 에이전트가 됩니다. 전제는 사용자를 방해하지 않는 것이며, 사용자를 15초 이상 차단할 수 있는 모든 작업은 지연 실행됩니다.

KAIROS에는 또한 터미널 포커스 인식 기능이 내장되어 있습니다. 코드에는 terminalFocus 필드가 있어 사용자가 터미널 창을 보고 있는지 실시간으로 감지합니다. 사용자가 브라우저나 다른 애플리케이션으로 전환하면, 에이전트는 사용자가 '부재 중'이라고 판단하여 자율 모드로 전환되어 작업을 능동적으로 실행하고, 코드를 직접 커밋하며, 사용자의 확인을 기다리지 않습니다. 사용자가 터미널로 돌아오면, 에이전트는 즉시 협업 모드로 돌아갑니다: 방금 무엇을 했는지 먼저 보고한 후, 사용자의 의견을 구합니다. 자율성 정도는 고정된 것이 아니라 사용자의 주의력에 따라 실시간으로 변동합니다. 이것은 AI 도구의 오랜 난제를 해결합니다: 완전히 자율적인 AI는 불안감을 주고, 완전히 수동적인 AI는 효율이 너무 낮습니다. KAIROS의 선택은 AI의 능동성을 사용자의 주의력에 따라 동적으로 조절하는 것으로, 사용자가 보고 있으면 얌전히 있고, 사용자가 자리를 비우면 스스로 일을 합니다.
KAIROS의 또 다른 하위 시스템은 autoDream으로, 5개의 세션이 누적되거나 24시간 간격으로 에이전트는 백그라운드에서 '반성' 프로세스를 시작하며, 네 단계로 진행됩니다. 먼저 기존 기억을 스캔하여 현재 무엇을 알고 있는지 파악합니다. 그런 다음 대화 로그에서 새로운 지식을 추출합니다. 그 후 새 지식과 기존 지식을 병합하여 모순을 수정하고 중복을 제거합니다. 마지막으로 인덱스를 정리하여 오래된 항목을 삭제합니다. 이 설계는 인지과학의 기억 공고화 이론에서 차용했습니다. 사람이 수면 중에 낮 동안의 기억을 정리하는 것처럼, KAIROS는 사용자가 자리를 비울 때 프로젝트 컨텍스트를 정리합니다. 일반 사용자에게 이것은 Claude Code를 사용할수록, 단순히 '사용자가 말한 것을 기억하는' 것이 아니라 프로젝트에 대한 이해가 더 정확해진다는 것을 의미합니다.
두 번째 큰 범주는 '안티 디스틸레이션 및 보안'(8개의 플래그)입니다. 그중 가장 주목할 만한 것은 fake_tools 메커니즘으로, 4가지 조건이 동시에 충족될 때(컴파일 타임 플래그 활성화, CLI 진입점 활성화, 제1자 API 사용, GrowthBook 원격 스위치가 true), Claude Code는 API 요청에 가짜 도구 정의를 주입하여, 경쟁사 모델 훈련을 위해 API 트래픽을 녹화 중일 수 있는 데이터셋을 오염시키는 것이 목적입니다. 이것은 AI 군비 경쟁에서 새로운 방어 형태로, 상대방이 베끼는 것을 막는 것이 아니라, 상대방이 잘못된 것을 베끼게 만드는 것입니다.
또한, 코드에는 Capybara 모델 코드명(표준판, fast판, 백만 컨텍스트 창판의 세 계층으로 구분)이 등장하며, 이는 커뮤니티에서 널리 Claude 5 시리즈의 내부 코드명으로 추측되고 있습니다.
이스터 에그: 512,000줄의 코드 속에 전자 펫이 숨어 있다
모든 진지한 엔지니어링 아키텍처와 보안 메커니즘 사이에서, Anthropic의 엔지니어들은 또한 완전한 가상 펫 시스템을 은밀히 만들었으며, 내부 코드명은 BUDDY입니다.
유출 코드와 커뮤니티 분석에 따르면, BUDDY는 의인화된 터미널 펫으로, ASCII 말풍선 형태로 사용자 입력창 옆에 나타납니다. 18개의 종(카피바라, 도롱뇽, 버섯, 유령, 용, 그리고 Pebblecrab, Dustbunny, Mossfrog와 같은 일련의 오리지널 생물 포함)이 있으며, 희귀도에 따라 다섯 등급으로 나뉩니다: 일반(60%), 희귀(25%), 레어(10%), 에픽(4%), 레전더리(1%). 각 종에는 '샤이니 변종'도 있으며, 가장 희귀한 Shiny Legendary Nebulynx의 출현 확률은 만 분의 일에 불과합니다.
각 BUDDY에는 다섯 가지 속성이 있습니다: DEBUGGING(디버깅), PATIENCE(인내심), CHAOS(혼돈), WISDOM(지혜), SNARK(독설). 또한 모자를 쓸 수 있으며, 옵션으로는 왕관, 실크햇, 프로펠러 모자, 후광, 마법사 모자, 심지어 미니 오리까지 있습니다. 사용자 ID의 해시값


