콘텐츠로 이동

02-구조

02 · 컨텍스트는 어떻게 채워지고 어떻게 비워지는가

섹션 제목: “02 · 컨텍스트는 어떻게 채워지고 어떻게 비워지는가”

API 한 호출의 컨텍스트는 보통 다음 순서로 직렬화된다.

[시스템 프롬프트]
[도구 정의들]
[과거 메시지 1] (user)
[과거 메시지 1 응답] (assistant)
[과거 메시지 2] (user / tool_result)
[과거 메시지 2 응답] (assistant)
...
[새 사용자 메시지]
→ 모델 응답 (max_tokens 까지)

이 직렬화의 어디 한 곳이라도 늘면 다른 모든 슬롯이 좁아진다. Anthropic의 문서는 이를 정확히 짚는다 — 도구 정의 자체가 매 호출마다 토큰을 잡아먹고, 모델별로 그 양이 다르다(앞 장 표 참조).

윈도우가 한도에 닿으면 어떤 일이 벌어질까. 클라이언트는 보통 다음 중 하나를 한다.

  1. 잘라내기(truncate) — 가장 오래된 메시지부터 단순히 버린다. 가장 단순하고, 가장 손실이 큰 방식.
  2. 요약(summarize) — 오래된 구간을 모델로 한 줄~몇 줄 요약으로 압축해 끼워 넣는다. Claude Code의 /compact가 이 패턴이다.
  3. 외부 저장소 + 검색(RAG) — 과거 내용을 외부 벡터 저장소에 적재해 두고, 필요할 때만 관련 조각을 검색해 컨텍스트에 끼워 넣는다.
  4. 서브에이전트(subagent)로 격리 — 무거운 탐색이나 위험한 시도를 별도 컨텍스트에서 수행해 메인 컨텍스트가 더러워지지 않게 한다.

Anthropic의 Claude Code 베스트 프랙티스는 이 4번을 정면으로 권장한다.

원문: “Subagents for context isolation — spawn fresh agents for verification, search, or risky exploration so the main thread keeps a clean context.”
의역: “검증·검색·위험한 탐색에는 새 서브에이전트를 띄워 메인 컨텍스트를 깨끗하게 유지하라.”
— sources/14-research-notes/2026-04-07-anthropic-claude-code-best-practices.md

”context rot” — 시간이 지날수록 컨텍스트가 썩는다

섹션 제목: “”context rot” — 시간이 지날수록 컨텍스트가 썩는다”

긴 트라젝토리에서 자주 보고되는 현상이 있다 — 처음에는 잘 작동하던 에이전트가 턴이 쌓일수록 점점 엉뚱해진다. Anthropic은 이를 “context rot”이라고 부른다.

원문: “Warns about ‘context rot’ — irrelevant or outdated content silently degrading later reasoning — and proposes periodic context audits.”
의역: “관련 없는/오래된 내용이 조용히 후속 추론을 갉아먹는 ‘context rot’ 현상을 경고하며, 주기적 컨텍스트 감사 권장.” — Effective Context Engineering for AI Agents

대응 패턴은 단순하다 — 주기적으로 컨텍스트를 정리 한다(요약·서브에이전트로 분기·just-in-time 검색으로 교체). 본 위키 Part 3 컨텍스트 엔지니어링 챕터가 이 운영을 본격적으로 다룬다.

”긴 컨텍스트 모델”이 생긴다고 해서 윈도우 관리가 끝나는 건 아니다

섹션 제목: “”긴 컨텍스트 모델”이 생긴다고 해서 윈도우 관리가 끝나는 건 아니다”

2025년 들어 100K~1M 토큰급 컨텍스트를 지원하는 모델이 흔해졌다. 그렇다고 컨텍스트 위생이 사라지지는 않는다. 두 가지 이유다.

  1. 비용이 여전히 N에 비례 — 100만 토큰을 매 호출마다 보내면 요금·지연이 폭주한다.
  2. lost in the middle 현상 — 긴 컨텍스트의 중간 정보는 양 끝보다 약하게 반영된다. Long Code Arena 같은 벤치마크 논문(sources/18-research-papers/context/long-code-arena-arxiv-2406-11612.md)이 이 약점을 정량적으로 다룬다.

따라서 “긴 컨텍스트 모델 = 컨텍스트 엔지니어링 불필요”는 잘못된 등식이다.

  • 한 호출의 컨텍스트는 시스템·도구·과거·새 메시지·응답 슬롯이 한 자루 안에 직렬화된 것.
  • 한도가 차면 잘라내기·요약·RAG·서브에이전트 중 하나로 정리해야 한다.
  • “context rot”은 긴 트라젝토리의 조용한 적이다.
  • 긴 컨텍스트 모델이 등장해도 관리의 필요는 사라지지 않는다.