Claude Code의 Long Context 대응 전략

Lost in the Middle과 Attention 희석을 모델과 아키텍처 양면에서 극복하는 방법

Claude Opus는 모델 학습과 Extended Thinking으로, Claude Code는 컨텍스트 압축, 서브에이전트, Progressive Disclosure, 메모리 외부화 등의 아키텍처 전략으로 Long Context 문제에 대응한다. 모델의 한계를 아키텍처로 보상하는 실전 사례를 분석한다.

Agent
Architecture
Claude Code
LLM
저자

Kwangmin Kim

공개

2026년 03월 12일

1 배경

LLM은 context window가 길어질수록 Lost in the Middle (중간 정보 무시)과 Attention 희석 (softmax 확률 분배 한계)에 취약해진다. 이 두 현상의 원리와 실증 근거는 긴 문맥 재정렬(LongContextReorder) 글에서 다루었다.

이 글에서는 Claude Opus(모델 레벨)와 Claude Code(어플리케이션 레벨)가 이 문제에 어떻게 대응하는지 분석한다.

2 모델 레벨: Claude Opus

2.1 Needle in a Haystack 성능

Anthropic은 Claude 3부터 “Needle in a Haystack” 벤치마크에서 200K 컨텍스트 전 구간에 걸쳐 99%+ 정확도를 달성했다고 발표했다. GPT-4 Turbo가 동일 테스트에서 중간 구간 성능 저하를 보인 것과 대비된다.

경고

Needle in a Haystack는 단일 사실 검색 테스트이다. 실제 업무에서처럼 여러 정보를 종합 추론해야 하는 경우에는 여전히 성능 저하가 존재한다. 벤치마크 결과를 실무 성능과 동일시하면 안 된다.

2.2 학습 데이터 분포 조정

정답이 중간에 위치하는 학습 데이터를 의도적으로 늘려 positional bias를 완화한 것으로 추정된다. Anthropic이 정확한 학습 방법론을 공개하지는 않았지만, 벤치마크 결과에서 이전 세대 대비 중간 구간 성능이 뚜렷하게 개선되었다.

2.3 Extended Thinking (확장 사고)

Claude Opus 4/4.6의 핵심 기능이다. 긴 컨텍스트를 한 번에 처리하는 대신, 사고 과정에서 중간 정보를 명시적으로 추출하고 정리한다.

[일반 모델의 처리]
200K 토큰 입력 → softmax attention → 중간 정보 희석 → 답변

[Extended Thinking의 처리]
200K 토큰 입력 → 사고 단계에서 관련 정보 명시적 추출
                → 추출된 정보를 재구성 → 답변

이것은 attention 희석을 우회하는 전략이다. softmax의 수학적 한계를 아키텍처로 해결하는 대신, 추론 과정에서 보상한다. 사고 단계에서 “이 컨텍스트의 42K 지점에 관련 정보가 있다”고 명시적으로 참조하면, 최종 답변 생성 시 해당 정보가 누락되지 않는다.

3 어플리케이션 레벨: Claude Code

Claude Code는 모델의 한계를 인정하고, 컨텍스트에 들어가는 정보 자체를 관리하여 문제가 발생할 조건을 줄이는 전략을 사용한다.

3.1 1. 자동 컨텍스트 압축 (Conversation Compaction)

대화가 context limit에 가까워지면 이전 메시지를 자동 압축한다.

[초기 대화 10K 토큰]
[중간 대화 50K 토큰]  <- 이 부분이 요약으로 압축됨
[최근 대화 30K 토큰]  <- 원본 유지

이것은 Lost in the Middle을 예방하는 전략이다. 컨텍스트가 너무 길어지기 전에 중간 부분을 요약하여, 모델이 처리하는 전체 길이를 관리한다.

노트

압축 시 손실되는 정보가 있을 수 있다. Claude Code는 이를 보완하기 위해 세션 로그를 .jsonl 파일로 저장하고, 필요시 원본 대화를 검색할 수 있도록 한다.

3.2 2. 서브에이전트 아키텍처

Claude Code의 Agent 도구는 복잡한 작업을 별도 프로세스에 위임한다.

[메인 컨텍스트: 80K 토큰]
  |-- Agent(Explore): 별도 컨텍스트에서 코드 탐색 -> 결과만 반환
  |-- Agent(Plan): 별도 컨텍스트에서 설계 -> 계획만 반환
  |-- Agent(general): 별도 컨텍스트에서 복잡한 작업 -> 결과만 반환

각 에이전트는 자체 컨텍스트에서 작업하므로, 메인 컨텍스트에 모든 정보를 쌓지 않는다. 에이전트가 50K 토큰의 코드를 읽더라도 메인 컨텍스트에는 요약된 결과만 들어온다.

이것은 컨텍스트 길이를 물리적으로 분산시키는 전략이다. 인간의 인지에서 “작업 기억”과 “위임된 작업”이 다른 것과 유사하다.

3.3 3. 도구 기반 Progressive Disclosure

모든 정보를 한 번에 로딩하지 않는다. 필요할 때만 필요한 정보를 컨텍스트에 넣는다.

# WRONG: 모든 파일을 한 번에 읽어서 컨텍스트에 넣기
전체 프로젝트 코드 500K 토큰 -> 컨텍스트에 투입

# CORRECT: 필요할 때만 읽기
Glob으로 파일 목록 확인  (100 토큰)
-> 관련 파일만 Read       (2K 토큰)
-> 필요시 추가 Read       (2K 토큰)

이것은 Agent 컨텍스트 관리 전략에서 다룬 Progressive Disclosure와 동일한 원리이며, LangChain Skills의 스킬 로딩 방식과도 일치한다. SKILL.md를 모두 로딩하는 대신, description을 보고 관련 스킬만 선택적으로 로딩하는 것과 같다.

3.4 4. 메모리 시스템 (외부화)

장기 정보를 컨텍스트에 계속 유지하는 대신 파일 시스템에 외부화한다.

[컨텍스트에 유지하지 않음]
- 사용자 선호도, 프로젝트 맥락, 과거 피드백

[파일로 외부화]
~/.claude/projects/.../memory/
  |-- user_role.md        <- 필요할 때만 읽음
  |-- feedback_testing.md <- 필요할 때만 읽음
  |-- MEMORY.md           <- 인덱스만 컨텍스트에 로드

MEMORY.md 인덱스(200줄 이내)만 항상 로드하고, 상세 내용은 필요할 때 읽는다. working memory와 long-term memory를 분리하는 인지 아키텍처이다.

이것은 RAG와 구조적으로 동일하다.

비교 RAG Claude Code 메모리
저장소 벡터 DB 파일 시스템
인덱스 임베딩 벡터 MEMORY.md
검색 유사도 검색 Grep/Read
목적 외부 지식 참조 대화 간 기억 유지

3.5 5. CLAUDE.md 계층 구조

프로젝트 지시사항을 컨텍스트에 넣되, 계층적으로 로드한다.

~/.claude/CLAUDE.md              <- 전역 (항상 로드)
project/CLAUDE.md                <- 프로젝트 (해당 디렉토리에서만)
project/subdir/CLAUDE.md         <- 하위 (해당 하위에서만)

모든 지시를 하나의 거대한 시스템 프롬프트에 넣는 대신, 현재 작업 위치에 관련된 지시만 선택적으로 로드한다. 전역 규칙은 항상 포함되지만, 하위 디렉토리의 세부 규칙은 해당 디렉토리에서 작업할 때만 로드된다.

4 전략 비교 테이블

계층 전략 Lost in the Middle 대응 Attention 희석 대응 비용 영향
모델 학습 위치 균형 학습 데이터 직접 완화 간접 완화 없음
모델 추론 Extended Thinking 우회 (명시적 추출) 우회 (추출 후 재구성) 사고 토큰 비용 증가
앱: 압축 자동 컨텍스트 압축 예방 (길이 제한) 예방 (토큰 수 감소) 비용 절감
앱: 분산 서브에이전트 예방 (분산 처리) 예방 (분산 처리) 병렬 호출 비용
앱: 지연 로딩 Progressive Disclosure 예방 (필요 시만 로드) 예방 (최소 토큰) 비용 절감
앱: 외부화 메모리/CLAUDE.md 예방 (외부 저장) 예방 (외부 저장) 비용 절감

5 자체 에이전트 개발에의 시사점

Claude Code의 전략은 자체 RAG/Agent 시스템에도 적용할 수 있다.

5.1 직접 적용 가능한 패턴

Claude Code 전략 자체 에이전트 적용
컨텍스트 압축 대화 히스토리 요약 후 재투입 (ConversationSummaryMemory)
서브에이전트 LangGraph의 서브그래프로 작업 분산
Progressive Disclosure 스킬 기반 프롬프트 동적 로딩
메모리 외부화 벡터 DB + 요약 인덱스
계층적 프롬프트 공통 규칙 + 에이전트별 규칙 분리

5.2 핵심 원칙

모델의 한계를 모델 안에서 해결하려 하지 말고,
컨텍스트에 들어가는 정보 자체를 관리하라.

200K 컨텍스트를 가진 모델이라고 해서 200K를 채우는 것이 최선이 아니다. 필요한 정보만, 필요한 시점에, 적절한 위치에 넣는 것이 모델 업그레이드보다 효과적인 경우가 많다.

Subscribe

Enjoy this blog? Get notified of new posts by email: