AI & Tools

[에이전트 설계 #2] 컨텍스트 엔지니어링, 컨텍스트 윈도우를 예산처럼 쓰는 법

컨텍스트 윈도우는 클수록 좋은 게 아니라 관련성이 높을수록 좋습니다. 유한한 창을 예산처럼 쓰는 선별 로딩·요약·격리·외부화 네 전략과 CLAUDE.md 같은 상시 로드 파일의 설계 기준을 정리했습니다.

이석우iOS Developer5분 읽기
[에이전트 설계 #2] 컨텍스트 엔지니어링, 컨텍스트 윈도우를 예산처럼 쓰는 법 대표 이미지

“컨텍스트 윈도우 200K 토큰”이라는 스펙만 보면 웬만한 코드베이스는 통째로 넣어도 될 것 같습니다. 그런데 막상 다 넣으면 응답 품질이 뚝 떨어져요.

모델이 긴 컨텍스트에서 중간 내용을 놓치는 현상은 여러 연구로 확인돼 있습니다. 넣을 수 있다는 것과 잘 쓴다는 것은 다른 문제인 거죠.

그래서 나온 개념이 컨텍스트 엔지니어링입니다. 한 문장으로 정리하면, 유한한 컨텍스트 윈도우를 예산처럼 취급해 매 순간 가장 유효한 정보만 올려두는 설계 기법이에요.

이 글에서는 왜 컨텍스트가 예산인지, 예산을 아끼는 네 가지 전략, 그리고 CLAUDE.md 같은 상시 로드 파일의 설계 기준까지 정리합니다.

CONTEXT BUDGET 텍스트와 문서 카드를 선별해 담는 토큰 계량기 썸네일
넣을 수 있는 것과 올려둘 자격이 있는 것은 다릅니다

핵심 요약부터 보고 갈게요.

  1. 컨텍스트는 클수록 좋은 게 아니라, 관련성이 높을수록 좋습니다
  2. 전략은 크게 넷입니다. 선별 로딩, 요약(압축), 격리, 외부화(메모리)
  3. 상시 로드 파일(CLAUDE.md 등)은 “항상 참인 것”만 담아 짧게 유지합니다
  4. 도구·지시서도 컨텍스트 소비자입니다. 등록만 해두고 안 쓰는 도구는 비용입니다

왜 예산인가, 컨텍스트의 비용 구조

컨텍스트 윈도우에는 세 가지 비용이 동시에 걸립니다.

첫째, 성능 비용. 관련 없는 내용이 많을수록 모델의 주의가 분산됩니다. 특히 긴 컨텍스트의 중간 부분은 회수율이 떨어진다는 “lost in the middle” 현상이 알려져 있어요.

둘째, 금전 비용. 입력 토큰은 매 요청마다 과금됩니다. 대화가 길어질수록 같은 내용이 반복 과금되고요.

셋째, 기회 비용. 잡동사니가 차지한 자리만큼 정작 필요한 코드와 문서가 들어갈 공간이 사라집니다.

컨텍스트 엔지니어링의 관점 전환은 이겁니다. “얼마나 넣을 수 있나”가 아니라 “이 토큰이 지금 여기 있을 자격이 있나”를 묻는 것.


전략 1·2, 선별 로딩과 요약

선별 로딩(retrieval)은 필요할 때 필요한 것만 가져오는 전략입니다. 파일 2,000줄을 다 읽는 대신 관련 함수만 읽고, 문서 전체 대신 검색으로 해당 절만 가져오는 식이에요.

Skill의 점진적 로딩(평소엔 한 줄 설명만, 실행 시에만 본문 로드)도 같은 원리입니다.

요약(compaction)은 쌓인 히스토리를 압축합니다. 수십 번의 도구 호출 기록을 “이 파일들을 수정했고 테스트는 통과했다” 한 문단으로 접는 거죠.

코딩 에이전트들이 대화가 길어지면 자동으로 수행하는 그 압축입니다.

요약에는 손실이 따른다는 점만 기억해 두세요. 세부 사항이 접히면서 사라질 수 있어서 중요한 결정 사항은 요약 전에 파일로 빼두는 게 안전합니다.

지금 필요한 정보만 컨텍스트 창에 올리고 나머지는 파일로 내리는 흐름도
지금 필요한 것만 창에 올리고 나머지는 파일로 내립니다

전략 3·4, 격리와 외부화

격리(isolation)는 컨텍스트를 어지럽히는 작업을 별도 세션으로 떼어내는 전략입니다. 대규모 탐색을 서브에이전트에게 시키면, 파일 덤프는 그쪽 컨텍스트에서 소비되고 본진에는 결론 몇 줄만 돌아옵니다.

본진의 예산을 지키는 가장 확실한 방법이에요.

외부화(memory)는 컨텍스트 밖 저장소를 씁니다. 세션이 끝나면 컨텍스트는 증발하지만, 파일로 적어둔 것은 남죠.

작업 상태를 마크다운으로 기록해 두고 다음 세션이 이어받는 패턴이 대표적입니다. 프로젝트 지식을 CLAUDE.md와 메모리 파일로 축적하는 패턴도 여기 해당하고요.

전략 한 줄 요약 대표 사례
선별 로딩 필요할 때만 가져온다 부분 읽기, Skill 점진 로딩
요약 히스토리를 접는다 자동 컴팩션
격리 다른 세션에 시킨다 서브에이전트
외부화 파일에 적어둔다 메모리 파일, 상태 문서

상시 로드 파일의 설계 기준

CLAUDE.md 같은 파일은 매 세션 예산에서 선공제되는 고정비입니다. 그래서 기준이 명확해야 해요.

담을 것은 “항상 참이고, 어기면 안 되는 것”입니다. 코딩 컨벤션, 금지 사항, 빌드 명령어 같은 것들이요.

빼야 할 것은 “가끔만 필요한 것”입니다. 특정 작업의 상세 절차는 Skill로, 과거 작업 기록은 메모리 파일로 내리는 게 맞습니다.

노트북과 노트 한 권만 놓인 책상과 라벨 붙은 서랍이 있는 정돈된 작업 공간
책상 위에는 지금 작업과 관련된 것만, 컨텍스트도 같아요

도구 등록도 같은 논리가 적용됩니다. MCP(Model Context Protocol) 서버를 붙일수록 도구 정의가 고정비로 쌓입니다.

안 쓰는 서버 열 개는 그 자체로 성능 저하 요인이에요. 정기적으로 정리할 가치가 있습니다.


마무리

컨텍스트 엔지니어링은 결국 관련성 관리입니다. 큰 창이 생겼다고 다 채우는 게 아니라, 매 순간 모델의 책상 위에 지금 작업과 관련된 것만 올려두는 일이죠.

하네스 엔지니어링 편에서 다룬 실행 루프와 이 글의 예산 관리가 합쳐지면, 에이전트 설계의 큰 그림이 완성됩니다. 다음 글에서는 이를 실제로 조립한 파이프라인 사례를 다루겠습니다.

이어서 읽기