한눈에 보는 답
대화 히스토리가 길어지면 두 가지 문제가 동시에 생깁니다. 토큰 한도를 넘어서 오류가 발생하거나, 앞부분을 통째로 잘라내 중요한 맥락이 사라집니다. 슬라이딩 윈도우는 '최근 N개 메시지만 유지'하는 단순한 방법이고, 요약 레이어는 잘려나간 메시지를 한 줄짜리 핵심으로 압축해 보존하는 방법입니다. 두 방식을 계층으로 쌓으면 최신 맥락은 그대로 두면서 오래된 맥락은 압축해 함께 전달할 수 있습니다.
왜 지금 중요한가
Claude의 컨텍스트 윈도우는 늘어났지만 그만큼 프롬프트도 길어졌습니다. 시스템 프롬프트, 툴 스키마, 이전 응답까지 누적되면 실제 대화에 쓸 수 있는 공간은 생각보다 빠르게 줄어듭니다. 실무에서는 긴 코드 리뷰, 멀티스텝 분석, 반복 피드백 루프처럼 수십 턴이 넘어가는 세션이 흔합니다. 이 상황에서 '그냥 자르기'를 택하면 앞서 합의한 제약 조건이나 결정 근거가 날아갑니다. 이는 마치 장시간 회의 중 의사록 없이 첫 30분을 통째로 지우는 것과 같습니다.
바로 적용하는 순서
- 현재 누적 토큰을 매 턴마다 측정합니다. Claude API에서는 usage 응답 필드로 입력 토큰 수를 확인할 수 있습니다. 예시:
response.usage.input_tokens로 현재 누적을 체크합니다. - 임계값을 설정합니다. 모델 최대 한도의 70~75% 지점을 '압축 트리거'로 잡는 것이 일반적입니다. 예를 들어 200k 모델이라면 140k~150k 도달 시 압축을 시작합니다.
- 슬라이딩 윈도우를 먼저 적용합니다. 가장 오래된 메시지부터 순서대로 대상에 포함시키되, 최근 K개(예: 최근 8~12 턴)는 건드리지 않습니다. 윈도우 크기는 세션 유형에 따라 조정합니다. 빠른 QA라면 4~6 턴으로도 충분합니다.
- 잘린 메시지를 요약 레이어로 압축합니다. 잘라낸 메시지 묶음을 별도 요약 호출에 넘겨 핵심 결정, 제약 조건, 합의 사항을 3~5문장으로 추출합니다. 이 요약을 시스템 프롬프트 하단이나 대화 맨 앞에 고정 블록으로 삽입합니다. 예시:
[이전 맥락 요약] {요약문}형태로 삽입합니다. - 요약이 다시 쌓이면 재압축합니다. 요약 블록도 턴이 쌓이면 길어집니다. 요약의 요약, 즉 앵커드 요약(Anchored Summarization)을 적용해 가장 오래된 요약부터 다시 한 줄로 압축하는 재귀 구조를 만듭니다.
실무 예시
코드 리뷰 세션을 예로 들면, 30 턴째에 토큰이 임계값을 넘기 직전이라고 가정합니다. 슬라이딩 윈도우로 최근 10 턴만 활성 메시지로 유지하고, 나머지 20 턴은 요약 호출로 압축합니다. 요약 결과가 다음과 같다면: '사용자는 TypeScript strict 모드 유지를 요청했고, 인증 모듈 분리는 다음 PR로 미루기로 합의했으며, 현재 PR 범위는 결제 API 오류 처리로 한정한다.' 이 한 단락이 20 턴치 맥락을 대체합니다.
이 요약을 시스템 프롬프트 끝에 붙이면, 모델은 실제 대화에서 이 내용을 배경 지식으로 참고합니다. 비유하자면 회의 전 배포되는 '이전 회의 요약문'과 같습니다. 새 참석자도 바로 현황을 파악하는 것처럼, 압축된 맥락이 삽입된 모델도 앞선 결정을 이어받습니다.
요약 레이어 호출 시 지시 예시: 다음 대화 메시지 목록에서 결정 사항, 제약 조건, 미해결 항목만 3~5문장으로 추출해 주세요. 불필요한 인사말이나 반복 설명은 제거합니다.
흔한 실수
- 윈도우 크기를 너무 작게 잡는 경우: 최근 3~4 턴만 남기면 직전 맥락도 유실됩니다. 세션이 짧고 독립적인 질문이라면 괜찮지만, 의존성이 있는 작업이라면 최소 8 턴을 유지하세요.
- 요약을 대화 중간에 섞는 경우: 요약 블록을 일반 메시지처럼 히스토리 중간에 끼워 넣으면 모델이 맥락 흐름을 잘못 파악합니다. 시스템 프롬프트 또는 대화 맨 앞 고정 위치에만 넣어야 합니다.
- 압축 시점을 너무 늦게 잡는 경우: 한도 99%에서 압축을 시작하면 요약 호출 자체가 토큰을 소비해 공간이 부족해집니다. 70~75% 지점을 트리거로 잡으세요.
- 요약 품질을 검증하지 않는 경우: 요약이 지나치게 일반적이면('논의가 있었다') 원본 맥락보다 못합니다. 요약 프롬프트에 '결정 사항과 합의 조건을 구체적 명사로 명시' 지침을 포함하세요.
체크리스트
- 매 턴마다 누적 토큰을 측정하는 로직이 있는가
- 압축 트리거 임계값이 모델 한도의 70~75%로 설정되어 있는가
- 슬라이딩 윈도우에서 유지할 최소 턴 수(최소 8 턴 권장)가 명시되어 있는가
- 잘린 메시지를 요약하는 별도 호출이 구현되어 있는가
- 요약 블록이 시스템 프롬프트 또는 대화 첫 위치에 고정 삽입되는가
- 요약이 다시 쌓일 때 재압축하는 재귀 구조가 있는가
- 요약 프롬프트에 '결정 사항, 제약 조건, 합의 사항'을 명시하도록 지시가 포함되어 있는가
FAQ
Q. 슬라이딩 윈도우만 써도 충분하지 않나요?
단기 세션이나 각 턴이 독립적인 경우라면 충분합니다. 하지만 앞선 결정이 뒤에 영향을 주는 작업(코드 리뷰, 반복 피드백, 다단계 분석)에서는 슬라이딩 윈도우만 쓰면 결정 근거가 사라집니다. 요약 레이어를 함께 써야 앞 맥락을 복원할 수 있습니다.
Q. 요약 호출 자체가 토큰과 비용을 더 쓰지 않나요?
맞습니다. 요약 호출은 추가 비용이 발생합니다. 하지만 요약 없이 전체 히스토리를 매 턴마다 전송하는 것보다 총 토큰 사용량이 훨씬 적습니다. 20 턴치 원본보다 3~5문장 요약이 압도적으로 작기 때문입니다. 요약은 덜 비싼 소형 모델로 돌리는 방식으로 비용을 줄일 수 있습니다.
Q. 요약 레이어와 벡터 검색 기반 장기 저장소는 어떻게 다른가요?
요약 레이어는 대화 흐름을 유지하면서 토큰을 줄이는 구조로, 실시간 압축에 적합합니다. 벡터 검색 기반 저장소는 과거 세션 전체를 나중에 유사도로 회수하는 구조로, 세션 간 장기 기억에 적합합니다. 두 방식은 목적이 달라 함께 쓰는 것이 일반적입니다.
근거와 검증 기준
검증일: 2026-06-05
| 주장 | 근거 | 확인 방법 | 한계 |
|---|---|---|---|
| 컨텍스트 압축 슬라이딩 윈도우 요약 레이어 관련 핵심 주장은 원문 출처로 확인해야 한다. | code.claude.com | 원문 페이지의 날짜, 버전, 설치 방법, 권한 조건을 확인한다. | 원문이 갱신되면 결론도 달라질 수 있다. |
| 운영 적용 전 확인이 필요하다. | 원문, 공식 문서, 저장소, 시장 데이터처럼 확인 가능한 출처를 먼저 본다. | 작은 입력으로 재현하고 입력, 출력, 실행 환경을 기록한다. | 로컬 검증이 모든 운영 경로를 보장하지는 않는다. |
| 운영 적용 전 확인이 필요하다. | 되돌릴 수 있는 작은 테스트로 입력, 출력, 실행 환경을 기록한다. | 작은 입력으로 재현하고 입력, 출력, 실행 환경을 기록한다. | 로컬 검증이 모든 운영 경로를 보장하지는 않는다. |
| 운영 적용 전 확인이 필요하다. | 확인된 사실과 해석, 다음 가설을 분리해서 쓴다. | 작은 입력으로 재현하고 입력, 출력, 실행 환경을 기록한다. | 로컬 검증이 모든 운영 경로를 보장하지는 않는다. |
인용 가능한 핵심 정리
- 검증일: 2026-06-05
- 정의: 컨텍스트 압축 슬라이딩 윈도우 요약 레이어은 이 글의 핵심 주제이며, 아래 근거와 한계를 함께 확인해야 인용할 수 있다.
- 핵심 결론: 컨텍스트 압축 슬라이딩 윈도우 요약 레이어이 무엇을 바꾸는지, 언제 쓸 만한지, 어떻게 검증할지 먼저 답한다.
- 적용 조건: 원문 출처, 버전, 실행 환경이 독자의 상황과 맞을 때만 같은 결론으로 재사용한다.
핵심 용어 정리
- 컨텍스트 압축 슬라이딩 윈도우 요약 레이어: 이 글에서 설명하고 판단하는 중심 개념이다.
- Claude Code: 원문 출처와 함께 확인해야 하는 관련 개념이다.
- 검증 한계: 같은 조언이라도 버전, 권한, 실행 환경이 다르면 달라질 수 있는 조건이다.
마무리
슬라이딩 윈도우와 요약 레이어는 단독으로도 효과가 있지만, 계층 구조로 쌓았을 때 진가가 드러납니다. 최근 맥락은 원본으로, 오래된 맥락은 압축본으로 공존하는 구조가 갖춰지면 토큰 한도를 이유로 대화를 재시작하는 일이 크게 줄어듭니다. 설계 원칙은 단순합니다. 무엇을 살리고, 무엇을 줄이고, 줄인 것을 어디에 붙이는지만 결정하면 됩니다.
🐦 X에서 더 빠르게: @baegseungh7061
📚 이 시리즈 더 보기: Code 실전
💌 새 글 알림: X 팔로우 또는 블로그 RSS 구독
'Code 실전' 카테고리의 다른 글
| Claude Code Slash Commands 체인 설계: 복합 워크플로를 단일 호출로 끝내는 법 (0) | 2026.06.04 |
|---|---|
| Claude Code 컨텍스트 윈도우 포화 진단과 분할 요청 설계 (0) | 2026.06.03 |
| 커밋 전에 게이트가 먼저 막아야 한다 — Claude Code Hooks 사전 검증 체인 완전 설계 (0) | 2026.06.01 |
| 요청 컨텍스트에 따라 스킬 묶음을 런타임에 교체하는 Claude Code 동적 로딩 구조 (0) | 2026.05.30 |
| CLAUDE.md로 Claude Code 프로젝트 기억 설계하는 법 (0) | 2026.05.29 |