SPACE LOGBOOK

OCEAN LOGBOOK

Claude Code .. Token 아끼기…

2026.06.25

Claude Code .. Token 아끼기…

2026.06.25

Claude Code를 쓰다 보면 “토큰이 뭐지?”, “모델마다 얼마나 차이나지?” 하는 의문이 생긴다. 실제 사용 경험을 바탕으로, 개념부터 절약 노하우까지 한 번에 정리해봤다.

토큰(Token)이란 무엇인가

AI 모델은 텍스트를 토큰이라는 단위로 읽고 생성한다. 단어 하나가 반드시 토큰 하나는 아니고, 언어와 단어에 따라 다르다. 사실상 따져보면 화폐 대신에 쓰이는 상징적인 단위가 토큰인 만큼, 실상은 토큰 = 돈이라고 생각하면 틀리지 않다.

텍스트대략적인 토큰 수
영어 단어 1개약 1토큰
한글 글자 1개약 1~2토큰
한글 텍스트 1만 글자약 1만~2만 토큰
JS 파일 300줄약 5,000~8,000 토큰
A4 1페이지 분량약 500~700 토큰

토큰은 입력(Input)과 출력(Output) 두 가지로 과금된다. 내가 Claude에게 보내는 모든 것(파일, 코드, 질문)이 입력 토큰이고, Claude가 돌려주는 답변과 코드가 출력 토큰이다.

입력과 출력을 따로 과금하는 건 이중과금 아닌가?

처음 보면 이런 의문이 생긴다. “출력을 얻으려면 어차피 입력이 있어야 하는데, 요청에 돈 받고 결과에 또 돈 받는 건 이중과금 아닌가?” 현실 세계 대부분의 거래가 결과물(출력)당 과금인 것과 비교하면 납득이 잘 안 된다. (예: 된장찌개 하나요 -> 과금, 여기요 된장찌개 -> 과금 .. 마치 이런형태 아니야? 라는 의문이 생긴다)

하지만 AI 모델은 입력과 출력이 서로 다른 연산을 소비하는 구조다.

단계연산 방식비용 성격
입력 처리 전체 텍스트를 한꺼번에 병렬 처리 GPU 메모리 점유
출력 생성 토큰 한 개씩 순차 생성 GPU 연산 반복 (매 토큰마다)

출력이 입력보다 5배 비싼 이유가 여기 있다. 단어 하나를 생성할 때마다 GPU가 전체 컨텍스트를 다시 참조하면서 계산한다. 단순히 결과를 “돌려주는” 게 아니라 매 토큰마다 막대한 연산이 일어난다.

만약 입력을 무료로 하고 출력만 과금하면 이런 악용이 생긴다.

“이 100만 토큰짜리 문서를 한 줄로 요약해줘” → 입력 처리에 엄청난 GPU 소모 → 출력은 딱 한 줄 → 거의 공짜
💡 가장 가까운 현실 비유 — 택시 요금:
승차 기본료(입력) + 주행 거리 요금(출력).
“목적지까지 어차피 달려야 하는데 기본료가 이중과세 아니냐”고 할 수 있지만, 승차 자체로도 차와 기사가 이미 점유되는 것처럼, 입력 처리만으로도 GPU는 이미 소비된다.

결국 토큰 = 돈이라는 관점에서 보면, 입력과 출력은 각각 다른 서비스에 대한 대가를 치르는 것이지 같은 것에 두 번 청구하는 이중과금이 아니다. 다만 사용자 입장에서 체감이 복잡한 건 사실이고, 그래서 Pro·Max 구독제가 이 복잡함을 월정액으로 단순화해주는 역할을 한다.

그런데 출력량을 고객이 통제할 수 없다면?

여기서 한 발 더 나아가면 더 근본적인 의문이 생긴다. 입력은 고객이 직접 작성하니 소비량에 대한 책임이 분명하다. 하지만 출력은 Claude가 스스로 결정해서 생성한다. 고객은 결과가 나올 때까지 그 양에 간섭할 수 없는데, 무조건 과금을 받아야 하는 구조가 과연 합리적인가?

특히 Claude Code 에이전트 모드에서는 이 문제가 더 두드러진다. “이 함수 리팩토링해줘” 한 마디에 Claude가 자율적으로 결정한다.

파일 10개 읽기 → 입력 토큰 소비 분석 설명 장황하게 → 출력 토큰 소비 관련 파일 추가 확인 → 또 입력 소비 코드 작성 → 출력 소비 결과 요약 설명 → 또 출력 소비

고객은 코드 결과물 하나를 원했을 뿐인데, Claude가 중간 과정을 얼마나 거칠지는 Claude가 결정한다. 그 모든 과정이 과금된다.

거래 유형출력량에 대한 고객 개입
택시 (미터기)경로 이의제기 가능, 실시간 확인
변호사 시간제중간에 “그만” 지시 가능
AI 에이전트결과 나올 때까지 사실상 불투명
⚠️ 출력 과금은 GPU 자원 소비 관점에서는 이해되지만, 에이전트 AI 시대에 고객이 출력량을 통제할 수 없다는 점에서 완전히 합리적이라 보기는 어렵다.

그래서 구독제가 현실적인 답이다

이 구조적 불합리함에 대한 시장의 답이 바로 Pro·Max 구독제다. 출력이 얼마나 나올지 모르니 월정액으로 상한선을 정해버리는 것이다. 종량제는 AI가 장황하게 출력할수록 고객이 손해지만, 구독제는 AI가 아무리 많이 생성해도 월정액 이상 나오지 않으니 출력 통제권 부재의 리스크를 Anthropic이 흡수하는 구조가 된다.

💡 향후 전망: 업계도 이 문제를 인식하고 있다. 현재의 토큰 기반 과금에서 결과물 기반 과금(per-task pricing)으로 진화할 가능성이 높다. “파일 하나 리팩토링 = 얼마” 식의 과금이 되면 비로소 고객이 납득할 수 있는 구조가 완성된다.

Claude 모델별 토큰 단가 비교

현재(2026년 기준) 주요 모델의 API 요금은 다음과 같다.

모델입력 (per 1M 토큰)출력 (per 1M 토큰)용도
Haiku 4.5 $1.00$5.00 단순 분류, 라우팅
Sonnet 4.6 $3.00$15.00 대부분의 코딩 작업 ← 이걸 쓰면 된다
Opus 4.6 $5.00$25.00 복잡한 아키텍처, 고난도 추론
Opus 4.7 $5.00$25.00 최신 플래그십
💡 핵심 포인트: Sonnet 대비 Opus는 토큰당 단가가 약 1.67배 비싸다. 같은 작업에 소비되는 토큰 수는 거의 동일하므로, 비용 차이 = 단가 차이 그 자체다.

Claude Code /model 메뉴, 세 가지 옵션의 차이

Claude Code에서 /model을 입력하면 Sonnet 관련 옵션이 세 개 나온다. 처음에는 왜 같은 모델이 여러 개인지 헷갈린다.

메뉴 항목실제 모델컨텍스트 창과금 방식
① Default (recommended) ✓ Sonnet 4.6 200K 토큰 구독 포함
② Sonnet Sonnet 4.6 200K 토큰 구독 포함
③ Sonnet (1M context) Sonnet 4.6 1,000,000 토큰 Usage Credits 별도 차감

① Default vs ② Sonnet — 사실상 동일

둘 다 Sonnet 4.6, 200K 컨텍스트, 구독 요금제 안에서 사용된다. 차이는 ① Default는 Claude Code 앱 업데이트 시 자동으로 최신 권장 모델을 따라가고, ② Sonnet은 API 별칭 sonnet이 가리키는 모델에 고정된다는 점이다. 현재는 둘 다 Sonnet 4.6을 가리키므로 실질적 차이 없음. 그냥 ① Default로 쓰면 된다.

③ Sonnet (1M context) — 별도 과금 주의

1M(백만) 토큰 컨텍스트 창을 제공하지만, Pro·Max 플랜 포함 모든 구독 플랜에서 Usage Credits를 별도로 소비한다. $3/$15 per MTok 기준으로 직접 차감된다. 무심코 선택하면 모르는 사이에 과금이 쌓인다.

⚠️ Opus는 Max/Team/Enterprise 플랜에서 1M 컨텍스트가 구독에 자동 포함되지만, Sonnet 1M은 어떤 플랜에서도 자동 포함이 아니다.

컨텍스트 창(Context Window)이란

Claude가 한 번에 “기억”할 수 있는 텍스트의 총량이다. 대화 내용, 열어본 파일, 코드, 도구 호출 결과가 모두 여기에 쌓인다.

컨텍스트 크기체감 용량해당 모델
200K 토큰 JS 파일(300줄) 기준 약 25~30개 Default Sonnet
1M 토큰 위의 5배 — 대형 레포 전체 Sonnet 1M / Opus (자동)

세션이 길어지면 컨텍스트가 꽉 차고, Claude Code는 자동으로 /compact를 실행한다. 이때 이전 내용이 요약본으로 압축되면서 세부 정보가 사라진다. Claude가 “아까 봤던 파일”을 다시 읽는 이유가 바로 이것이다.


토큰 절약 노하우 5가지

① 작업 단위로 세션을 나눠라

가장 효과적인 방법이다. 한 작업이 끝나면 /clear 또는 새 창을 열어 시작한다. 누적된 컨텍스트 없이 Claude가 현재 작업에만 집중하므로 토큰 낭비가 없다.

작업 A 완료 ↓ /clear 또는 새 창 오픈 ↓ 작업 B 시작 ← 깨끗한 컨텍스트로 출발
예외: 이전 작업 결과가 다음 작업의 맥락으로 필요한 경우는 이어가는 게 낫다. “secretary.js 분리 완료 → 연관 CSS 바로 정리”처럼 연속성이 있을 때.

② /compact 신호를 모니터링하라

Claude가 자동으로 /compact를 실행하거나, 같은 파일을 반복해서 읽기 시작하면 컨텍스트가 포화 상태라는 신호다. 이때 1M 컨텍스트로 바꾸는 것보다 /clear 후 새 세션이 더 경제적이다.

③ 불필요한 파일을 컨텍스트에 올리지 마라

“일단 전부 읽어봐” 식의 요청은 토큰 낭비다. 관련 파일만 지정해서 요청하는 습관이 중요하다. 큰 파일이라면 필요한 함수나 섹션만 잘라서 전달하는 것도 방법이다.

④ 모델을 작업 난이도에 맞게 선택하라

작업 유형권장 모델
단순 버그 수정, 파일 하나 리팩토링Default (Sonnet)
여러 파일 동시 수정Default (Sonnet)
복잡한 아키텍처 설계, 고난도 추론Opus
레포 전체를 한 세션에 올려야 할 때Sonnet 1M (유료)

⑤ CLAUDE.md로 반복 컨텍스트를 줄여라

프로젝트 루트에 CLAUDE.md 파일을 만들어두면 Claude Code가 세션 시작 시 자동으로 읽는다. “이 프로젝트는 Node.js/Express/SQLite 구조이고, 라우터는 routes/ 폴더에 있다” 같은 반복 설명을 매번 입력하지 않아도 된다.


플랜별 토큰 소비 방식 요약

모델 선택Pro 플랜Max 플랜API 종량제
Default / Sonnet 구독 내 소비 구독 내 소비 $3/$15 per MTok
Sonnet (1M context) Credits 차감 Credits 차감 $3/$15 per MTok
Opus Credits 차감 구독 내 소비 $5/$25 per MTok

결론 — 실무 판단 흐름

새 작업 시작 ↓ Default (Sonnet) 으로 시작 ↓ /compact 반복되거나 “아까 봤던 파일”을 다시 읽기 시작? ↓ YES → /clear 후 새 세션 (무료) 그래도 안 되면 → Sonnet 1M (유료, Credits 차감) NO → 그냥 계속 작업
💡 요약: 1M 컨텍스트는 거의 쓸 일이 없다. 세션을 작업 단위로 나누는 습관이 비용도 아끼고 Claude의 응답 품질도 높이는 가장 확실한 방법이다.

댓글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 기록은 여기까지지만,
생각은 아직 이동 중이다