캐시 재작성으로 Fable 사용량의 30%를 날렸습니다. 피해야 할 실수들
Cache rewrites costed me 30% of my Fable consumption, here are the mistakes to avoid
핵심 요약
Claude Code 세션에서 캐시 만료로 인한 불필요한 비용 발생을 방지하고 효율적으로 관리하는 팁을 공유합니다.
- 캐시 경제학 — 세션 히스토리를 캐싱하면 입력 비용의 10%로 줄일 수 있음
- 캐시 만료 주의 — 1시간 이상 유휴 상태가 되면 캐시가 만료되어 전체 재작성 비용이 발생함
- 비용 절감 전략 — 세션 중간에 도구 로드, 모델 변경, 설정 변경을 피해야 함
- 유휴 세션 관리 — 55분마다 핑을 보내 캐시를 유지하는 것이 재작성보다 저렴함
claude code 기록을 싹 다 뒤져서 Fable 사용량을 어디서 낭비하고 있는지 찾아봤거든. 그랬더니 중간에 쉬엄쉬엄 작업하는 긴 세션들이 돈을 아주 그냥 살살 녹이고 있더라. 혹시나 도움 될까 싶어서 내용 공유함.
캐시 경제학
세션에서 턴이 한 번 돌아갈 때마다 모델은 전체 대화 기록을 다시 읽어. 이걸 감당 가능하게 만들어주는 게 바로 프롬프트 캐싱이야. 기록을 서버 측에 저장해두고, 다음 턴부터는 일반 입력 가격의 10%만 내고 다시 읽어오는 방식이지. 캐시 유지 시간은 1시간인데, 이게 만료되거나 무효화되면 다음 턴에서 전체 기록을 다시 써야 해서 돈이 왕창 깨짐.
Fable 5 기준 가격은 이래 (다른 Claude 모델도 메커니즘은 똑같음):
- 입력 가격: 100만 토큰당 $10
- 캐시 읽기: 100만 토큰당 $1 (입력가의 10%)
- 캐시 쓰기: 5분 윈도우 기준 100만 토큰당 $12.50, 1시간 캐시 윈도우 기준 100만 토큰당 $20
400k 토큰 정도 되는 컨텍스트를 들고 있는 무거운 세션에서 이게 무슨 의미냐면:
- 평소처럼 턴을 돌리면 캐시를 읽어오니까 약 $0.40 정도 나감.
- 근데 1시간 넘게 쉬다가 다시 세션으로 돌아오면, 모델이 캐시를 다시 써야 하거든? 400k 컨텍스트가 쌓인 상태에서 이걸 다시 쓰면 API 비용으로 $8가 그냥 날아감.
캐시 한 번 만료될 때마다 평소 턴 20번 돌릴 돈이 증발하는 셈이지.
캐시를 조용히 박살 내고 돈을 뜯어가는 주범들:
- 캐시 유지 시간(1시간) 넘게 세션 방치하기: 캐시가 만료되면 쉬고 나서 첫 메시지 보낼 때 전체 기록을 다시 다 써야 함. 나처럼 세션 10개 넘게 띄워놓고 쉬는 버릇 있으면 모든 세션에서 돈이 줄줄 샌다.
- 세션 중간에 툴이나 MCP 서버 불러오기: 새로운 툴 스키마가 들어오면 대화 앞부분(prefix)이 바뀌어버려서 캐시가 통째로 무효화됨. 툴은 그냥 시작할 때 다 불러놓는 게 나음.
- 대화 중간에 모델 바꾸기: 같은 세션에서 Fable 쓰다가 Sonnet으로 바꿨다가 다시 Fable로 돌아오면, 캐시를 다시 쓰는 꼴이라 모델 바꿔서 아끼는 돈보다 캐시 비용이 더 많이 나감. 캐시는 모델별로 따로 저장되거든.
- 세션 중간에 노력 수준(effort level)이나 fast mode 바꾸기: 이게 내가 제일 많이 하던 짓인데, 사용량 아끼려고 바꾼 거였거든? 근데 이게 주범인 줄은 몰랐음. 세션 안에서 작업 내용에 따라 high, xhigh, max, ultracode로 너무 자주 바꿨던 게 문제였음.
- claude code 업데이트: 작업 중간에 업데이트 때리면, 나중에 다시 이어갈 모든 세션의 캐시를 다시 써야 함.
그래서 지금은 200k 토큰 넘는 세션이 55분째 놀고 있으면 4시간 동안은 핑을 날려서 캐시를 유지하게 만들어놨음. 핑 한 번 날리는 게 캐시 다시 쓰는 것보다 10배는 싸게 먹히니까.
