AI 코딩 도구가 일상이 된 시대입니다. 하지만 대화가 길어질수록 느려지고, 토큰 비용이 기하급수적으로 늘어나는 경험을 하신 적이 있으실 텐데요. Anthropic의 Claude Code 개발팀이 이 문제를 어떻게 해결했는지 그 인사이트를 들여다보면, AI 도구를 더 효율적으로 활용하는 방법이 보입니다.

프롬프트 캐싱, AI 도구의 숨은 엔진

프롬프트 캐싱은 이전 요청에서 처리한 부분을 재활용하는 기술입니다. 마치 웹 브라우저가 이미 방문한 페이지를 빠르게 불러오는 것처럼, AI 모델도 이전에 처리한 내용은 다시 계산하지 않고 저장된 결과를 활용합니다. 핵심은 API가 요청의 앞부분부터 순서대로 비교해서 동일한 구간까지는 캐시를 재사용한다는 점입니다.

문제는 앞쪽이 조금이라도 바뀌면 뒤쪽 전체가 무효화된다는 것입니다. 이 특성을 이해하지 못하면 캐시 효과를 전혀 누릴 수 없게 됩니다.

구조 설계가 성능을 좌우한다

변하지 않는 것을 앞에, 자주 바뀌는 것을 뒤에

Claude Code의 실제 구조를 보면 이 원칙이 명확히 드러납니다. 가장 앞쪽에는 고정 시스템 프롬프트와 도구 정의를 배치해 전역 캐시를 만들고, 그 다음에는 프로젝트 설정, 세션 컨텍스트 순으로 배치합니다. 가장 뒤쪽에만 매번 새로운 대화 메시지가 들어갑니다.

이런 구조에서는 시스템 프롬프트에 타임스탬프를 넣거나 도구 순서를 바꾸는 것만으로도 캐시가 통째로 날아갈 수 있습니다. 직관과 다른 부분이지만, 캐싱 관점에서는 절대적인 원칙입니다.

정보 업데이트는 메시지로 처리하기

시간이 바뀌었거나 파일이 수정됐을 때 시스템 프롬프트를 수정하고 싶은 유혹이 있습니다. 하지만 이렇게 하면 캐시가 무효화됩니다. 대신 다음 사용자 메시지에 시스템 리마인더 형태로 업데이트 정보를 추가하는 방식을 사용합니다. 캐시는 보존하면서도 모델이 최신 정보를 받을 수 있는 영리한 방법입니다.

도구와 모델 관리의 함정들

도구 목록은 건드리지 말 것

도구 정의도 캐시 구조의 일부입니다. 하나만 추가하거나 제거해도 전체 캐시가 무효화됩니다. Claude Code에서는 계획 모드에서 읽기 전용 도구만 남기고 싶었지만, 대신 EnterPlanModeExitPlanMode를 도구로 만들어서 도구 목록 자체는 항상 동일하게 유지했습니다.

도구가 수십 개일 때는 사용하지 않는 도구를 제거하는 대신 defer_loading: true로 가벼운 스텁만 남기고, 필요할 때 ToolSearch로 전체 스키마를 불러오는 방식을 사용합니다.

모델 전환의 숨은 비용

캐시는 모델별로 별도로 관리됩니다. 긴 대화 중에 간단한 질문 하나 때문에 더 가벼운 모델로 전환하면, 새 모델용 캐시를 처음부터 쌓아야 해서 오히려 더 비쌉니다. 모델 전환이 필요하다면 서브에이전트 패턴을 사용해서 메인 모델이 서브 모델에게 필요한 작업만 따로 요약해서 넘기는 방식을 권합니다.

실전에서의 최적화 전략

컨텍스트 압축도 캐시를 고려해야

대화가 길어져서 컨텍스트 윈도우가 가득 찰 때는 대화를 요약해서 새 세션을 시작합니다. 이때 별도 API 호출로 요약을 생성하면 캐시를 전혀 활용하지 못합니다. 대신 부모 대화와 동일한 시스템 프롬프트, 도구, 메시지 히스토리를 그대로 사용하고 맨 끝에 압축 요청만 추가하면 기존 캐시를 거의 그대로 활용할 수 있습니다.

캐시 적중률을 핵심 지표로 관리하기

Anthropic 팀은 캐시 적중률이 떨어지면 장애로 선언할 정도로 중요하게 관리합니다. 몇 퍼센트 차이가 비용과 속도에 극적인 영향을 주기 때문입니다. 개발자라면 캐시 적중률을 시스템 업타임처럼 지속적으로 모니터링해야 합니다.

AI 도구 활용의 새로운 관점

프롬프트 캐싱을 이해하면 AI 도구와의 대화 방식이 달라집니다. 시스템 프롬프트나 도구 설정은 한 번 정하면 가급적 건드리지 않고, 변화하는 정보는 대화 메시지를 통해 전달하는 습관을 들이게 됩니다. 또한 모델을 자주 바꾸거나 새로운 기능을 추가할 때도 캐시에 미칠 영향을 먼저 고려하게 됩니다.

결국 프롬프트 캐싱은 단순한 최적화 기법이 아니라, AI 도구의 구조와 작동 방식을 이해하는 창문입니다. 앞쪽을 절대 건드리지 않도록 시스템 전체를 설계한다는 원칙을 기억한다면, 더 빠르고 비용 효율적인 AI 활용이 가능할 것입니다.