Claude 가 92% 캐시 적중률을 달성한 방법에 대한 사례 연구
AI 에이전트가 한 걸음 내딛을 때마다, 세금을 내야 합니다.
처음부터 모든 것을 다시 읽어야 하거든요.
시스템 명령어. 도구 정의. 세 턴 전에 이미 로드한 프로젝트 컨텍스트. 전부 다요. 매 턴마다 말이죠.
이것이 바로 컨텍스트 세금입니다. 그리고 장기 실행 에이전트 워크플로우에서 이것은 종종 전체 AI 인프라에서 가장 비싼 비용 항목입니다.
계산을 해보겠습니다: 20,000 토큰의 시스템 프롬프트를 50턴 동안 실행하면 100만 토큰의 중복 연산이 정가로 청구되어 새로운 가치를 전혀 창출하지 못합니다.
해결책은 프롬프트 캐싱입니다. 하지만 이를 제대로 사용하려면 내부에서 실제로 무슨 일이 일어나는지 이해해야 합니다.
무엇이 변하고 무엇이 변하지 않는지부터 파악하세요
무엇이든 최적화하기 전에, 에이전트의 프롬프트(컨텍스트) 구조에 대해 명확히 생각해야 합니다.
에이전트가 보내는 모든 요청에는 근본적으로 다른 두 부분이 있습니다.
정적 접두사: 시스템 명령어, 도구 정의, 프로젝트 컨텍스트, 행동 지침이 포함됩니다. 이 콘텐츠는 세션의 모든 턴에서 동일합니다.
동적 꼬리: 사용자 메시지, 도구 출력, 터미널 관찰 내용입니다. 이는 모든 요청에 고유하며 대화가 진행됨에 따라 길어집니다.

이 구분이 전부입니다. 정적 접두사는 이유 없이 계속 재연산하는 비싼 부분입니다. 동적 꼬리는 실제로 새로운 연산이 필요한 유일한 부분입니다.
프롬프트 캐싱은 정적 접두사의 수학적 상태를 저장하여 향후 요청이 이를 완전히 재연산하지 않도록 건너뛰는 방식으로 작동합니다. 접두사를 한 번 처리하는 데 비용을 지불합니다. 이후의 모든 턴은 메모리에서 읽어옵니다.
왜 효과적인가: 트랜스포머가 실제로 하는 일
캐싱이 왜 그렇게 효과적인지 진정으로 이해하려면, 모델이 프롬프트를 읽을 때 내부에서 무슨 일이 일어나는지 이해해야 합니다.
모든 LLM 추론 요청에는 두 단계가 있습니다.
1단계: 프리필
이 단계에서 모델은 전체 입력 프롬프트를 처리합니다. 연산 바운드(compute-bound) 단계로, 컨텍스트의 모든 토큰에 대해 밀집 행렬 곱셈을 실행합니다. 모델은 모든 것을 읽고 그 표현을 구축합니다. 느리고 비싼 단계입니다.
2단계: 디코드
이 단계에서 모델은 출력 토큰을 한 번에 하나씩 생성합니다. 연산 바운드보다는 메모리 바운드(memory-bound)에 가깝습니다. 모델이 무거운 계산을 실행하기보다는 이전에 계산된 상태를 읽는 데 대부분의 시간을 보내기 때문입니다.

프리필 단계 동안 트랜스포머는 각 토큰에 대해 Query, Key, Value 세 개의 벡터를 구축합니다. 어텐션 메커니즘은 이를 사용하여 각 토큰이 시퀀스 내의 다른 모든 토큰과 어떻게 관련되는지 파악합니다.
여기에 중요한 통찰이 있습니다: Key 및 Value 벡터는 그 이전에 오는 토큰에만 의존합니다. 특정 접두사에 대해 계산되고 나면, 절대 변경될 필요가 없습니다.
아래 그림은 방금 논의한 내용을 시각적으로 설명합니다:

캐싱이 없으면, 이러한 Key-Value 텐서는 요청이 완료되는 즉시 폐기됩니다. 다음 요청은 처음부터 시작하여 20,000 토큰 모두에 대해 이를 다시 계산합니다.
KV 캐싱은 이러한 텐서를 저장하여 이 문제를 해결합니다. 인프라는 이를 입력 텍스트의 암호화 해시로 색인화하여 추론 서버에 보관합니다. 동일한 접두사로 새 요청이 오면 해시가 일치하고, 텐서가 즉시 검색되며, 모델은 모든 연산을 건너뜁니다.
이로 인해 생성된 토큰당 계산 복잡도가 O(n²)에서 O(n)으로 떨어집니다. 50턴에 걸쳐 반복되는 20,000 토큰 접두사의 경우, 이는 엄청난 감소입니다.
경제성
가격 구조를 이해하는 것이 이 아키텍처 결정을 그렇게 중요하게 만드는 이유입니다.
Anthropic이 모델 제품군 전반에 걸쳐 캐싱 가격을 책정하는 방식은 다음과 같습니다:

기억해야 할 세 가지 숫자:
- 캐시 읽기는 기본 입력 가격의 10% 로, 캐시에서 읽은 모든 토큰에 대해 90% 할인
- 캐시 쓰기는 기본 입력 가격보다 25% 더 비싸며, KV 텐서를 저장하기 위한 소액 프리미엄
- 확장된 1시간 캐싱은 기본 가격의 2배
이 계산은 캐시 적중률이 높게 유지될 때만 성립합니다. 이것이 실제로 어떻게 보이는지에 대한 최고의 실제 사례로 이어집니다.
Claude Code: 30분 세션 워크스루
Claude Code는 전적으로 한 가지 목표를 중심으로 구축되었습니다: 캐시를 활성 상태로 유지하는 것입니다.
이것이 구체적으로 무엇을 의미하는지 이해하기 위해, 일반적인 30분 코딩 세션이 어떻게 보이는지 살펴보고 정확히 무엇이 청구되고 무엇이 청구되지 않는지 추적해 보겠습니다.
0분: 세션 시작
Claude Code는 시스템 프롬프트와 도구 정의를 로드합니다. 또한 프로젝트 루트의 CLAUDE.md 파일을 읽어 코드베이스와 규칙을 설명합니다. 이 페이로드는 정기적으로 20,000 토큰을 초과합니다.
이것은 전체 세션에서 가장 비싼 순간입니다. 모든 단일 토큰이 새 것입니다. 하지만 이 비용은 한 번만 지불하면 됩니다.
1분에서 5분: 첫 번째 명령
"인증 모듈을 살펴보고 개선 사항을 제안해 줘"와 같은 첫 번째 지시를 입력합니다.
Claude Code는 Explore Subagent를 실행합니다. 코드베이스를 탐색하고, 파일을 열고, grep 명령을 실행하고, 관련 코드의 그림을 구축합니다. 이 모든 것이 동적 꼬리에 추가됩니다.
20,000 토큰의 정적 기반은요? 이미 캐시에 있습니다. $3.00/MTok 대신 $0.30/MTok으로 다시 읽힙니다. 새로운 도구 출력과 메시지에 대해서만 비용을 지불하고 있습니다.
6분에서 15분: 심층 작업
Plan Subagent는 Explore Subagent의 결과를 받습니다. 원시 결과를 그대로 전달하는 대신(동적 꼬리를 불필요하게 부풀릴 수 있음), Claude Code는 간결한 요약을 전달합니다. 이렇게 하면 꼬리를 관리 가능하게 유지하고 캐시 효율성을 유지합니다.
플래너는 구조화된 구현 계획을 생성합니다. 검토하고 승인하면 Claude Code가 변경을 시작합니다. 이 루프의 모든 턴은 캐시에서 20,000 토큰 접두사를 읽습니다. 각 캐시 적중은 TTL을 재설정하여 향후 턴을 위해 캐시를 활성 상태로 유지합니다.
16분에서 25분: 반복
조정을 요청합니다. Claude Code는 접근 방식을 수정합니다. 더 많은 도구 호출, 더 많은 터미널 출력. 동적 꼬리는 커지고 있지만, 이 세션의 새롭고 고유한 콘텐츠만을 나타냅니다.
이 시점에서 세션은 총 수십만 토큰을 처리했습니다. 하지만 20,000 토큰 기반은 매 턴마다 캐시에서 읽혔습니다.
28분: /cost 실행
캐싱이 없으면, 이와 같은 세션은 쉽게 200만 토큰을 초과합니다. Sonnet 4.5 요금으로 약 $6.00입니다.
캐싱이 높은 효율로 실행되는 경우:
- 대다수의 토큰은 $0.30/MTok으로 캐시에서 읽힙니다
- 새 동적 꼬리 토큰만 새로 계산됩니다
실제로는 단일 작업에서 80% 이상의 비용 절감을 기대할 수 있습니다. 이제 여기에 모든 사용자, 매일을 곱해 보세요.
요약하자면, 세션이 진행됨에 따라 시스템 프롬프트 레이아웃이 어떻게 보이는지는 다음과 같습니다:

모든 것을 무너뜨리는 규칙
프롬프트 캐싱에 대해 가장 직관에 반하는 점이 있습니다.
1 + 2 = 3입니다. 하지만 2 + 1은 캐시 미스입니다.
인프라는 프롬프트를 해시합니다. 해시는 암호화를 위한 식별자입니다. 해당 순서에서 무언가가 변경되면 해시가 변경됩니다. 캐시는 비어 있습니다. 전체 접두사가 정가로 다시 계산됩니다.
이로부터 따르는 세 가지 규칙:
- 세션 중에 도구를 추가하거나 제거하지 마십시오. 캐시된 접두사에는 도구가 포함됩니다. 도구를 변경하면 그 이후의 모든 것이 무용지물이 됩니다.
- 세션 중간에 모델을 절대 전환하지 마십시오. 캐시는 모델별로 다릅니다. 대화 중간에 더 저렴한 모델로 전환하려면 전체 캐시를 재구축해야 합니다.
- 상태를 변경하기 위해 접두사를 절대 변경하지 마십시오. 대신 Claude Code는 다음 사용자 메시지에 시스템을 상기시키는 태그를 추가합니다. 접두사는 절대 변경되지 않습니다.
여러분에게 의미하는 바
위의 모든 내용은 Claude Code가 캐싱을 처리하는 방법을 설명합니다. 여러분이 자신만의 에이전트를 만드는 경우에도 동일한 규칙이 적용됩니다.
프롬프트를 구성하는 방법은 다음과 같습니다:
- 맨 위에는 시스템 명령어와 규칙이 있습니다. 중간에 변경하지 마십시오.
- 필요할 모든 도구를 미리 로드하십시오. 추가하거나 제거하지 마십시오.
- 그 다음에는 검색된 컨텍스트와 문서가 옵니다. 지속 기간 동안 정적입니다.
- 맨 아래에는 대화 기록과 도구의 출력이 있습니다.
자동 캐싱이 켜져 있으면, 대화가 진행됨에 따라 중단점이 자동으로 앞으로 이동합니다.
Claude Code는 자체 캐시를 관리합니다. Anthropic은 방금 API에 자동 캐싱을 추가했으므로, 여러분도 자신의 에이전트에 대해 동일한 작업을 수행할 수 있습니다.
자동 캐싱이 없으면 토큰 경계가 어디인지 기억해야 했습니다. 잘못된 경계는 캐시에 도달하지 못하는 것을 의미했습니다.

캐시 안전 포크를 사용하여 컨텍스트 제한에 맞게 압축하십시오. 동일한 시스템 프롬프트, 도구 및 대화를 사용한 다음 압축을 새 메시지로 추가하십시오.

압축 호출은 마지막 호출과 거의 동일하게 보입니다. 캐시된 접두사가 다시 사용됩니다. 새로 청구되는 유일한 것은 압축 명령어입니다.
API가 작동하는지 확인하려면 모든 응답에서 다음 세 가지 필드를 주시하십시오:
- cache_creation_input_tokens: 메모리에 저장된 토큰
- cache_read_input_tokens: 메모리에서 읽은 토큰
- input_tokens: 평소처럼 처리된 토큰
캐시 효율성 점수는 생성 토큰 수와 비교한 읽기 토큰 수입니다. 가동 시간을 주시하는 것과 같은 방식으로 이를 주시하십시오.
핵심 요점
프롬프트 캐싱은 켜는 기능이 아닙니다. 그것은 여러분이 구축하는 아키텍처 규율입니다.
Claude Code는 대규모로 수행되었을 때 그 분야가 어떻게 보이는지에 대한 최고의 예입니다.
92%의 캐시 적중률. 81%의 비용 절감.
에이전트를 만드는 경우 이것이 청사진입니다. 세금을 무시할 수 없습니다. 존재합니다. 중요한 것은 여러분이 그것에 대해 비용을 지불하고 있는지 아니면 없애고 있는지입니다.





