🧠
Part 4중급⏱ 약 50분 · 2개 섹션
컨텍스트 윈도우 관리
유한한 기억의 최적화

✦이 챕터에서 배울 것
전체 아키텍처에서 현재 위치
⚙️코어 엔진
→🔧도구 시스템
→🛡️보안
→🧠컨텍스트
→🤝멀티 에이전트
→🌐생태계
→⚡인프라
1
4가지 컴팩션 전략
각 전략의 동작 방식과 사용 시점
전체 컴팩션자동 컴팩션마이크로 컴팩션토큰 예산|
services/compact/compact.tsservices/compact/autoCompact.tsservices/compact/microCompact.ts대화가 길어지면 컨텍스트 윈도우를 초과합니다. Claude Code는 4가지 전략으로 이를 관리합니다.
src/services/compact/compact.ts — 컴팩션 흐름
1// src/services/compact/compact.ts — 컴팩션 서비스2 3// 전체 컴팩션: 포크된 하위 에이전트에서 실행4import { runForkedAgent } from '../../utils/forkedAgent.js'5import { executePreCompactHooks, executePostCompactHooks }6 from '../../utils/hooks.js'7import { createCompactBoundaryMessage, getMessagesAfterCompactBoundary }8 from '../../utils/messages.js'9 10// 컴팩션 흐름:11// 1. Pre-compact 훅 실행💡12await executePreCompactHooks(messages)13// 2. 경계 이후 메시지 식별 (보존 대상)14const recentMessages = getMessagesAfterCompactBoundary(messages)15// 3. 포크된 에이전트가 이전 메시지 요약16const summary = await runForkedAgent({💡17 prompt: "Summarize the conversation so far...",18 messages: olderMessages,19 maxOutputTokens: COMPACT_MAX_OUTPUT_TOKENS,20})21// 4. 경계 마커 삽입💡22const boundary = createCompactBoundaryMessage(summary)23// 5. Post-compact 훅 실행24await executePostCompactHooks(messages)25 26// ─── 4가지 전략 비교 ───27// compact.ts → 전체 컴팩션 (포크 에이전트, 가장 정확)28// autoCompact.ts → 토큰 예산 초과 시 자동 트리거29// microCompact.ts → 경량 인프로세스 (빠르지만 덜 정확)30// apiMicrocompact.ts → API 기반 마이크로컴팩션📊
컨텍스트 예산 시뮬레이터
사용량: 26.0K / 200K 토큰13%
시스템 프롬프트: 12.0K
대화 히스토리: 2.0K
도구 정의: 8.0K
메모리: 4.0K
시스템 프롬프트
12.0K
대화 히스토리
2.0K
도구 정의
8.0K
메모리
4.0K
현재 턴: 0
여유: 174.0K
2
토큰 예산 관리
시스템 프롬프트, 대화, 도구 정의의 토큰 배분
토큰 카운팅예산 배분임계값자동 트리거|
query/tokenBudget.ts토큰 예산은 시스템 프롬프트, 도구 정의, 대화 히스토리, 메모리에 배분됩니다. 자동 컴팩션은 총 사용량이 80% 임계값을 초과하면 트리거됩니다.
토큰 예산 배분
1// 토큰 예산 구성 (200K 컨텍스트 기준)2// ┌──────────────────────────────────────────┐3// │ 시스템 프롬프트 ~12K (6%) [캐시 가능] │4// │ 도구 정의 ~8K (4%) [준정적] │5// │ 메모리 ~4K (2%) [동적] │6// │ ─────────────────────────────────────── │7// │ 대화 히스토리 ~156K (78%) [동적] │8// │ ─────────────────────────────────────── │9// │ 여유 공간 ~20K (10%) [버퍼] │10// └──────────────────────────────────────────┘11//12// 자동 컴팩션 트리거: 사용량 > 80% (160K)13// 컴팩션 후 목표: 사용량 ~50% (100K)