Anthropic의 Claude Code 소스 코드에 대한 종합 가이드: 다른 코드보다 나은 이유는 무엇일까요?

  • 2026년 3월 31일, 보안 연구원이 Claude Code의 TypeScript 소스 코드가 유출되어 51만 줄의 코드가 노출된 것을 발견했습니다.
  • Claude Code는 간단한 AI 어시스턴트가 아닌 운영 체제로 설계되어 로컬 환경 접근을 위한 엄격한 보안 프레임워크를 사용합니다.
  • 프롬프트 시스템은 동적 조립 및 캐싱 경계를 사용하여 비용과 속도를 최적화합니다.
  • 도구 시스템에는 42개의 도구가 포함되어 있으며, 지연 로딩 및 실패 폐쇄 설계로 안전을 위해 읽기 전 편집 규칙을 적용합니다.
  • 메모리 시스템은 AI 검색 및 야간 통합을 사용하여 사용자 선호도와 컨텍스트를 기억합니다.
  • 다중 에이전트 아키텍처는 하위 에이전트 생성 및 코디네이터 모드를 지원하여 병렬 작업 처리가 가능합니다.
  • 3계층 컨텍스트 압축은 대화 제한을 방지하며, 마이크로 압축, 자동 압축, AI 요약을 포함합니다.
  • 주요 통찰: AI 에이전트 개발은 엔지니어링 인프라에 초점을 맞추며, 프롬프트 엔지니어링은 체계적이고 설계는 실패를 고려해야 합니다.
요약

저자: 유커

2026년 3월 31일, 보안 연구원 차오판 쇼우는 앤스로픽이 npm에 게시한 클로드 코드 패키지에서 소스 맵 파일이 제거되지 않았다는 사실을 발견했습니다.

이는 클로드 코드의 전체 타입스크립트 소스 코드(512,000줄, 1,903개 파일)가 인터넷에 공개되었다는 것을 의미합니다.

단 몇 시간 만에 그 모든 코드를 다 읽어볼 수는 없었기에, 저는 세 가지 질문을 염두에 두고 소스 코드에 접근했습니다.

  1. 클로드 코드와 다른 AI 프로그래밍 도구들의 근본적인 차이점은 무엇인가요?

  2. 그는 왜 다른 사람들보다 코딩에 대한 감각이 더 뛰어난 걸까요?

  3. 51만 줄의 코드 속에 숨겨진 것은 무엇일까요?

그것을 읽고 나서 내 첫 반응은 ' 이건 인공지능 프로그래밍 도우미가 아니라 운영 체제잖아'였다.

먼저, 제 이야기를 하나 해드리겠습니다. 만약 여러분이 원격 프로그래머를 고용한다면요?

원격 프로그래머를 고용하고 그에게 컴퓨터에 대한 원격 액세스 권한을 부여했다고 상상해 보세요.

당신은 어떻게 할 건가요?

만약 당신이 커서 라면 이렇게 하세요: 커서를 당신 옆에 앉히고, 커서가 명령어를 입력하기 전에 그를 흘끗 보고 "허용"을 클릭하세요. 간단하고 명료하지만, 커서를 계속 주시해야 할 겁니다.

GitHub Copilot 에이전트 라면 다음과 같이 하세요. 새 가상 머신을 제공하고 자유롭게 실험할 수 있도록 하세요. 실험이 끝나면 코드를 커밋하고, 에이전트가 코드를 검토한 후 병합하세요. 이렇게 하면 보안이 유지되며, 에이전트는 에이전트의 로컬 개발 환경을 볼 수 없습니다.

클로드 코드를 사용하시는 경우:

당신은 그에게 컴퓨터를 직접 사용하도록 허락했지만, 매우 정교한 보안 시스템을 구축해 놓았습니다. 그가 할 수 있는 일과 할 수 없는 일, 당신의 승인이 필요한 작업, 그가 직접 할 수 있는 작업, 심지어 `rm -rf` 명령어 사용까지도 실행 전에 9단계의 검토를 거쳐야 합니다.

이것들은 완전히 다른 세 가지 보안 철학입니다:

앤트롭픽은 왜 가장 어려운 길을 선택했을까요?

오직 이런 방식으로만 AI는 사용자의 터미널, 환경, 설정을 활용하여 작동할 수 있습니다. 이것이 바로 "클린룸에서 코드를 작성한 후 복사해서 붙여넣는 것"이 ​​아니라, "사용자를 위해 코드를 작성해주는 것"의 진정한 의미입니다.

그렇다면 그 비용은 얼마였을까요? 그들은 이를 위해 51만 줄의 코드를 작성했습니다.

II. 당신이 인식하는 클로드 코드와 실제 클로드 코드의 차이점

대부분의 사람들은 인공지능 프로그래밍 도구가 다음과 같이 생겼을 것이라고 생각합니다.

클로드 코드의 실제 내용은 다음과 같습니다.

다들 맨 위에 뭐가 있는지 궁금하실 거예요. 걱정 마세요, 하나씩 분해해 볼게요.

세 번째이자 첫 번째 비밀은 단서 단어들이 적혀 있지 않고 "조립"되어 있다는 것입니다.

src/constants/prompts.ts 파일을 열면 이 함수를 볼 수 있습니다.

 export async function getSystemPrompt( tools: Tools, model: string, additionalWorkingDirectories?: string[], mcpClients?: MCPServerConnection[], ): Promise<string[]> { return [ // --- 静态内容(可缓存)--- getSimpleIntroSection(outputStyleConfig), getSimpleSystemSection(), getSimpleDoingTasksSection(), getActionsSection(), getUsingYourToolsSection(enabledTools), getSimpleToneAndStyleSection(), getOutputEfficiencySection(), // === 缓存边界=== ...(shouldUseGlobalCacheScope() ? [SYSTEM_PROMPT_DYNAMIC_BOUNDARY] : []), // --- 动态内容(每次不同)--- ...resolvedDynamicSections, ].filter(s => s !== null) }

SYSTEM_PROMPT_DYNAMIC_BOUNDARY를 확인하셨나요?

이것은 캐싱 경계 입니다. 경계 위쪽의 콘텐츠는 정적입니다. Claude API는 토큰 비용을 절감하기 위해 해당 콘텐츠를 캐시할 수 있습니다. 경계 아래쪽의 콘텐츠는 동적입니다. 현재 Git 브랜치, CLAUDE.md 프로젝트 구성, 이전에 저장하도록 설정한 기본 설정 등은 상호 작용할 때마다 변경됩니다.

그게 무슨 뜻이에요?

Anthropic은 프롬프트를 최적화를 위한 컴파일러 출력 으로 처리합니다. 정적 부분은 "컴파일된 바이너리"이고, 동적 부분은 "런타임 매개변수"입니다. 이러한 접근 방식의 장점은 다음과 같습니다.

  1. 비용 효율적 : 정적 데이터가 캐시되어 중복 청구를 방지합니다.

  2. 빠름 : 캐시 적중 시 이러한 토큰 처리를 건너뜁니다.

  3. 유연성 : 동적 구성 요소를 통해 각 대화는 현재 환경을 인식할 수 있습니다.

⛏️각 도구에는 자체 "사용 설명서"가 함께 제공됩니다.

저를 더욱 놀라게 한 것은 각 도구 디렉터리에 prompt.ts 파일 , 즉 LLM 사용자를 위해 특별히 작성된 사용자 설명서가 포함되어 있다는 점이었습니다.

BashTool의 파일(src/tools/BashTool/prompt.ts, 370번째 줄 부근)을 살펴보세요.

이 문서는 인간을 위해 작성된 것이 아니라 AI를 위해 작성된 행동 강령입니다 . 이 규칙들은 클로드 코드가 실행될 때마다 시스템 메시지에 삽입됩니다.

이것이 바로 Claude Code가 다른 도구들과 달리 임의로 `git push --force`를 호출하지 않는 이유입니다. 모델이 더 똑똑해서가 아니라, 프롬프트에 규칙이 명확하게 명시되어 있기 때문입니다.

또한, Anthropic의 내부 버전은 사용자가 현재 사용하고 있는 버전과 다릅니다.

이 코드에는 다음과 같은 분기문이 많이 포함되어 있습니다.

Ant는 Anthropic의 내부 직원을 지칭합니다. 그들의 버전은 더 자세한 코드 스타일 지침("이유가 명확하지 않은 경우 주석을 달지 마세요"), 더 적극적인 출력 전략("역피라미드 작성"), 그리고 아직 A/B 테스트 중인 몇 가지 실험적인 기능(검증 에이전트, 탐색 및 계획 에이전트)을 포함하고 있습니다.

이는 앤트로픽 자체가 클로드 코드의 최대 사용자임을 보여줍니다. 그들은 자사 제품을 활용하여 자체 제품을 개발하고 있는 것입니다.

네 번째이자 두 번째 비밀: 42가지 도구가 있지만, 당신은 빙산의 일각만 본 것뿐입니다.

src/tools.ts 파일을 열면 도구 레지스트리를 볼 수 있습니다.

총 42개의 도구가 있지만, 대부분은 직접 볼 수 없을 겁니다. 그 이유는 많은 도구가 지연 로딩 방식으로 작동하기 때문입니다. 즉, LLM이 필요로 할 때 ToolSearchTool을 통해 요청 시점에만 도구가 로드됩니다.

왜 이렇게 하는 거죠?

각 추가 도구마다 시스템 프롬프트에 대한 추가 설명이 필요하고 토큰 비용도 추가로 발생하기 때문입니다. 만약 클로드 코드(Claude Code)를 사용하여 코드 한 줄만 수정하려는 경우라면 "작업 스케줄러"와 "팀 협업 관리자"를 로드할 필요가 없습니다.

훨씬 더 스마트한 디자인이 있습니다.

CLAUDE_CODE_SIMPLE=true로 설정하면 Claude Code는 Bash, 파일 읽기, 파일 편집의 세 가지 도구만 사용하게 됩니다. 이는 최소한의 기능만 원하는 사용자를 위한 편법입니다.

1️⃣ 모든 도구는 동일한 공장에서 생산됩니다.

기본값을 참고하세요. isConcurrencySafe는 기본적으로 false이고, isReadOnly도 기본적으로 false입니다.

이를 '실패 시 폐쇄형 설계'라고 합니다. 도구 개발자가 보안 속성을 선언하는 것을 잊으면 시스템은 해당 도구가 "안전하지 않고 쓰기 가능한 상태"라고 가정합니다. 위험을 간과하는 것보다는 지나치게 보수적인 것이 낫습니다.

2️⃣ "먼저 읽고, 그 다음에 수정하라"는 철칙

FileEditTool은 FileReadTool을 사용하여 파일을 이미 읽었는지 확인합니다. 읽지 않았다면 오류를 보고하고 변경을 방지합니다.

이것이 바로 Claude Code가 다른 도구들처럼 "아무것도 없는 상태에서 코드를 생성하고 파일을 덮어쓰지" 않는 이유입니다. 수정하기 전에 코드를 이해하는 것이 필수적입니다.

다섯 번째, 세 번째 비밀: 기억 시스템, 즉 기억 시스템이 "당신을 기억할 수 있는" 이유

클로드 코드를 사용해 본 사람이라면 누구나 한 가지 공통점을 느낍니다. 바로 클로드 코드 가 마치 당신을 정말 잘 아는 것 같다는 점입니다.

"테스트에서 데이터베이스를 모킹하지 마"라고 말하면 다음 대화에서도 다시는 모킹하지 않을 겁니다. "나는 백엔드 엔지니어이고 React는 처음이야"라고 말하면 프런트엔드 코드를 설명할 때 백엔드 비유를 사용할 겁니다.

이 시스템의 이면에는 완벽한 메모리 시스템이 있습니다.

1️⃣ AI를 사용하여 기억을 되살리세요

클로드 코드는 또 다른 인공지능 (클로드 소네트)을 사용하여 "현재 대화와 관련된 기억이 무엇인지"를 판단합니다.

키워드 매칭도 아니고 벡터 검색도 아닙니다. 작은 모델이 모든 메모리 파일의 제목과 설명을 빠르게 스캔하고, 가장 관련성이 높은 파일을 최대 5개까지 선택한 다음, 해당 파일의 전체 내용을 현재 대화의 맥락에 삽입하는 것입니다.

전략은 "기억력보다 정확성"입니다. 맥락을 흐리게 하는 관련 없는 기억을 포함하는 것보다 잠재적으로 유용한 기억을 놓치는 것이 낫습니다.

⏰카이로스 모드: 야간 "꿈꾸기"

이 부분이 제가 가장 공상과학적이라고 생각하는 부분입니다.

코드에는 KAIROS라는 기능 플래그가 있습니다. 이 모드에서는 장시간 세션의 메모리가 구조화된 파일이 아닌 날짜 기반의 추가 전용 로그 에 저장됩니다. 그런 다음 "야간"(활동이 적은 시간대)에 /dream 스킬이 실행되어 이러한 원시 로그를 구조화된 토픽 파일로 정리합니다 .

인공지능은 "잠자는" 동안 기억을 정리합니다. 이는 더 이상 공학이 아니라 생체공학입니다.

여섯 번째이자 다섯 번째 비밀: 그것은 요원이 아니라...

클로드 코드에게 복잡한 작업을 요청하면, 클로드 코드는 조용히 다음과 같은 작업을 수행할 수 있습니다.

그것은 하위 에이전트를 생성했습니다.

또한, 하위 에이전트는 더 많은 하위 에이전트를 재귀적으로 생성하는 것을 방지하기 위해 엄격한 "자기 인식" 주입 기능을 갖추고 있습니다.

이 코드는 "당신은 관리자가 아니라 작업자입니다. 다른 사람을 고용할 생각은 하지 마세요. 직접 일을 하세요."라는 의미입니다.

👤 코디네이터 모드: 매니저 모드

조정자 모드에서 클로드 코드는 순수한 작업 조정자가 되어, 스스로는 아무것도 하지 않고 작업만 할당합니다.

핵심 원칙은 코드 주석에 적혀 있습니다.

"병렬 처리는 당신의 강력한 무기입니다." 읽기 전용 연구 작업: 병렬로 실행. 파일 쓰기 작업: 파일별로 그룹화하여 순차적으로 실행(충돌 방지).

🗣️최적화된 프롬프트 캐시

자식 에이전트의 캐시 적중률을 최대화하기 위해, 모든 분기된 자식 에이전트에 대한 도구 결과는 동일한 자리 표시자 텍스트를 사용합니다.

왜냐하면 Claude API의 프롬프트 캐시는 바이트 수준의 접두사 일치를 기반으로 하기 때문입니다. 10개의 하위 에이전트의 접두사 바이트가 완전히 동일하면 첫 번째 에이전트만 "콜드 스타트"가 필요하고 나머지 9개는 캐시를 직접 사용하게 됩니다.

이는 통화당 몇 센트를 절약하는 최적화이지만, 대규모로 사용할 경우 상당한 비용 절감 효과를 가져올 수 있습니다.

VII. 여섯 번째 비밀: 3중 압축 기술로 대화 길이가 "절대 제한을 넘지 않도록" 보장합니다.

모든 LLM에는 컨텍스트 창 제한이 있습니다. 대화가 길어지고 과거 메시지가 많을수록 이 제한을 초과할 가능성이 높아집니다.

클로드 코드(Claude Code)는 이러한 목적을 위해 3중 레이어 압축 설계를 사용합니다.

1️⃣ 첫 번째 레이어: 미세 압축 – 최소 비용

 export async function microcompactMessages(messages, toolUseContext, querySource) { // 时间触发:如果上次交互已过很久,服务器缓存已冷const timeBasedResult = maybeTimeBasedMicrocompact(messages, querySource) if (timeBasedResult) return timeBasedResult // 缓存编辑路径:通过API 的缓存编辑功能直接删除旧内容if (feature('CACHED_MICROCOMPACT')) { return await cachedMicrocompactPath(messages, querySource) } }

마이크로 압축은 이전 도구 호출 결과에만 영향을 미치며, " 10분 전에 읽은 500줄 파일의 내용"을 "[이전 도구 결과 내용이 지워졌습니다]" 로 바꿉니다.

프롬프트와 주요 대화 내용은 모두 그대로 보존됩니다.

2️⃣ 두 번째 층: 자동 압축 – 능동 수축

자동 트리거는 토큰 사용량이 컨텍스트 윈도우(윈도우 크기 - 13,000 버퍼)의 87%에 근접할 때 발생합니다. 연속 3회 압축 시도 실패 시 시도가 중단되는 서킷 브레이커가 구현되어 무한 루프를 방지합니다.

3️⃣ 세 번째 레이어: 완전 압축 – AI 요약

AI는 전체 대화 내용을 요약한 후, 과거의 모든 메시지를 해당 요약으로 대체합니다. 요약 생성에는 엄격한 사전 명령이 필요합니다.

왜 이렇게 엄격할까요? AI가 요약 과정 중에 도구를 다시 호출하면 토큰을 더 많이 소모하게 되어 비효율적이기 때문입니다. 이 지침은 본질적으로 "당신의 임무는 요약하는 것입니다. 다른 작업은 하지 마세요." 라고 말하는 것입니다.

압축된 토큰 예산:

  • 파일 복구: 50,000 토큰

  • 파일당 최대 5,000개의 토큰

  • 스킬 요구 사항: 토큰 25,000개

이 수치들은 단순히 임의적인 숫자가 아니라, "계속 작업할 수 있도록 충분한 맥락을 유지하는 것"과 "새로운 메시지를 수신할 충분한 공간을 확보하는 것" 사이의 균형을 나타냅니다.

8. 이 소스 코드를 읽고 무엇을 배웠습니까?

1️⃣ AI 에이전트의 작업량 중 90%는 "AI" 영역 외부에 있습니다.

51만 줄의 코드 중 실제로 LLM API를 호출하는 코드는 5%도 채 되지 않습니다. 그렇다면 나머지 95%는 무엇일까요?

  • 보안 검사 (BashTool 하나에 대한 18개 파일)

  • 접근 제어 시스템 (허용/거부/요청/통과 4단계 의사 결정 방식)

  • 컨텍스트 관리(3계층 압축 + AI 메모리 검색)

  • 오류 복구(회로 차단기, 지수 백오프, 기록 지속성)

  • 다중 에이전트 조정(스웜 오케스트레이션 + 이메일 통신)

  • UI 상호작용 (React 컴포넌트 140개 + IDE 브리지)

  • 성능 최적화 (프롬프트 캐시 안정성 + 시작 시 병렬 프리페칭)

인공지능 에이전트 제품을 개발하고 있다면, 이것이 바로 해결해야 할 진정한 문제입니다. 모델이 충분히 똑똑한지가 아니라, 기반 구조가 충분히 견고한지가 관건입니다.

2️⃣ 좋은 프롬프트 단어 프로젝트는 체계적인 프로젝트입니다.

단순히 좋은 프롬프트를 작성하는 것만으로는 충분하지 않습니다. 클로드 코드의 힌트는 다음과 같습니다.

  • 7층 동적 조립

  • 각 도구에는 사용자 설명서가 함께 제공됩니다.

  • 정확한 캐시 경계 구분

  • 내부 버전과 외부 버전은 서로 다른 명령어 세트를 가지고 있습니다.

  • 캐시의 안정성을 유지하기 위해 도구 정렬 방식이 고정되어 있습니다.

이것은 수작업이 아닌, 설계된 즉각적인 관리 기능입니다.

3️⃣ 실패를 염두에 두고 설계됨

각 외부 종속성에는 해당되는 실패 전략이 있습니다.

4️⃣앤트로픽은 클로드 코드를 운영체제처럼 다루고 있습니다.

42가지 도구 = 시스템 호출 권한 시스템 = 사용자 권한 관리 스킬 시스템 = 앱 스토어 MCP 프로토콜 = 장치 드라이버 에이전트 스웜 = 프로세스 관리 컨텍스트 압축 = 메모리 관리 기록 영구 저장 = 파일 시스템

이것은 "챗봇에 몇 가지 도구를 더한 것"이 아니라, LLM 커널을 탑재한 운영 체제입니다.

요약하다

51만 줄의 코드. 1,903개의 파일. 하나의 Bash 도구에 18개의 보안 파일이 있습니다.

9단계의 검토 과정을 거치는 것은 AI가 사용자를 위해 안전하게 명령어 하나를 입력할 수 있도록 보장하기 위한 것입니다.

앤트로픽의 답변은 다음과 같습니다. 인공지능을 진정으로 유용하게 만들려면, 인공지능을 가두거나 무방비 상태로 내버려 둘 수 없습니다. 인공지능을 위한 완벽한 신뢰 시스템을 구축해야 합니다.

이 신뢰 시스템을 구축하는 데 드는 비용은 51만 줄의 코드입니다.

공유하기:

작성자: PA荐读

이 글은 PANews 입주 칼럼니스트의 관점으로, PANews의 입장을 대표하지 않으며 법적 책임을 지지 않습니다.

글 및 관점은 투자 조언을 구성하지 않습니다

이미지 출처: PA荐读. 권리 침해가 있을 경우 저자에게 삭제를 요청해 주세요.

PANews 공식 계정을 팔로우하고 함께 상승장과 하락장을 헤쳐나가세요
PANews APP
지난 24시간 동안 전체 네트워크에서 총 2억 5400만 달러 규모의 계약이 청산되었으며, 주로 공매도 포지션이었습니다.
PANews 속보