개인의 기록
  • 소개
  • 프로젝트
  • 글
  • 링크

© 2026 newgirok

← 글 목록

Context Management — 컨텍스트 윈도우 효율적으로 사용하기

2025년 12월 19일
Claude CodeContext Management컨텍스트Compaction대형 프로젝트

대형 프로젝트에서 작업하다 보면 Claude Code가 앞부분을 잊어버리는 것처럼 느껴질 때가 있습니다. 컨텍스트 윈도우에 담을 수 있는 양이 한정되어 있기 때문입니다. 어떻게 관리하느냐에 따라 작업 품질이 달라집니다.

Context Window란

언어 모델이 한 번에 처리할 수 있는 텍스트의 최대 크기입니다. 대화 기록, 읽은 파일, 실행 결과가 모두 이 안에 들어가야 합니다.

토큰(Token): 언어 모델이 텍스트를 처리하는 단위. 대략 영어 4글자 또는 한글 1~2글자. Context Window 크기는 토큰 수로 표시됩니다.

컨텍스트가 꽉 차면:

  • 오래된 대화 내용이 잘려나감
  • 앞서 읽었던 파일 내용이 사라짐
  • 초기에 세운 계획을 잊을 수 있음

/compact — 수동 압축

현재 대화를 요약해 컨텍스트를 줄입니다.

claude> /compact

전체 대화를 핵심 요점 위주로 압축합니다. 세부 내용 일부는 손실되지만 중요한 맥락은 유지됩니다.

자동 압축

{
  "autoCompact": true,
  "autoCompactThreshold": 0.8
}

컨텍스트 사용량이 80%를 넘으면 자동으로 압축합니다.

Compaction 전략

작업 단위로 세션 나누기

하나의 세션에 너무 많은 작업을 담지 않습니다.

# 권장: 기능별 세션 분리
claude  # 로그인 기능
claude  # 결제 기능
claude  # 알림 기능

# 비권장: 하나의 세션에 모든 작업
claude  # 로그인 + 결제 + 알림 + 리팩토링 + 테스트 ...

필요한 파일만 읽기

모든 파일을 읽게 하기보다 필요한 파일만 지정합니다.

X: "전체 프로젝트 파악하고 버그 고쳐줘"

O: "user.service.ts의 getUserById 함수에서
    null 체크가 누락됐어. 거기만 봐줘"

결과 요약 요청

긴 출력이 예상되는 작업에서 요약을 요청합니다.

"테스트 실행하고 실패한 것만 요약해줘.
 전체 로그는 출력하지 않아도 돼"

Context Injection

매 요청마다 자동으로 컨텍스트를 주입하는 방법입니다.

CLAUDE.md 활용

CLAUDE.md의 내용은 매 세션마다 자동으로 컨텍스트에 포함됩니다. 프로젝트 핵심 정보를 여기에 담으면 항상 Claude가 알 수 있습니다.

Hooks로 동적 주입

{
  "hooks": {
    "UserPromptSubmit": [
      {
        "hooks": [{
          "type": "command",
          "command": "node .claude/context-provider.js"
        }]
      }
    ]
  }
}
// .claude/context-provider.js
const branch = require('child_process')
  .execSync('git branch --show-current').toString().trim();
const status = require('child_process')
  .execSync('git status --short').toString().trim();

process.stdout.write(
  `현재 브랜치: ${branch}\n변경 파일:\n${status}`
);

매 요청마다 Git 상태가 자동으로 컨텍스트에 추가됩니다.

/context 명령

claude> /context

현재 컨텍스트 사용량과 남은 용량을 확인합니다.

Resume로 컨텍스트 이어받기

세션이 종료되면 컨텍스트도 사라집니다. --resume으로 이전 세션을 재개하면 해당 세션의 컨텍스트가 복원됩니다.

claude --resume

단, 압축된 컨텍스트는 요약본만 복원됩니다.

대형 파일 처리

큰 파일 전체를 읽게 하면 컨텍스트를 많이 차지합니다.

X: "package-lock.json 읽고 의존성 정리해줘"
   → 수천 줄이 컨텍스트를 채움

O: "package.json의 dependencies 목록만 봐줘"
   → 필요한 부분만 읽음

특정 줄 범위나 함수 단위로 읽도록 지시하면 컨텍스트 효율이 높아집니다.

핵심 원칙

컨텍스트는 소모품이 아닌 자원입니다. 불필요한 내용으로 채우지 않고, 작업에 필요한 정보만 담는 것이 효율적인 사용법입니다.

  • 관련 없는 파일 읽기 요청 자제
  • 긴 로그는 필요한 부분만 출력
  • 작업 완료 후 새 작업은 /clear 또는 새 세션 시작
  • CLAUDE.md로 반복 설명을 제거
← 이전 글Agent Lifecycle — Claude Code가 작업을 처리하는 순서
다음 글 →Session & Context — 대화와 작업 상태 유지하기