/Part 4: 컨텍스트와 메모리/컨텍스트 윈도우 관리
🧠
Part 4중급⏱ 약 50분 · 2개 섹션

컨텍스트 윈도우 관리

유한한 기억의 최적화

컨텍스트 윈도우 관리 대표 이미지
이 챕터에서 배울 것
  • 컨텍스트 초과 시 자동 컴팩션 트리거
  • 4가지 전략: 전체, 자동, 마이크로, 세션 메모리
  • 포크된 하위 에이전트에서 비차단 실행
전체 아키텍처에서 현재 위치
⚙️코어 엔진
🔧도구 시스템
🛡️보안
🧠컨텍스트
🤝멀티 에이전트
🌐생태계
인프라
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)