단원 — 4 요소 ② 공간 (길어지면 썩는다)
별칭: 4 요소 공간 단원 · context rot 단원 · 부패 방지 단원
한 줄 명제
공간은 유한하다. 한도 안에서도 길어지면 썩는다. 부패는 토큰 한도의 문제가 아니라 attention 분산의 문제다.
강의 흐름 (12 분)
① 공간은 유한하다 (1.5 분)
에이전트의 공간은 컨텍스트 윈도우. 그리고 그것은 유한하다.
| 모델 | 윈도우 |
|---|---|
| Claude Sonnet | 200K 토큰 |
| Opus (Pro) | 200K |
| Opus (Max) | 1M |
| GPT, Gemini | (각 모델별 finite buffer) |
→ 어느 모델이든 무한한 메모리가 아니다. 모든 에이전트 설계는 결국 — 유한한 버퍼 안에서 무엇을 살리고 무엇을 버릴지의 문제.
② 컨텍스트 부패의 정체 (3 분)
컨텍스트 부패는 토큰 한도 초과가 아니다. 한도 안에서도 — 모델 성능이 점진적으로 떨어지는 현상.
부패의 4 가지 증상:
| 증상 | 값 |
|---|---|
| 1. 초반 지시 망각 | "절대 X 하지 마라" 했는데 30 턴 뒤에 X 함 |
| 2. 중복 작업 반복 | 같은 파일을 두 번 읽고, 같은 결론을 두 번 값 |
| 3. 세부 사항 흐려짐 | 처음에 정확했던 변수명·경로 가 나중에 비슷한 것 으로 대체됨 |
| 4. 확신의 비대칭 증가 | 부정확해질수록 오히려 더 단언적 으로 답함 |
왜 부패하는가: LLM 은 attention 메커니즘. 컨텍스트가 길어질수록 같은 토큰에 분산되는 attention 의 질이 떨어짐.
200K 윈도우에 50K 만 차 있을 때와 180K 차 있을 때의 모델은 같은 모델이 아니다. 후자는 부패한 모델.
③ 한입감이 부패를 막는다 (1.5 분)
여기서 시간 요소 (3 장) 와 공간 요소가 만난다. 한입이 부패를 막는다.
큰 덩어리를 한 턴에 처리하려고 하면 — 도구 결과가 컨텍스트를 부풀린다. 한 파일을 통째로 read 하면 그 결과가 KB 단위로 기록됨. 10 번 read 하면 컨텍스트가 30%, 40% 이미 차 있다. 거기서 모델이 일을 하려면 — 부패한 공간 위에서 일하는 셈.
→ 시간 (한입) 과 공간 (부패) 은 같은 동전의 양면. 한입이 깨지면 공간이 부패하고, 공간이 부패하면 한입이 또 깨진다. 둘은 같이 무너지고, 둘은 같이 풀어야 한다.
④ 7 정적 + 13 동적 + 200줄 CLAUDE.md (2.5 분)
Claude Code 의 시스템 프롬프트는 layered 구조.
정적 7 블록 — Identity · Safety · Tone · Tool list · Tool usage rules · Output format · Response style. 이 7 개는 안 바뀌니까 prompt cache 가 적중. 토큰 비용이 캐시 hit 가격 (보통 1/10) 으로 떨어짐.
동적 13 블록 — CLAUDE.md · working directory · git status · 환경 변수 · 열린 파일 · 플랫폼 · 세션 메타 · MCP manifest · 권한 상태 · 최근 도구 결과 · Compaction 요약 · Memory 파일 · 날짜·로케일. 이건 매 턴 바뀐다.
왜 이렇게 쪼갰는가: prompt cache 가 prefix matching 으로 동작 — 앞부터 같은 토큰 시퀀스가 이어지는 만큼 캐시. 정적이 앞에 있으면 정적 부분이 통째로 cache hit, 동적이 뒤에 있으면 변하는 부분만 miss. 7+13 의 순서 자체가 곧 캐시 전략.
사용자가 직접 통제할 수 있는 레이어 — 거의 유일하게 CLAUDE.md. L1 (Anthropic 본사) 과 L2 (Claude Code 제품팀) 는 우리가 못 건드림. L4 (git/cwd) 는 자동. L3 (CLAUDE.md) 만이 우리 손에 있다.
Anthropic 권장 — 200 줄 이하. 표면적 이유는 토큰 비용. 진짜 이유는 부패 저항. 길수록 adherence (준수도) 가 떨어짐. 200 줄짜리 짧은 CLAUDE.md 는 attention 이 안정되고, 모든 줄이 살아 있고, 캐시 비용도 낮다.
상세: concept/claudemd-as-design-language · term/cache-hit-vs-miss · term/lazy-loading-claudemd
⑤ Compaction 5 층 cascade — 부패의 5 단 처방 (3 분)
공간이 한도에 가까워지면 Compaction 작동. 한 가지 알고리즘이 아니라 5 단 cascade. 가장 싼 처방부터 시도.
| 층 | 이름 | 비용 | 동작 |
|---|---|---|---|
| 1 | Budget Reduction | 0 | 룰 엔진. 도구 결과 cap 적용, 최근 N 턴만 보존 (보통 여기서 끝) |
| 2 | Snip | 0 | 정밀 가지치기. 오래된 메시지의 중복·무의미 부분 제거 |
| 3 | Microcompact | 작은 LLM 호출 | 도구 결과만 LLM 으로 요약. 대화 흐름은 안 건드림 |
| 4 | Context Collapse | (실험) | feature flag 뒤. 카테고리 단위로 합침 |
| 5 | Auto-Compact | 큰 LLM 호출 | 마지막 보루. 대화 전체를 한 요약으로 치환. CLAUDE.md 디스크에서 재주입 |
별도로 Reactive Compact — API 가 413 Payload Too Large 반환하면 위 단계 다 무시하고 5 층을 공격적으로 즉시 호출. 비상 브레이크.
핵심 통찰: 비용이 점진 증가. 1 층 0 원, 5 층 큰 LLM 호출. 가장 싼 처방으로 먼저 막고, 안 되면 다음. 이게 production-grade 부패 관리의 본보기.
워크플로우 시사: 큰 파일을 무심코 read 하면 Microcompact 트리거. grep + 라인 범위 read 패턴 은 Compaction 을 늦춤. 도구를 어떻게 쓰느냐가 부패 진행 속도를 결정.
상세: concept/compaction-5-layer
⑥ 공간 요소의 한 줄 (0.5 분)
공간은 prefix 와 cascade 로만 부패에 저항한다.
4 엔지니어링 통합 기록
본 단원은 공간 = 컨텍스트 엔지니어링 + α 를 기록:
- 컨텍스트 엔지니어링: 본 단원의 주 무대. CLAUDE.md / 정적 7 + 동적 13 / Compaction 5 층
- 프롬프트 엔지니어링: CLAUDE.md = 영구 지시어 = 응축된 프롬프트
- 하네스 엔지니어링: Compaction 5 층 cascade = 모델 바깥 인프라
- 에이전틱 엔지니어링: 한입 (시간 요소) 이 부패 (공간 요소) 를 막음 — 에이전트의 결정 흐름이 공간을 좌우
→ 4 분야 모두 공간 요소 위에서 기록됨. concept/4-engineering-disciplines 통합 기록 규칙 정합.
다음 단원으로
공간이 짧고 안정적으로 기록되었다. 이제 — 도구가 늘어나도 그 짧은 공간이 무너지지 않게 해야 한다. 다음 단원은 lesson/4elements-connection-mcp-subagent (연결 요소).
출처
60_service/6006 booklet-vibe-coding-4-elements/_combined_book.md §326~392 (4 장 — 공간 — 길어지면 썩는다).