클로드 코드 컨텐스트 윈도우 100%? 현명하게 관리하는 8가지 방법

in #kr7 days ago

image.png

클로드 코드(Claude Code) 컨텍스트 윈도우 사용량, 100%가 되면 어떻게 될까?

안녕하세요 가야태자 @talkit 입니다.

요즘 클로드 코드를 열심히 사용하고 있습니다.

그런데 클로드코드에 이용량 중에 컨텍스트 윈도우 이용량이 있다는걸 알았습니다.

간략히 요약하면 한 세션에서 사용할 수 있는 양이고 이게 넘어가면 기억을 잃어 버린다 정도 입니다.

상세한 내용은 다음과 같습니다. 해당 사용량을 어떻게 줄이고 관리하는지도 알아보겠습니다.


1. 컨텍스트 윈도우가 도대체 뭔가요?

컨텍스트 윈도우는 쉽게 말해 모델의 "책상 크기" 입니다.

클로드는 사람처럼 기억을 저장해 두는 게 아닙니다. 매번 대답할 때마다 지금까지의 대화 전체를 처음부터 다시 읽고 답을 만듭니다. 그러니까 이 "다시 읽을 수 있는 분량"에 물리적인 한계가 있는데, 그게 바로 컨텍스트 윈도우입니다.

책상 위에 서류를 계속 쌓는다고 생각하시면 됩니다. 책상이 넓으면 많이 올려두고 한눈에 볼 수 있지만, 꽉 차면 뭔가는 치워야 새 서류를 올릴 수 있습니다. 치워진 서류의 내용은 더 이상 못 보게 되는 거죠.

그래서 긴 세션 후반부에 클로드가 갑자기 "아까 그 파일 뭐였죠?" 같은 반응을 보이거나, 초반에 정해둔 규칙을 어기기 시작하는 일이 생깁니다. 모델이 멍청해진 게 아니라 그 부분이 책상에서 치워진 겁니다.

2. "사용량 한도"와는 완전히 다른 개념입니다

여기가 제일 헷갈리는 부분입니다. 클로드 코드에는 성격이 다른 두 가지 "사용량"이 있습니다.

구분컨텍스트 윈도우사용량 한도(Rate Limit)
무엇한 세션이 들고 있는 대화의 양일정 기간 동안 쓴 총 토큰 양
단위세션(대화) 단위5시간 / 주 단위
리셋/clear 하면 즉시 초기화시간이 지나야 회복
꽉 차면자동 압축되며 세부 기억 손실한도 풀릴 때까지 대기

즉, 컨텍스트가 100%라고 해서 사용량 한도가 다 된 게 아니고, 반대로 사용량 한도가 넉넉해도 컨텍스트는 꽉 찰 수 있습니다. 제가 처음에 헷갈렸던 게 딱 이 부분이었습니다. "다른 건 다 여유 있는데 왜 이것만 100%로 가지?" 하고요.

3. 컨텍스트를 잡아먹는 범인들

한 세션에서 컨텍스트를 채우는 요소는 생각보다 많습니다.

  • 시스템 프롬프트 — 클로드 코드가 기본으로 들고 시작하는 내용
  • CLAUDE.md — 프로젝트 규칙 파일. 매 세션 통째로 올라갑니다
  • MCP 서버의 도구 정의 — 이게 은근한 복병입니다. MCP를 여러 개 붙여두면 대화를 한 마디도 안 했는데 시작부터 상당 부분이 차 있습니다
  • 읽은 파일의 내용 — 대용량 파일을 통째로 읽히면 순식간에 차오릅니다
  • 명령어 실행 결과npm install 로그, 테스트 실패 출력, git log 전체 같은 것들
  • 주고받은 모든 대화

특히 세 번째와 다섯 번째가 무섭습니다. 빌드 에러 로그 한 번 길게 뽑으면 그것만으로 몇 퍼센트가 훅 올라갑니다.

4. 그래서 100%가 되면 세션을 못 쓰나요?

아닙니다. 세션이 죽지는 않습니다.

한도에 근접하면 클로드 코드가 자동 압축(auto-compact) 을 실행합니다. 지금까지의 대화를 스스로 요약해서 요약본 하나로 줄이고, 그 요약을 들고 새 컨텍스트에서 대화를 이어갑니다. 화면상으로는 압축 중이라는 안내가 잠깐 뜨고 그대로 진행됩니다.

문제는 요약은 요약이라는 점입니다. 큰 흐름은 남지만 다음 같은 것들이 잘 날아갑니다.

  • 구체적인 변수명, 함수명, 파일 경로
  • "이 방식은 시도했는데 실패했다" 같은 시행착오 기록
  • 초반에 세워둔 세부 제약 조건

그래서 압축 직후에 이미 폐기한 접근법을 클로드가 다시 제안하는 일이 생깁니다. 세션이 끊기는 게 아니라 품질이 조용히 떨어지는 것이 진짜 리스크입니다.

그리고 하나 더. 압축 자체도 토큰을 씁니다. 요약을 만들려면 전체 대화를 한 번 다 읽어야 하니까요. 압축이 자주 일어나면 앞에서 말한 "사용량 한도" 쪽도 같이 깎여 나갑니다. 압축에 계속 의존하는 건 여러모로 손해입니다.

5. 현재 사용량 확인하기

/context 명령을 치면 지금 컨텍스트가 무엇으로 채워져 있는지 항목별로 보여줍니다. 시스템 프롬프트가 얼마, MCP 도구가 얼마, 대화가 얼마 하는 식이라 어디서 새고 있는지 범인을 잡기 좋습니다.

세션을 시작하자마자 한 번 쳐보시는 걸 권합니다. 저는 이걸 처음 보고 MCP 서버 정리를 시작했습니다.

6. 컨텍스트 사용량을 줄이는 실전 방법

(1) 작업이 바뀌면 무조건 /clear

가장 확실하고 가장 저평가된 방법입니다. 로그인 버그 잡다가 CSS 작업으로 넘어간다면, 앞의 대화는 도움이 되기는커녕 방해만 됩니다. 미련 없이 비우세요.

기준은 간단합니다. "지금 하려는 일이 앞의 대화를 몰라도 되는 일인가?" 그렇다면 /clear.

(2) /compact는 지시와 함께

자동 압축을 기다리지 말고, 적당한 타이밍에 직접 압축하세요. 이때 그냥 /compact만 치지 말고 무엇을 남길지 알려주면 요약 품질이 확 달라집니다.

/compact 인증 리팩터링 관련 결정 사항과 아직 안 고친 파일 목록 위주로 남겨줘

작업 하나를 마무리한 직후, 다음 작업으로 넘어가기 직전이 제일 좋은 타이밍입니다.

(3) 안 쓰는 MCP 서버는 꺼두기

MCP는 붙여두기만 해도 도구 정의가 시작부터 컨텍스트를 차지합니다. 이번 작업에 안 쓸 서버는 과감히 비활성화하세요. /context로 확인해 보면 체감이 됩니다.

(4) CLAUDE.md 다이어트

CLAUDE.md는 매 세션 전부 로드됩니다. 여기에 온갖 내용을 다 넣어두신 분들이 많은데, 자주 안 쓰는 내용은 별도 문서로 빼고 필요할 때만 읽히는 게 낫습니다. 핵심 규칙 위주로 짧게 유지하세요.

(5) 파일은 통째로 말고 필요한 부분만

"이 파일 전체 읽고 분석해줘"보다 "이 파일에서 인증 관련 함수만 찾아서 보여줘"가 훨씬 경제적입니다. 수천 줄짜리 파일을 통으로 올리는 건 책상에 백과사전을 펼쳐놓는 것과 같습니다.

(6) 서브에이전트(subagent) 활용

"코드베이스 전체에서 이 패턴 찾아줘" 같은 탐색 작업은 서브에이전트에게 시키면 좋습니다. 서브에이전트는 자기만의 별도 컨텍스트에서 일하고 결과만 가져오기 때문에, 탐색 과정의 지저분한 중간 출력이 메인 대화에 쌓이지 않습니다.

(7) 긴 출력은 파일로 빼기

테스트 로그나 빌드 결과처럼 긴 출력은 파일로 저장해두고, 필요한 부분만 골라 읽게 하는 방식이 좋습니다.

npm test > test-result.log 2>&1

이렇게 해두고 "test-result.log에서 실패한 케이스만 뽑아줘"라고 하면 됩니다.

(8) 긴 대화 대신 짧은 세션 여러 개

한 세션에서 10개 작업을 하는 것보다, 작업마다 새 세션으로 가는 편이 결과가 좋습니다. 이어가야 할 맥락이 있다면 CLAUDE.md나 별도 메모 파일에 결론만 적어두고 세션을 갈아타세요. 요약에 맡기는 것보다 훨씬 정확합니다.

7. 정리

  • 컨텍스트 윈도우 = 한 세션의 작업 기억, 사용량 한도와는 별개
  • 100%가 돼도 세션은 안 죽고 자동 압축으로 이어짐
  • 단, 압축하면 세부 기억이 날아가고 토큰도 추가로 소모
  • 그러니 압축을 기다리지 말고 /clear/compact로 먼저 관리하는 게 이득
  • /context로 어디서 새는지 먼저 확인해 보기

결론은 하나입니다. 책상은 넓게, 서류는 필요한 것만.


참고: 자동 압축이 시작되는 정확한 임계값이나 명령어 세부 동작은 클로드 코드 버전에 따라 달라질 수 있습니다. 최신 내용은 공식 문서를 확인해 주세요.
공식 문서: https://docs.claude.com/en/docs/claude-code/overview

읽어주셔서 감사합니다. 도움이 되셨다면 좋겠습니다. 😊

Sort:  

그래서 요놈이 가끔 바보스럽게 되는거군요 ㅎㅎ

[booming-kr-auto]
보팅 완료했습니다 🙌

  • 여러분이 작성한 댓글: @talkit/t2w4gj
  • 여러분이 보팅한 수치: 100.00% / rshares=670,286,004,102
  • @support-kr이 여러분의 댓글에 드리는 보팅: 총 446,592.13SP 중 49.07%
    IMG_9947.jpeg
  • 여러분의 임대와 보팅이 kr 커뮤니티를 활성화 하는데 큰 힘이 됩니다

ㅎㅎㅎ 저도 처음 봐서
조금 알아봤습니다.

책상은 넓게, 서류는 필요한 것만!
실제 책상도 이렇게 쓰는 게 유용하죠!

오 실생활에도 ^^
저는 책상을 어지럽히고 사는 성격이라 ㅠ.ㅠ

[booming-kr-auto]
보팅 완료했습니다 🙌

  • 여러분이 작성한 댓글: @talkit/t2w4gj
  • 여러분이 보팅한 수치: 50.00% / rshares=142,629,449,879
  • @support-kr이 여러분의 댓글에 드리는 보팅: 총 446,592.13SP 중 13.32%
    IMG_9947.jpeg
  • 여러분의 임대와 보팅이 kr 커뮤니티를 활성화 하는데 큰 힘이 됩니다

컨텍스트윈도우가 꽉 차갈때,
자동으로 (알아서) 현재 맥락과 거리가 먼 내용부터 기억에서 지워주면 좋을 것 같아요~ ^^
(이미 그렇게 하고 있는지도 모르겠지만요... ㅎ)

[booming-kr-auto]
보팅 완료했습니다 🙌

  • 여러분이 작성한 댓글: @talkit/t2w4gj
  • 여러분이 보팅한 수치: 30.00% / rshares=200,607,512,130
  • @support-kr이 여러분의 댓글에 드리는 보팅: 총 446,592.13SP 중 11.15%
    IMG_9947.jpeg
  • 여러분의 임대와 보팅이 kr 커뮤니티를 활성화 하는데 큰 힘이 됩니다

음 저기 나와 있고, 클로드와 대화를 해본 결과로는
일단 memory.md라는 파이을 사용해서 필요한 메모리를 요약하고,
해당 메모리가 컨텍스트 윈도우가 압축 되거나 초기화 되더라도 조금은 세션을 유지해 준다 입니다. ^^
저 같은 경우 제미나이를 쓰면서 컨텍스트라는 개념도 모르고 그냥 계속 메모리를 위해서 문서를 만들면서 작업해서
혹시나 컨텍스트 윈도우가 다차서 초기화 되면, docs 읽어봐라고 하면 ㅋㅋㅋ
일정 부분 과거 세션 메모리를 확보할 수 있습니다.

옆에붙이 열심히 쓰고 계셔서 압축에 대해서는 들었는데, 컨텍스트 내용, 구성에 대해서는 몰랐었네요. 큰 도움이 되었습니다.

[booming-kr-auto]
보팅 완료했습니다 🙌

  • 여러분이 작성한 댓글: @talkit/t2w4gj
  • 여러분이 보팅한 수치: 100.00% / rshares=245,394,073,704
  • @support-kr이 여러분의 댓글에 드리는 보팅: 총 446,592.13SP 중 5.59%
    IMG_9947.jpeg
  • 여러분의 임대와 보팅이 kr 커뮤니티를 활성화 하는데 큰 힘이 됩니다

저도 하나의 프로젝트를 오래 사용해서 쓰다보니 발생해서 ^^
알아보고 글을 작성해보았습니다.
감사합니다.

Upvoted! Thank you for supporting witness @jswit.

저는 챗gpt를 사용하는데요.
저도 확인해봐야겠네요.

코덱스를 쓰시는 건가요 그냥 챗GPT만 쓰시는지 궁금 합니다.