aun_phonogram - 2025년 01월 24일
대상 독자
- Claude Code를 사용하면서 이용 제한(Usage Limits)에 금방 도달하시는 분
- 토큰 소비 구조를 이해하고 효율적으로 AI를 사용하고 싶은 분
시작하며
You've hit your limit ・ resets xxx (Asia/Tokyo)
개발이 한창 잘 진행되고 있을 때 나타나는 이 메시지, 가능한 한 피하고 싶으시죠? 이용 제한에 금방 도달하는 것은 같은 채팅에서 대화를 너무 오래 지속하고 있는 것이 원인 중 하나일 수 있습니다.
LLM에는 '컨텍스트 윈도우(Context Window)'라는 구조가 있어, 대화가 거듭될수록 토큰 소비가 눈덩이처럼 불어납니다. 이 글에서는 그 구조와 대책을 설명합니다.
컨텍스트 윈도우란
컨텍스트 윈도우는 AI가 한 번에 처리할 수 있는 '기억 영역'과 같은 것입니다.
중요한 점은 매번 응답할 때마다 대화 기록의 대부분(경우에 따라서는 거의 전부)이 입력값으로 처리된다는 점입니다. 즉, 대화가 길어질수록 한 번의 주고받기에서 소비되는 토큰이 늘어납니다.
또한, 대화 기록뿐만 아니라 시스템 프롬프트(System Prompt)나 도구(Tool)·MCP 도구·커스텀 에이전트 등의 정의, 메모리 파일(CLAUDE.md) 등의 요소도 매번 전송됩니다.
컨텍스트 윈도우의 내용은 다음 명령어로 확인할 수 있습니다.
제한 내 이용 범위에 대하여
공식 정보에 따르면, Pro 플랜의 경우 5시간당 약 10~40개의 프롬프트 전송이 기준으로 제시되어 있습니다. Max 플랜에서는 Pro의 5배(Max 5x) 또는 20배(Max 20x)의 이용 범위가 있습니다. (주간 레이트 제한도 존재합니다)
하지만 이것은 어디까지나 기준일 뿐입니다. 대화 기록이 길어지면 한 번의 전송으로 처리하는 토큰 양이 늘어나기 때문에, 더 적은 횟수만으로도 제한에 도달하게 됩니다.
현재 어느 정도 사용하고 있는지는 다음 명령어로 확인할 수 있습니다.
왜 대화를 지속하면 금방 제한에 도달하는가
프롬프트를 보낼 때마다 '이번 지시'뿐만 아니라 '지금까지의 대화 기록 + α'도 함께 보내기 때문입니다. 게다가 AI의 응답(출력 토큰) 또한 이용 제한의 대상입니다.
1회차: [System] + [Q1] → [A1]
2회차: [System] + [Q1+A1] + [Q2] → [A2]
3회차: [System] + [Q1+A1+Q2+A2] + [Q3] → [A3]
4회차: [System] + [Q1+A1+Q2+A2+Q3+A3] + [Q4] → [A4]
5회차: [System] + [Q1+A1+Q2+A2+Q3+A3+Q4+A4] + [Q5] → [A5]
매번 과거의 주고받은 내용(Q1~A4)이 '입력'으로 카운트되기 때문에 입력 토큰이 점점 커지게 됩니다.
토큰 소비는 '눈덩이처럼' 불어난다
구체적인 숫자로 살펴보면 다음과 같은 이미지입니다.
단순화를 위해 시스템 프롬프트를 1,000 토큰, Q와 A를 각각 1,000 토큰이라고 가정하겠습니다.
【1회차】 입력: 1,000(sys) + 1,000(Q1) = 2,000 출력: 1,000(A1)
【2회차】 입력: 1,000(sys) + 2,000(Q1+A1) + 1,000(Q2) = 4,000 출력: 1,000(A2)
【3회차】 입력: 1,000(sys) + 4,000(Q1+A1+Q2+A2) + 1,000(Q3) = 6,000 출력: 1,000(A3)
...
【10회차】 입력: 1,000(sys) + 18,000(기록) + 1,000(Q10) = 20,000 출력: 1,000(A10)
입력만 보더라도 1회차는 2,000 토큰이지만, 10회차는 20,000 토큰이 됩니다. 똑같은 '한 번의 지시'라도 소비량은 10배가 되었습니다.
누적해 보면...
【1회차】 소비: 3,000 → 누적: 3,000
【2회차】 소비: 5,000 → 누적: 8,000
【3회차】 소비: 7,000 → 누적: 15,000
【4회차】 소비: 9,000 → 누적: 24,000
【5회차】 소비: 11,000 → 누적: 35,000
【6회차】 소비: 13,000 → 누적: 48,000
【7회차】 소비: 15,000 → 누적: 63,000
【8회차】 소비: 17,000 → 누적: 80,000
【9회차】 소비: 19,000 → 누적: 99,000
【10회차】소비: 21,000 → 누적: 120,000
10번을 주고받으면 3,000 토큰 × 10회 = 30,000 토큰이 아니라, 120,000 토큰을 사용하게 되는 것입니다.
이것이 대화를 지속하면 금방 이용 제한에 도달하게 되는 원인입니다.
해결책
자주 채팅을 클리어하기
작업이 일단락되면 다음 명령어로 대화 기록을 클리어합니다.
만약 실수로 클리어했다면 다음 명령어로 과거 대화로 돌아갈 수도 있습니다.
대화 기록이 사라지는 것이 곤란하다면, 요약하게 하여 파일로 출력하거나 /export 명령어로 대화 기록을 파일로 내보낸 뒤 새로운 대화에 인계하는 요령도 있습니다.
주고받는 횟수 줄이기
주고받는 횟수를 줄임으로써 토큰 소비를 줄일 수 있습니다.
무턱대고 구현부터 하지 말고, Plan 모드(Shift+Tab × 2회)로 계획을 세운 뒤에 구현하도록 합니다. 처음에 목표를 명확히 하고 진행함으로써 구현의 어긋남이 적어지고, 불필요한 대화를 줄일 수 있습니다.
또한, 원하는 결과가 나오지 않았을 때는 대화로 궤도를 수정하기보다 /rewind로 대화를 되돌려 다시 시작하는 것이 좋습니다. 대화를 거듭하며 수정하려고 하면 불필요한 토큰을 소비할 뿐만 아니라, 컨텍스트가 지저분해져서 더욱 의도치 않은 방향으로 진행될 수도 있습니다.
사용하는 모델은 Opus 4.5를 추천합니다. 비용은 Sonnet 4.5의 약 1.7배(2026년 1월 시점)가 되지만, 정밀도가 높아 시행착오가 줄어들기 때문에 결과적으로 비용이 더 저렴해지는 경우가 많습니다.
Pro 플랜에서 항상 Opus 4.5를 사용하면 금방 제한에 도달하므로, 계획 시에는 Opus 4.5를 사용하고 구현 시에는 Sonnet 4.5를 사용하도록 설정할 수도 있습니다.
불필요한 도구나 프롬프트 제거하기
MCP 도구나 CLAUDE.md 등은 설정해 두는 것만으로도 매번 토큰을 소비합니다.
모델이 진화함에 따라 이전에는 필수라고 여겨졌던 도구나 프롬프트가 불필요해졌거나, 오히려 방해가 되는 경우도 있으므로 정기적으로 재검토를 수행해야 합니다.
효과를 느끼지 못하는 것은 제거합시다. 필요하다고 느껴지면 그때 다시 넣으면 됩니다.
서브 에이전트 활용 (상급자용)
Claude Code에는 부모의 대화 기록을 인계받지 않는 '서브 에이전트' 기능이 있습니다. 긴 대화 도중이라도 가벼운 컨텍스트로 처리할 수 있으므로, 독립된 작업을 맡기도록 조정하면 효과적입니다.
다른 도구에서도 마찬가지
이 구조는 Claude Code에만 국한되지 않고 Cursor, GitHub Copilot, Codex CLI, Antigravity 등 다른 AI 도구에도 공통적으로 적용됩니다.
어떤 도구를 사용하더라도 대화를 너무 오래 지속하면 토큰 소비가 팽창하여 이용 제한에 걸리기 쉬워지거나 크레딧 소비가 많아집니다. 따라서 '자주 채팅을 클리어하는' 습관은 유효합니다.
마치며
이용 제한으로 고민하시는 분들은 우선 채팅을 세세하게 클리어해 보시기 바랍니다.
긴 대화를 지속함으로써 '문맥을 유지할 수 있다'는 장점은 있지만, 토큰 소비는 늘어납니다. 필요한 정보는 그때마다 다시 전달하는 수고를 아끼지 않고 자주 리셋하는 습관을 들임으로써, 이용 제한에 시달리는 일도 줄일 수 있을 것입니다.
AI 도구를 효율적으로 다루기 위한 작은 팁이었습니다!
참고 링크