원문 제목: "안쏘 Claude 코드 소스 코드 하나로 알아보기: 왜 다른 것들보다 더 효율적인가?"
원문 작성자: Yuker, AI 연구원
2026년 3월 31일, 보안 연구원 Chaofan Shou는 Anthropic이 npm에 게시한 Claude Code 패키지에서 소스 맵 파일이 분리되지 않은 것을 발견했습니다.
이는 의미합니다: Claude Code의 전체 TypeScript 소스 코드, 51.2만 줄, 1903개 파일이 이렇게 공개 네트워크에 노출되어 있습니다.
저는 물론 이렇게 많은 코드를 몇 시간 안에 다 볼 수는 없기에, 이 소스 코드를 읽을 때 세 가지 질문을 갖고 읽었습니다:
1. Claude Code와 다른 AI 프로그래밍 도구 사이의 본질적인 차이는 무엇인가요?
2. 왜 이것은 다른 사람보다 코드를 작성할 때의 "느낌"이 뛰어난가요?
3. 51만 줄의 코드 안에는 정확히 무엇이 숨겨져 있나요?
읽은 후, 제 첫 반응은: 이것은 AI 프로그래밍 어시스턴트가 아니라 운영 체제입니다.
원격 프로그래머를 고용했다고 상상해봅시다. 그에게 컴퓨터 원격 액세스 권한을 부여했습니다.
어떻게 할 것인가요?
만약 당신이 Cursor의 방법을 취한다면: 당신은 그를 옆에 앉히고, 그가 명령을 입력하기 전마다 확인하고 "승인"을 클릭합니다. 간단하지만 지켜봐야 합니다.
만약 당신이 GitHub Copilot Agent의 방법을 취한다면: 그에게 새 가상 머신을 제공하여 그가 자유롭게 시도하게 합니다. 그가 다 해내면 코드를 제출하고, 당신이 검토하여 병합합니다. 안전하지만 로컬 환경을 볼 수 없습니다.
만약 당신이 Claude Code의 방법을 취한다면:
당신은 그에게 직접 당신의 컴퓨터를 사용하도록 허용합니다. 그러나 그에게 극도로 정교한 보안 시스템을 설치했습니다. 그가 무엇을 할 수 있는지, 할 수 없는지, 어떤 작업은 귀결을 받아야 하는지, 무엇은 자체적으로 처리할 수 있는지, 심지어 rm -rf를 사용하고 싶다면 9단계 심사를 거쳐 실행해야 합니다.
이것이 세 가지 완전히 다른 보안 철학입니다:

Anthropic가 가장 어려운 길을 선택한 이유는 무엇인가요?
그것은 AI가 당신의 터미널, 환경, 구성을 사용하여 작업해야하기 때문에입니다 - 이것이 "실제로 코드를 작성하는 데 도움을 주는 것"이며 "깨끗한 방에서 코드 조각을 작성하고 복사하여 가져오는 것"이 아닙니다.
하지만 비용은 무엇인가요? 그들은 이를 위해 51 만 줄의 코드를 썼습니다.
대부분의 사람들은 AI 프로그래밍 도구가 이런 식이라고 생각합니다:
사용자 입력 → LLM API 호출 → 결과 반환 → 사용자에게 표시
Claude Code는 실제로 다음과 같습니다:
사용자 입력
→ 동적으로 7개의 레이어 시스템 프롬프트 단어 조합
→ Git 상태, 프로젝트 규칙, 히스토리 메모리 주입
→ 42가지 도구 각각에 대한 사용 설명서 포함
→ LLM이 어떤 도구를 사용할지 결정
→ 9단계 보안 검토 (AST 구문 분석, ML 분류기, 샌드박스 검사...)
→ 액세스 권한 경쟁 해결 (로컬 키보드 / IDE / 후크 / AI 분류기 동시 경쟁)
→ 200ms의 실수 방지 지연
→ 도구 실행
→ 결과 스트리밍 반환
→ 문맥이 극단적으로 가까워졌습니까? → 3단계 압축 (마이크로 압축 → 자동 압축 → 완전 압축)
→ 병렬 처리 필요? → 하위 에이전트 스완데르 생성
→ 작업 완료될 때까지 반복
위 내용이 무엇인지 궁금할 것입니다. 걱정하지 마세요. 하나씩 분해해보겠습니다.
src/constants/prompts.ts을 열면 이 함수를 볼 수 있습니다:

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가 시작될 때 이러한 규칙이 시스템 힌트 단어에 주입됩니다.
이것이 Claude Code가 절대로 단독으로 git push --force를 수행하지 않는 이유이며, 일부 도구가 그렇게 하는 이유는 — 모델이 더 똑똑한 것이 아니라 힌트 단어에 규칙이 이미 명확히 설명되어 있기 때문입니다.
그리고 Anthropic 내부 버전과 당신이 사용하는 것은 다릅니다
이런 종류의 분기가 코드에 많이 있습니다:

ant는 Anthropic 내부 직원을 가리킵니다. 그들의 버전에는 보다 자세한 코드 스타일 가이드("명확하지 않은 경우에 주석을 달지 마세요"), 더 공격적인 출력 전략("역삼각형 글쓰기"), 그리고 아직 A/B 테스트 중인 실험 기능(Verification Agent, Explore & Plan Agent)이 있습니다.
이것은 Anthropic가 Claude Code의 가장 큰 사용자임을 보여줍니다. 그들은 자사 제품을 사용하여 자사 제품을 개발하고 있습니다.
src/tools.ts를 열면 도구 등록 센터를 볼 수 있습니다.

42가지 도구가 있지만 대부분을 직접 본 적이 없을 것입니다. 많은 도구가 지연로드되기 때문입니다. 필요할 때만 Claude Code가 ToolSearchTool을 통해 필요한 만큼 주입합니다.
왜 이렇게 설계했을까요?
각 도구가 추가될수록 시스템 팁이 더해지고 토큰이 더 소비됩니다. 코드 한 줄만 변경을 원한다면 '작업 스케줄러'나 '팀 협업 관리자'를 로드할 필요가 없습니다.
좀 더 스마트한 디자인도 있습니다:

CLAUDE_CODE_SIMPLE=true를 설정하면 Claude Code에는 Bash, 파일 읽기, 파일 변경 세 가지 도구만 남습니다. 이는 극단주의자를 위한 백도어입니다.

기본값에 주목하세요: isConcurrencySafe 기본값은 false이고, isReadOnly 기본값은 false입니다.
이를 실패 시 안전 디자인이라고 합니다. 도구 작성자가 안전 속성을 선언하는 것을 잊었을 경우 시스템은 해당 도구를 '안전하지 않고 쓰기 가능한' 것으로 가정합니다. 과도한 보수주의를 지켜 한 가지 위험도 빠뜨리지 않습니다.

FileEditTool은 파일을 이미 FileReadTool로 읽었는지 확인합니다. 그렇지 않은 경우 직접 오류를 보고 변경할 수 없도록 막습니다.
이것이 Claude Code가 당신의 파일을 "빈틈 없이 덮어 쓰는 코드를 쓰기" 같은 도구와 달리 작동하지 않는 이유입니다. —— 이는 먼저 이해한 후 수정하도록 강요됩니다.
Claude Code를 사용한 사람들은 모두 느끼는 점이 있습니다: 그녀는 당신을 정말로 알고 있다는 것처럼 보입니다.
당신이 "테스트에서 데이터베이스를 mock하지 마십시오"라고 말하면, 그 다음 대화에서는 더 이상 mock하지 않을 것입니다. 당신이 "저는 백엔드 엔지니어이며 React 초심자입니다"라고 말하면, 그녀는 프런트엔드 코드를 설명할 때 백엔드에 대한 비유를 사용할 것입니다.
이 모든 것 뒤에는 완전한 메모리 시스템이 있습니다.

Claude Code는 다른 AI(클로드 소네트)를 사용하여 "어떤 메모리가 현재 대화와 관련이 있는지 결정합니다."
키워드 일치가 아니며, 벡터 검색이 아닙니다 — 모든 메모리 파일의 제목 및 설명을 빠르게 스캔하여 가장 관련성이 높은 5가지를 선택한 다음 해당 내용을 현재 대화 콘텍스트에 삽입합니다.
전략은 "정확도가 검출율보다 우선"입니다 — 유용한 메모리 하나를 놓친다 해도 관련 없는 메모리를 삽입하지 않습니다.
카이로스 모드: "꿈"을 꾸는 밤
이것이 가장 과학적이라고 느끼게 만드는 부분입니다.
코드에는 KAIROS라는 특성 플래그가 있습니다. 이 모드에서 장기 대화의 메모리는 구조화된 파일에 존재하지 않고 날짜별로 추가되는 로그에 존재합니다. 그런 다음 /dream 기능이 "밤"에(저널의 비활성 기간) 실행되어 이러한 원시 로그를 구조화된 주제 파일로 증류합니다.

AI가 "잠을 자는" 동안 메모리를 정리합니다. 이것은 엔지니어링이 아니라 생물공학입니다.
당신이 Claude Code에 복잡한 작업을 시키면, 그녀는 아마도 조용히 이것을 했습니다:

그것은 하위 에이전트를 생성합니다.
또한 하위 에이전트에는 재귀적으로 더 많은 하위 에이전트를 생성하는 것을 방지하기 위한 엄격한 '셀프 어웨어' 주입이 있습니다:

이 코드 부분은 말하고 있습니다: '너는 일꾼이야, 매니저가 아니다. 더 많은 사람을 고용하려 하지 말고, 혼자 일해.'
협력자 모드: 매니저 모드
협력자 모드에서 Claude Code는 순수한 작업 조정자가 되어 스스로 작업을 하지 않고 할당만 합니다:

코드 주석에 핵심 원칙 표시:
'병렬성은 당신의 슈퍼파워입니다'라고 말하는 코드 부분: 읽기 전용 리서치 작업: 병렬로 실행. 파일 쓰기 작업: 파일별로 직렬로 실행(충돌 방지).
Prompt Cache의 최적화
하위 에이전트의 캐시 히트율을 극대화하기 위해 모든 포크 에이전트의 툴 결과는 동일한 자리 표시자 텍스트를 사용합니다:
'포크 시작—백그라운드에서 처리 중'
왜냐하면 Claude API의 프롬프트 캐시는 바이트 수준 접두사 일치에 기반합니다. 만약 10개의 하위 에이전트의 접두사 바이트가 완전히 동일하다면, 첫 번째만 '콜드 스타트'가 필요하고 나머지 9개는 캐시 히트를 바로 받습니다.
이것은 호출할 때마다 몇 센트를 절약하는 최적화이지만 대규모 사용 시 많은 비용을 절약할 수 있습니다.
모든 LLM에는 컨텍스트 창 한도가 있습니다. 대화가 길어지면서 메시지 기록이 늘어나면 결국 한도를 초과하게 됩니다.
Claude Code는 이를 위해 세 가지 압축을 설계했습니다:

마이크로 압축은 이전 도구 호출 결과에만 영향을 줍니다 — 「10분 전에 읽은 500줄 파일 내용」을 [Old tool result content cleared]로 대체합니다.
힌트 단어와 대화 주제는 완전히 보존됩니다.
토큰 사용량이 컨텍스트 창의 87%에 가까워지면(창 크기 - 13,000 버퍼), 자동으로 트리거됩니다. 3회 연속 압축 실패 시 중단되는 퓨즈가 있어 무한 루프를 피합니다.
AI에게 전체 대화에 대한 요약을 생성하도록 하고, 모든 이전 메시지를 요약으로 대체합니다. 요약 생성에는 엄격한 전제 명령이 있습니다:

왜 이렇게 엄격한가요? 요약 프로세스 중에 AI가 다시 도구를 호출하면 더 많은 토큰이 사용되어 역효과가 발생합니다. 이 힌트는 "당신의 임무는 요약하는 것뿐입니다"라고 말하고 있습니다.
압축 후 토큰 예산:
· 파일 복구: 50,000 토큰
· 각 파일 상한선: 5,000 토큰
· 스킬 콘텐츠: 25,000 토큰
이러한 숫자는 무작정 정한 것이 아닙니다 — 그것들은 "작업 계속을 위한 충분한 컨텍스트 보존"과 "새로운 메시지 수신을 위한 충분한 공간 노출" 사이의 균형점에 있습니다.
51만 줄의 코드 중 LLM API를 실제로 호출하는 부분은 아마 5% 미만입니다. 나머지 95%는 무엇일까요?
· 보안 검사(하나의 BashTool을 위한 18개 파일)
· 권한 시스템(허용/거부/요청/통과 네 가지 상태 결정)
· 컨텍스트 관리(세 단계 압축 + AI 메모리 검색)
· 오류 복구 (퓨즈, 지수 백오프, Transcript 지속성)
· 다중 Agent 조정 (스웜 조정 + 이메일 통신)
· UI 상호작용 (140 개의 React 컴포넌트 + IDE 브릿지)
· 성능 최적화 (prompt 캐시 안정성 + 시작 시 병렬 사전 추출)
만약 당신이 AI Agent 제품을 개발 중이라면, 이것이 진정해야 할 문제입니다. 모델의 지능이 충분한지 여부가 아니라, 귀하의 플랫폼이 충분히 견고한지 여부입니다.
아름다운 프롬프트를 작성하는 것만으로는 충분하지 않습니다. Claude Code의 프롬프트는:
· 7계층 동적 조립
· 각 도구에는 별도의 사용 설명서가 함께 제공됨
· 캐시 경계의 정확한 분할
· 내부 및 외부 버전 각기 다른 명령어 집합
· 캐시 안정성을 유지하기 위해 도구 정렬 고정
이것은 엔지니어링적인 프롬프트 관리이며, craftsmanship이 아닙니다.
각 외부 종속성에는 해당하는 실패 전략이 있습니다:

42개의 도구 = 시스템 호출 권한 시스템 = 사용자 권한 관리 기술 시스템 = 앱 스토어 MCP 프로토콜 = 장치 드라이버 에이전트 스웜 = 프로세스 관리 컨텍스트 압축 = 메모리 관리 Transcript 지속성 = 파일 시스템
이것은 "대화형 봇에 몇 가지 도구를 추가하는 것"이 아닌, LLM을 핵심으로 한 운영 체제입니다.
51만 줄의 코드. 1903개의 파일. 18개의 보안 파일이 1개의 Bash 도구를 위해 존재합니다.
AI가 안전하게 한 줄의 명령을 누르는 데 9단계의 검토가 필요합니다.
이것이 Anthropic의 대답입니다: AI를 정말로 유용하게 하려면, 그것을 감옥에 가두어서도 안 되며, 벌써넘어 다니게 두어서도 안 됩니다. 그것에 대한 신뢰 시스템을 완전히 구축해야 합니다.
이 신뢰 구조의 비용은 51만 줄의 코드입니다.
BlockBeats 공식 커뮤니티에 참여하세요:
Telegram 구독 그룹:https://t.me/theblockbeats
Telegram 토론 그룹:https://t.me/BlockBeats_App
Twitter 공식 계정:https://twitter.com/BlockBeatsAsia