Agent 설계 패턴

장기 컨텍스트 Agent의 세 가지 전략

태스크가 여러 컨텍스트 윈도우에 걸쳐 진행될 때, 새 윈도우마다 기억이 초기화됩니다. 프로덕션 환경에서 검증된 세 가지 전략으로 이 근본적 도전에 대응하여, Agent가 장기 태스크에서 일관성과 효율성을 유지할 수 있습니다.

근본적 도전
장기 태스크의 기억 소실 문제
복잡한 코딩 태스크는 Agent가 수십 단계의 작업을 수행하며 수만 Token의 대화 기록을 생성할 수 있습니다. 컨텍스트 윈도우가 가득 찰 때, 시스템은 딜레마에 직면합니다:

Option A: 새 윈도우를 시작하면, 새 윈도우는 아무것도 기억하지 못하고 Agent가 이미 완료한 작업을 반복합니다.
Option B: 기존 윈도우에서 계속 작업하면, Token이 증가함에 따라 모델의 어텐션이 희석되어 성능이 저하됩니다.

이것은 이론적 문제가 아닙니다. Claude Code, Cursor, Devin 같은 제품들이 매일 이 문제를 해결하고 있습니다.
전략 1
1
Compaction
컨텍스트 압축
대화가 컨텍스트 윈도우 한계에 가까워지면, LLM 호출 한 번으로 기존 대화를 요약합니다: 핵심 정보는 유지하고 불필요한 세부 사항은 제거한 후, 압축된 컨텍스트에서 작업을 계속합니다.
실무 팁
압축 시 LLM이 생성하는 요약은 구조화되어야 합니다 — 자유형 텍스트는 정보를 빠르게 찾기 어렵습니다. 예: "완료: [목록] | 미완료: [목록] | 핵심 결정: [목록] | 알려진 문제: [목록]" 형식으로 작성하면 후속 추론에서 필요한 정보를 빠르게 찾을 수 있습니다.
전략 2
2
Structured Note-taking
구조화된 메모
Agent가 실행 중에 대화 기록에만 의존하지 않고 핵심 정보를 외부 파일에 능동적으로 기록합니다. 컨텍스트가 초기화(새 윈도우)되면, 메모 파일에서 정보를 읽어 기억을 복원합니다.
Compaction과 비교
Compaction은 기존 정보를 압축하여 계속 사용하고, Note-taking은 정보를 외부에 저장했다가 나중에 가져옵니다. 전자는 연속 작업 시나리오에 적합하고, 후자는 중단될 수 있거나 여러 세션에 걸쳐 이어가야 하는 시나리오에 적합합니다. 두 가지를 함께 사용할 수도 있습니다.
전략 3
3
Sub-agent Architecture
Sub-agent 아키텍처
오케스트레이터 Agent가 깊은 탐색이 필요한 서브태스크를 Sub-agent에게 위임합니다. Sub-agent는 독립적인 컨텍스트 윈도우에서 작업하며(수만 Token을 소비할 수 있음), 최종적으로 오케스트레이터에게 정제된 요약(1,000~2,000 Token)만 반환합니다.
비유
CEO(오케스트레이터 Agent)가 3명의 부서장(Sub-agent)에게 각각 경쟁사 조사, 시장 분석, 기술 평가를 맡긴다고 상상해 보세요. 각 부서장은 일주일(많은 Token)을 사용할 수 있지만, CEO에게 보고하는 것은 한 페이지 PPT(정제된 요약)뿐입니다. CEO의 인지 대역폭은 항상 전략적 수준에 유지됩니다.
JIT Context vs 사전 로딩
사전 로딩(Preloading)
대화 시작 시 정보를 컨텍스트에 미리 주입
  • CLAUDE.md / Rules 파일 직접 로드
  • 사용자 설정, 프로젝트 구성
  • 자주 사용하는 컨텍스트 정보
  • 장점: 즉시 사용 가능, 추가 호출 불필요
  • 단점: 사용 여부에 관계없이 매번 Token 소비
JIT(Just-In-Time 온디맨드)
필요할 때만 정보를 컨텍스트로 가져옴
  • glob/grep으로 필요 시 파일 검색
  • RAG로 관련 문서 검색
  • API 호출로 실시간 데이터 수신
  • 장점: 컨텍스트가 간결하게 유지되며 현재 필요한 것만 포함
  • 단점: 도구 호출 왕복에 따른 지연 발생
모범 사례: 하이브리드 전략
고빈도 정보 사전 로딩(프로젝트 규약, 핵심 규칙, 사용자 설정) + 롱테일 정보 온디맨드 검색(특정 파일 내용, API 문서, 기록).

브라우저 캐싱 전략과 유사합니다: 핫 데이터는 메모리 캐시에(사전 로딩), 콜드 데이터는 디스크나 네트워크에서 가져옵니다(JIT). 목표는 컨텍스트 적중률 극대화 — 추론에 필요한 대부분의 정보는 이미 윈도우 안에 있고, 가끔 필요한 것만 동적으로 가져옵니다.
세 가지 전략 비교
전략 핵심 아이디어 적합한 시나리오 대표 제품
Compaction 기존 컨텍스트를 압축하여 핵심 정보를 유지하고 계속 진행 중단 없는 연속 장기 세션 Claude Code auto-compact
Note-taking 외부에 능동적으로 메모를 작성하고 윈도우 간에 읽어옴 중단될 수 있거나 여러 세션에 걸쳐 이어가야 하는 태스크 Claude Code TODO, Cursor Rules
Sub-agent Sub-agent가 깊이 탐색하고 요약만 반환 깊은 탐색이 필요하지만 오케스트레이터 컨텍스트를 오염시키지 않으려는 경우 Cursor Task, Claude Code spawn
장기 태스크의 본질적 도전은 유한한 어텐션 윈도우 vs 무한히 증가하는 정보량입니다. Compaction, Note-taking, Sub-agent 아키텍처는 각각 세 가지 문제를 해결합니다: 윈도우 내에서 간결함 유지, 윈도우 간 기억 전달, 깊은 탐색의 노이즈 격리. 세 가지를 조합해야 Agent가 복잡한 장기 태스크에서 효율성을 유지할 수 있습니다.