같은 작업인데 어떤 날은 한도가 반나절 만에 사라집니다. 8월 14일 클로드 공식 블로그가 그 원리를 처음으로 숫자까지 공개했습니다. 원문 전문을 직접 읽고 한국 사용자 기준으로 다시 정리했습니다.
원리는 한 줄입니다. 매 턴마다 대화 전체가 서버로 다시 들어갑니다. 아침에 읽힌 파일 10개가 오후 질문에도 매번 같이 갑니다. 그래서 아끼는 요령은 토큰을 덜 쓰는 게 아니라 안 쓸 토큰을 대화에 안 남기는 것입니다.
유료 API만의 얘기가 아닙니다. 구독 요금제도 같은 요청이 그대로 한도를 깎습니다. 가격표가 안 보일 뿐 계산식은 동일합니다.
모델이 읽는 것(입력)보다 쓰는 것(출력)이 비쌉니다. 출력의 큰 부분이 "생각" 토큰이라 사고 수준(effort)을 낮추면 출력이 줄어듭니다.
직전 요청과 똑같이 시작하는 부분은 서버가 저장해뒀다가 정가의 10분의 1로 다시 읽습니다. 클로드 코드가 자동으로 관리하니 켤 건 없고 깨뜨리지만 않으면 됩니다.
읽은 파일과 명령 출력은 세션이 끝날 때까지 모든 턴에 따라갑니다. 캐시 덕에 싸지긴 해도 공짜가 아니고 모델의 주의력도 잡아먹습니다.
| 행동 | 무슨 일이 나나 |
|---|---|
대화 중간에 /model 변경 |
모델마다 캐시가 따로라서 대화 전체를 정가로 다시 읽습니다 |
대화 중간에 /effort 변경 |
같은 원리입니다. 중간에 바꾸면 확인창이 뜨는 이유입니다 |
| 대화 중간에 패스트 모드 켜기 | 다시 읽는 비용이 패스트 모드 가격으로 나갑니다. 켤 거면 시작할 때 |
/compact |
대화가 새로 쓰여서 캐시가 무효가 됩니다. 대신 쓸 타이밍이 따로 있습니다 (아래 습관 6) |
| 1시간 넘게 자리 비우기 | 구독 기준 캐시가 1시간이면 만료됩니다. 복귀 첫 턴에 대화 전체를 정가로 다시 읽습니다 |
모델이나 사고 수준을 바꾸지 말라는 뜻이 아닙니다. 싼 순간이 따로
있다는 뜻입니다 — 세션 시작 직후나 /clear 직후가
그때입니다.
이전 작업의 파일과 출력이 다음 작업까지 따라오는 걸 끊습니다.
40번째 턴은 앞의 39턴을 전부 다시 읽는다는 걸 기억하세요. 긴
세션 하나가 짧은 세션 몇 개보다 비쌉니다. 나중에 돌아올 세션이면
/clear 전에 /rename으로 이름을
붙여두세요.
새 세션에서 /model과 /effort를 한 번씩
열어 지금 값이 뭔지 확인하세요. 둘 다 지난번 선택을 기억하고
있어서 모르는 새 비싼 조합으로 돌 수 있습니다. 단순 작업만 할
세션이면 MAX_THINKING_TOKENS=0 claude로 생각을 끄는
방법도 있습니다 (Fable 5 제외).
"utils.test.ts 고쳐줘"라고 치면 클로드가 파일을 찾고 읽는 턴이
추가됩니다. @utils.test.ts로 멘션하면 메시지에
파일이 바로 붙어서 그 턴이 사라집니다. 단 한 대화에 한 번이면
됩니다 — 다시 멘션하면 사본이 하나 더 붙습니다.
테스트 400줄 출력은 남은 모든 턴에 따라갑니다. 매일 쓰는 명령
두세 개를 조용한 옵션 포함으로 CLAUDE.md에 적어두세요. 예를 들면
"단일 테스트는
npx vitest run 파일 --reporter=dot으로 실행" 같은
식입니다. 로그 뒤지기처럼 출력만 큰 일은 서브에이전트에 맡기면
결과 요약만 돌아옵니다.
타이핑을 시작하기 전에 뭐가 이미 실려 있는지 보입니다.
CLAUDE.md가 무거우면 줄이고 작업별 지침은 스킬로 옮기세요. 이번
세션에 안 쓸 MCP 서버는 /mcp에서 꺼두면 그만큼
가벼워집니다.
요약 자체도 대화를 읽어야 해서 캐시가 살아 있는 동안이 쌉니다.
캐시는 1시간이면 만료되니 긴 휴식 전이 적기입니다. 마지막 몇
턴만 잘못 갔다면 /compact 대신
/rewind가 낫습니다 — 끝만 잘라내서 앞의 캐시가
그대로 삽니다.
같은 클로드라도 채팅 앱과 코드 화면은 아끼는 방법이 다릅니다. 지금 데스크탑 앱을 쓰신다면 창 하나에 세 가지가 다 들어 있습니다 — 위쪽 탭에 Chat, Cowork, Code가 나란히 있습니다.
| 쓰는 곳 | 아끼는 핵심 | 위 습관 적용 |
|---|---|---|
| Chat 탭 (일반 대화) | 대화를 짧게 끊고 질문을 묶기 | 슬래시 명령이 없어 습관 1·6은 "새 대화 열기"로 대체 |
| Cowork 탭 (일 맡기기) | 작업 하나에 세션 하나 | 에이전트라 소비가 큼. 무거운 일 위주로 |
| Code 탭 · 터미널 | 슬래시 명령 6개 전부 사용 | 습관 1~6 그대로 적용 |
채팅 화면에는 /clear 같은 명령이 없습니다. 대신 소비를
결정하는 요소가 정해져 있습니다. 메시지 길이, 첨부 파일 크기, 지금
대화가 얼마나 길어졌는지, 리서치나 웹 검색 같은 도구를 썼는지, 어떤
모델과 어느 사고 수준으로 돌리는지입니다.
이어 쓰는 대화는 앞의 내용을 계속 끌고 갑니다. 코드 화면의
/clear에 해당하는 행동이 채팅에서는 새 대화
버튼입니다.
세 번 나눠 물으면 앞선 대화가 세 번 다 따라갑니다. 한 번에 구체적으로 적는 쪽이 왕복도 줄고 결과도 낫습니다.
프로젝트에 올린 문서는 캐시로 잡혀서 다음부터는 새로 들어간 부분만 소비에 들어갑니다. 같은 파일을 매번 첨부하는 습관이 제일 비쌉니다.
모델과 사고 수준이 그대로 소비에 곱해집니다. 리서치나 웹 검색도 켜는 순간 소비가 늘어납니다. 요약이나 번역 같은 일은 가볍게 두세요.
유료 요금제는 설정의 사용량 화면에서 5시간 단위 소비와 주간 소비를 확인할 수 있습니다. 어떤 날 한도가 빨리 닳았는지 여기서 역추적하면 습관이 잡힙니다.
Code 탭은 터미널과 같은 엔진이라 위의 습관 6개가 전부 그대로
작동합니다. 명령은 프롬프트 창에 /를 입력하면 목록이
뜹니다. 화면에서만 되는 것들은 이렇습니다.
모델 선택기 옆의 동그란 표시를 누르면 지금 세션이 컨텍스트를
얼마나 먹었는지, 이번 기간 요금제 사용량은 어디까지 왔는지 같이
보입니다. 습관 5의 /context를 클릭으로 대신하는
셈입니다.
맥은 Cmd + ;, 윈도우는 Ctrl + ;를 누르면
옆에 작은 대화가 열립니다. 지금 세션 내용을 읽지만 오간 내용이 본
대화에는 안 쌓입니다. "이 코드 왜 이래?" 같은 질문을 여기서 하면
본 세션이 안 무거워집니다.
전송 버튼 옆 드롭다운에서 모델을, Cmd + Shift + E로
사고 수준을 바꿉니다. 습관 2 그대로 시작할 때 정하세요. 대화
중간에 바꾸면 캐시가 날아가는 건 화면에서도 똑같습니다.
Ctrl + `로 앱 안에 터미널이 열립니다. 클로드가 보는
폴더와 같은 곳이라 테스트나 빌드를 직접 돌릴 수 있습니다. 출력이
긴 명령을 여기서 돌리면 그 출력이 대화에 안 쌓입니다.
/desktop을 입력하면 그 세션이 그대로
데스크탑 앱으로 넘어갑니다. 설정과 CLAUDE.md는 양쪽이 같은 파일을 보기
때문에 따로 옮길 게 없습니다.
/model → /effort →
/context
순서로 한 번씩. 내 기본값이 뭔지 아는 것만으로 절반입니다.
오늘 하루 돌린 명령 중 출력이 길었던 것부터요. 한 번 적으면 이후 모든 세션에서 턴과 출력이 줄어듭니다.
작업 바뀌면 /clear, 자리 뜨기 전
/compact. 나머지는 이 둘이 몸에 붙은 다음에 얹으면
됩니다.
이 주제로 해외 X에서 반응이 큰 글 66개를 걷어서 하나씩 판정했습니다. 결론부터 — 통과는 하나뿐입니다.
CLAUDE.md에 "꼭 필요한 말만 짧게 답하라"는 지시를 넣어두는 방법입니다. 출력 토큰이 입력보다 약 5배 비싸서 응답 길이를 줄이면 그대로 절약됩니다. 저희가 실제로 몇 주째 쓰는 방식이라 통과입니다 — 답이 퉁명스러워지는 대신 같은 작업의 출력이 눈에 띄게 줄어듭니다.
무료 프록시·라우터로 타사 모델을 클로드 코드에 물리는 우회법(보안과 약관 리스크를 절약이라고 부를 수 없어서), "파일 6개로 84% 절감" 같은 출처 없는 수치, 요금제를 내렸다 올렸다 하며 한도를 리셋하는 꼼수까지. 반응은 컸지만 저희 기준으로는 전부 탈락입니다.
위 습관들을 외우는 대신 클로드가 낭비 순간을 감지해서 먼저 말을 걸게 할 수 있습니다. 자리 비웠다 돌아오면 "새로 여는 게 이득"이라고, 출력이 수백 줄 쏟아지면 "조용한 옵션 쓰라"고 응답 첫 줄에 제안이 뜹니다.
구조는 두 개입니다. 낭비 신호를 재는 파일 하나와 재면 말하라는 규칙 한 줄. 아래 프롬프트를 통째로 붙여넣으면 클로드가 직접 설치합니다.
앱 위쪽의 Chat · Cowork · Code 중 Code를 누릅니다. 처음이면 작업할 폴더를 하나 고르라고 합니다. 아무 폴더나 괜찮습니다 — 설치는 폴더가 아니라 내 계정 설정에 들어갑니다.
프롬프트 창에 그대로 붙이고 보내면 됩니다. 클로드가 파일을 만들고 설정을 고치겠다고 물어보면 내용을 한 번 보고 승인하세요.
설정을 새로 읽어야 해서 사이드바에서 새 세션을 하나 열어주세요. 여기까지 하면 끝입니다.
터미널에서 claude로 들어간 다음 같은 프롬프트를
붙여넣으면 됩니다. 설치가 끝나면 한 번 나갔다 다시 들어오세요.
데스크탑 앱과 같은 설정 파일을 쓰기 때문에 둘 중 아무 데서나 한 번만
설치하면 됩니다.
클로드 토큰코치를 설치해줘. 구성은 3개야.
1) ~/.claude/hooks/token-coach.py 파일 생성 — 파이썬 스크립트. 동작:
- 인자로 이벤트 이름(UserPromptSubmit 또는 PostToolUse)을 받고 stdin으로 훅 JSON을 읽는다
- UserPromptSubmit일 때: transcript_path 파일의 크기와 수정 시각을 잰다. 직전 수정에서 3600초 넘게 지났고 크기가 200KB 이상이면 "캐시가 만료돼 이번 턴은 대화 전체를 정가로 다시 읽는다, 새 주제면 /clear가 이득"이라는 안내를, 크기가 4MB를 넘으면 "매 턴 대화 전체가 따라간다, /compact 또는 /clear 제안"을 만든다
- PostToolUse일 때: tool_response의 stdout+stderr가 120줄 이상이고 6천~3만 자 사이면 "이 출력이 남은 모든 턴에 따라간다, quiet 옵션이나 서브에이전트 제안"을 만든다 (3만 자 이상은 클로드 코드가 알아서 파일로 빼니 제외)
- 안내가 있으면 {"suppressOutput": true, "hookSpecificOutput": {"hookEventName": 이벤트명, "additionalContext": "[토큰코치] " + 안내}} JSON을 stdout으로 출력한다
- 같은 신호는 세션당 1번만: ~/.claude/hooks/token-coach-state/<session_id>.json에 신호 키를 기록해 중복을 막고 3일 지난 상태 파일은 지운다
- 어떤 예외가 나도 조용히 exit 0 (세션을 깨면 안 됨)
2) ~/.claude/settings.json의 hooks에 두 항목 추가 (기존 훅 유지, 병합):
- UserPromptSubmit: command "cd ~ && python3 ~/.claude/hooks/token-coach.py UserPromptSubmit", timeout 10
- PostToolUse에 matcher "Bash": command "cd ~ && python3 ~/.claude/hooks/token-coach.py PostToolUse", timeout 10
3) ~/.claude/CLAUDE.md에 규칙 추가:
"[토큰코치] 컨텍스트가 주입되면 그 턴 응답 맨 앞에 절약 제안을 한 줄로 전한다. 형식: 💡 지금 [행동] 하면 아낍니다 — [이유 반 줄]. 신호당 1회만, 사용자가 무시하면 반복하지 않는다."
설치 후 가짜 페이로드로 스크립트를 파이프 테스트해서 JSON이 나오는지 확인해줘.
네. 가격표가 안 보일 뿐 같은 요청이 그대로 한도를 깎습니다. 원문이 이 점을 명시했습니다. 한도가 빨리 닳는 날은 대부분 위 표의 캐시 깨는 행동이 겹친 날입니다.
출력은 많은데 결과만 필요한 일입니다. 로그 뒤지기가 전형입니다. 별도 대화방에서 일하고 답만 돌아오니 내 대화가 안 무거워집니다. 작은 일에는 오히려 손해입니다 — 내 대화 내용을 모르는 채 시작해서 다시 읽는 비용이 들기 때문입니다.
/clear는 백지에서 새 작업을 시작할 때,
/compact는 같은 작업을 이어가는데 앞부분이 더는 필요
없을 때입니다. 마지막 몇 턴만 지우고 싶으면 /rewind가
제일 쌉니다.
원문도 총액 수치는 제시하지 않습니다. 확실한 건 비율입니다 — 캐시를 깨면 그 턴의 입력이 10배가 되고 출력은 입력의 약 5배라는 것. 낭비 구간을 없애는 만큼 그대로 돌아옵니다.