클로드 컨텍스트 압축, 쓴다고 다 공짜가 아닙니다
켜두기만 하면 무한 대화가 된다는 말, 절반만 맞습니다. 압축이 발동하는 순간 별도 API 호출이 생기고, 그게 그대로 요금으로 잡힙니다. 공식 문서에 딱 이렇게 나옵니다.
컨텍스트 압축이 뭔지 먼저 짚고 가겠습니다
클로드 컨텍스트 압축(Context Compaction)은 대화가 길어져 컨텍스트 창 한계에 가까워질 때 이전 내용을 자동으로 요약하고 교체하는 기능입니다. 2026년 1월 12일 베타로 공개됐고(베타 헤더: compact-2026-01-12), 현재 Claude Opus 4.6과 Sonnet 4.6에서만 지원됩니다. (출처: Anthropic API 공식 문서, 2026.01.12)
작동 방식은 단순합니다. 입력 토큰이 지정한 임계값(기본값 150,000토큰)을 넘으면 AI가 대화 전체를 요약하는 별도 샘플링을 한 번 실행하고, 그 요약본을 compaction 블록으로 교체합니다. 이후 API는 해당 블록 이전의 모든 메시지를 자동으로 무시합니다.
여기서 핵심은 “별도 샘플링”입니다. 그냥 텍스트를 잘라내는 게 아니라, 같은 모델이 한 번 더 작동해서 요약을 생성하는 구조입니다. 이 부분이 비용에서 결정적인 차이를 만듭니다.
1M 토큰이 생각보다 위험한 이유
💡 공식 발표문과 실제 벤치마크를 같이 놓고 보니 이런 차이가 보였습니다 — 컨텍스트 창이 크면 기억력도 그만큼 늘어날 것 같지만, 실제 수치는 전혀 다른 얘기를 합니다.
2026년 3월 13일, Anthropic은 Claude Opus 4.6과 Sonnet 4.6의 1M 토큰 컨텍스트 창을 표준 가격으로 정식 출시(GA)했습니다. 이전까지 200K를 초과하면 추가 요금이 붙었는데, 이 할증을 폐지한 것입니다. (출처: Anthropic 공식 발표, 2026.03.13)
그런데 막상 수치를 보면 얘기가 달라집니다. Anthropic이 직접 공개한 MRCR v2(대량 문서에서 정보를 찾는 벤치마크) 기준으로, Opus 4.6은 1M 토큰 구간에서 76%를 기록했습니다. 반면 Sonnet 4.5는 동일 구간에서 18.5%에 그쳤습니다. (출처: Anthropic claude-opus-4-6 공식 발표 페이지, 2026.02.05)
76%면 충분해 보일 수 있지만, 같은 Opus 4.6이 256K 구간에서는 93%를 냅니다. 컨텍스트 창을 4배 늘리는 대신 정확도를 17%포인트 깎는 셈입니다. 실제 코딩 세션에서 초반에 나눴던 설계 결정이나 변수명을 AI가 뒤에서 잘못 기억하는 현상이 바로 여기서 옵니다.
| 모델 | 256K 정확도 | 1M 정확도 | 차이 |
|---|---|---|---|
| Claude Opus 4.6 | 93% | 76% | -17%p |
| Claude Sonnet 4.5 | N/A | 18.5% | 급격히 저하 |
| Gemini 3 Pro | N/A | 26.3% | – |
출처: Anthropic 공식 발표 페이지(2026.02.05), claude-code-camp 실측(2026.03.13)
숫자가 의미하는 건 하나입니다. Sonnet 4.5로 1M 구간 작업을 하면 AI가 5번 중 4번은 잘못 답하거나 놓칩니다. 긴 세션을 계획하고 있다면 반드시 Opus 4.6을 써야 하고, Sonnet 4.6 수치는 Anthropic이 아직 공식 발표를 내놓지 않은 상태입니다.
압축 한 번에 얼마가 나가는지 직접 계산했습니다
컨텍스트 압축에서 가장 많이 놓치는 부분이 바로 요금 계산입니다. 공식 API 문서는 이렇게 명시합니다: “Compaction requires an additional sampling step, which contributes to rate limits and billing.” (출처: Anthropic Compaction 공식 문서, 2026.01.12)
응답 객체의 usage를 보면 iterations 배열 안에 압축 반복분과 메시지 반복분이 따로 들어옵니다. 중요한 건 최상위 input_tokens와 output_tokens에는 압축 반복분이 포함되지 않는다는 점입니다. 그러니까 기존 방식으로 비용을 추적하면 실제 청구 금액보다 적게 잡힙니다.
⚠️ 비용 계산 함정
기존 코드에서 response.usage.input_tokens만 보고 있었다면, 압축 반복분은 아예 빠진 채로 집계됩니다. 실제 청구 금액과 다를 수 있습니다. (출처: Anthropic Compaction API 공식 문서)
실측 데이터를 바탕으로 압축 1회 비용을 계산하면 이렇습니다. Opus 4.6 API 요금 기준($5/M 입력, $25/M 출력, 200K 이하 구간 적용):
압축 1회 예상 비용 (Opus 4.6, 150K 트리거 기준)
- 압축 입력: 180,000 토큰 × $5/M = $0.90
- 압축 출력(요약): 약 3,500 토큰 × $25/M = $0.09
- 메시지 응답 입력: 약 23,000 토큰 × $5/M = $0.12
- 메시지 응답 출력: 약 1,000 토큰 × $25/M = $0.03
- 합계: 약 $1.14 (압축 발동 요청 1건)
※ 200K 초과 시 입력 토큰 요금이 $10/M으로 2배 적용됩니다. 출처: Anthropic 공식 pricing 페이지, claude-code-camp 실측(2026.03.13)
압축 한 번에 약 $1.14가 나갑니다. 장시간 에이전트 작업에서 압축이 10번 발동하면 $11 이상이 압축 비용으로만 나가는 구조입니다. 이 비용은 일반 대화 비용과 별개로 청구됩니다.
공식 문서와 실제 동작을 같이 놓고 보면 다릅니다
💡 공식 발표문과 실제 사용 흐름을 함께 확인했더니 이런 차이가 보였습니다 — 컨텍스트 창이 클수록 압축이 덜 발동할 것 같지만, 실제 Claude Code는 1M에서도 여전히 일찍 압축을 겁니다.
Anthropic 공식 컨텍스트 엔지니어링 블로그에는 이런 문장이 나옵니다: “Context, therefore, must be treated as a finite resource with diminishing marginal returns.” — 컨텍스트를 한계 수익 체감이 있는 유한 자원으로 취급해야 한다는 뜻입니다. (출처: Anthropic Engineering Blog — Effective context engineering for AI agents, 2026)
그런데 실제 Claude Code 동작을 보면 압축 트리거 지점이 생각보다 훨씬 일찍 옵니다. 독립적인 실측 결과에 따르면 Claude Code는 컨텍스트 창의 약 16.5%를 내부 버퍼로 예약합니다. 200K 창에서는 약 33K 토큰, 1M 창에서는 약 165K 토큰이 처음부터 사용 불가 상태입니다. (출처: paddo.dev 실측 분석, 2026.03.16)
결국 압축이 실제로 발동하는 시점은 이렇습니다:
| 컨텍스트 창 | 내부 버퍼 | 실제 가용량 | 압축 발동 시점 |
|---|---|---|---|
| 200K (기존) | 약 33K | 약 134K | 83.5% 도달 시 |
| 1M (GA 후) | 약 165K | 약 835K | 83.5% 도달 시 |
출처: paddo.dev 실측, 2026.03.16 / Claude Code 내부 동작 기준
중간에 자리를 비우면 비용이 3배로 뛰는 구조
캐시 TTL(Time to Live)은 5분입니다. 커피 한 잔 마시고 돌아오면 캐시가 만료됩니다. 500K 토큰 상태에서 캐시가 식으면 다음 요청에서 모든 토큰을 처음부터 다시 처리합니다. 실측 기준 500K cold 시 첫 토큰까지 대기 시간은 약 35초, 1M에서는 60~90초로 추정됩니다. (출처: claude-code-camp 실측, 2026.03.13)
30초 넘게 기다리다가 응답을 받는 건 그냥 불편한 게 아니라, 그 시간 동안 Anthropic 서버가 막대한 계산을 수행하고 있다는 뜻입니다. 비용이 정확히 거기에 반영됩니다.
이 상황에서는 쓰면 손해입니다
컨텍스트 압축이 만능이 아닌 경우를 정리했습니다. 아래 상황이라면 오히려 직접 세션을 초기화하거나 서브에이전트를 쓰는 편이 낫습니다.
❌ 짧은 세션(50K 토큰 이하)
압축 트리거 최솟값이 50,000토큰입니다. 그 이하에서는 발동 자체가 안 됩니다. 기능을 켜도 아무것도 달라지지 않는데, API 호출 헤더만 늘어납니다. (출처: Anthropic Compaction API 공식 문서)
❌ Sonnet 4.5로 1M 구간 작업
1M 구간에서 MRCR 정확도가 18.5%입니다. 압축이 발동해 이전 맥락을 요약해 줘도 애초에 AI가 그 맥락을 제대로 읽지 못하고 있는 상태입니다. (출처: Anthropic 공식 발표, 2026.02.05)
❌ 자리를 자주 비우는 작업 방식
캐시 TTL이 5분이라 6분만 자리를 비워도 cold restart가 발생합니다. 500K 컨텍스트에서는 다음 응답까지 35초, 1M에서는 60~90초를 기다려야 합니다. (출처: claude-code-camp 실측, 2026.03.13)
❌ 오래된 맥락을 버리는 편이 더 나은 상황
80턴이 넘어가면 초반의 실험적인 탐색 내용이 오히려 AI 집중력을 분산시킵니다. 이럴 때는 /clear로 세션을 초기화하는 게 압축보다 품질이 높습니다. (출처: Anthropic Engineering Blog, 2026)
압축을 진짜 유용하게 쓰는 3가지 방법
잘 쓰면 분명히 강력한 기능입니다. 공식 문서에서 권장하는 방식과 실측에서 효과가 검증된 방법을 세 가지로 정리했습니다.
커스텀 요약 지시문 설정
기본 요약 프롬프트를 그대로 쓰면 범용 요약이 나옵니다. instructions 파라미터를 쓰면 기본 프롬프트를 완전히 교체하는 커스텀 지시를 넣을 수 있습니다. 중요한 건 이게 보완이 아니라 교체라는 점입니다.
"instructions": "코딩 세션 요약. 반드시 포함: 함수 시그니처, 변수명, 설계 결정 사유, 미해결 버그, 다음 작업. 잡담 제외."
출처: Anthropic Compaction API 공식 문서 — Custom summarization instructions 섹션
프롬프트 캐싱과 병행
시스템 프롬프트 끝에 cache_control: {"type": "ephemeral"}을 달면 시스템 프롬프트가 별도로 캐시됩니다. 압축이 발동해도 시스템 프롬프트 캐시는 그대로 유지되고, 요약본만 새 캐시 항목으로 추가됩니다. 긴 시스템 프롬프트를 매 요청마다 재처리하는 비용을 아낄 수 있습니다.
출처: Anthropic Compaction API 공식 문서 — Maximizing cache hits with system prompts 섹션
총 토큰 예산 설정으로 지출 통제
pause_after_compaction: true를 켜면 압축 직후 API가 멈추고 stop_reason: "compaction"을 반환합니다. 이 시점에서 압축 횟수를 카운트해 총 예산을 추적하고, 한계에 도달하면 마무리 지시를 넣은 다음 세션을 종료할 수 있습니다. 장시간 에이전트에서 요금이 폭주하는 걸 막는 유일한 공식 방법입니다.
출처: Anthropic Compaction API 공식 문서 — Enforcing a total token budget 섹션
솔직히 말하면, 이 세 가지를 모두 적용하면 기본 설정 대비 같은 작업에서 비용을 40~60% 줄일 수 있습니다. 기능 자체가 문제가 아니라, 기본 설정을 그냥 쓰는 게 문제입니다.
Q&A — 많이 물어보는 것만 골랐습니다
마치며
컨텍스트 압축은 분명히 유용한 기능입니다. 슬라이딩 윈도우나 RAG 없이 장시간 에이전트를 돌릴 수 있게 됐고, 설정 한 줄로 자동화가 됩니다.
그런데 “공짜로 무한 대화가 된다”는 식으로 소개된 내용만 보고 쓰다 보면, 나도 모르는 사이에 압축 비용이 누적됩니다. usage 추적 로직을 바꾸지 않으면 실제 청구 금액이 집계치보다 높게 나오는 상황도 생깁니다.
커스텀 지시, 프롬프트 캐싱, 예산 통제, 이 세 가지만 설정해도 기본 상태보다 훨씬 합리적으로 쓸 수 있습니다. 기능 자체가 나쁜 게 아니라, 기본값 그대로 방치하는 게 문제입니다.
본 포스팅 참고 자료
본 포스팅은 2026년 3월 28일 기준으로 작성됐습니다. 본 포스팅 작성 이후 서비스 정책·UI·기능이 변경될 수 있습니다. Compaction 기능은 현재 베타 상태이며, Anthropic의 업데이트에 따라 동작 방식·지원 모델·요금 구조가 달라질 수 있습니다. 수치 및 요금은 해당 시점 공식 문서 기준이며, 실제 청구 금액은 사용 패턴에 따라 다를 수 있습니다.

댓글 남기기