Claude Code 토큰 절약 — 직접 재본 결과
목차
Claude Code 를 쓰다 보면 토큰이 생각보다 빨리 녹는다. “CLAUDE.md 짧게 써라”, “/clear 자주 해라” 같은 팁은 많다. 진짜 얼마나 차이 나는지 궁금해서 직접 재봤다.
토큰이 나가는 구조
Claude Code 는 요청을 보낼 때마다 아래를 통째로 다시 보낸다.
- 시스템 프롬프트 + 도구 설명 (기본으로 깔리는 것)
- CLAUDE.md (기본으로 깔리는 것)
- 지금까지의 대화, 읽은 파일, 명령 결과 (쌓이는 것)
작업 하나에 요청이 보통 5~10번 나간다. 그래서 깔리는 것과 쌓이는 것을 줄이는게 토큰 절약의 전부다.
반복되는 부분은 캐시가 돼서 1/10 값이긴 하다. 그래도 공짜는 아니다. 컨텍스트가 차면 자동 요약(compact)이 돌면서 앞 내용이 뭉개진다.
테스트 환경
- 작은 파이썬 프로젝트. 파일 20개, 일부러 심은 버그 1개, 3000줄짜리 로그(270KB)
claude -p "..." --output-format json으로 돌리면 토큰이랑 비용이 JSON 으로 나온다. 그걸로 쟀다- 모델은 따로 적지 않으면 Sonnet 5
- 버그 수정 같은건 3번씩 돌려서 중간값을 썼다. 나머지는 1번. 오차는 좀 있다
1. 아무것도 안 해도 2.8만 토큰
“hi” 한마디만 보냈다.
| 조건 | 입력 토큰 |
|---|---|
| 기본 | 27,900 |
도구 없음 (--tools "") | 9,100 |
읽기 도구만 (--tools "Read,Grep,Glob") | 12,100 |
도구 설명만 1.9만 토큰이다. 인사 한마디에도 이게 깔린다.
대화창에서 /context 를 치면 뭐가 얼마나 차지하는지 바로 보인다. 제일 먼저 해볼 명령어다.
| |
스크립트로 읽기만 시키는 작업(요약, 리뷰 같은거)이면 --tools 로 필요한 도구만 주면 된다.
2. CLAUDE.md 는 짧게
같은 버그 수정을 CLAUDE.md 두 개로 돌렸다.
- 짧은 버전: 4줄. 테스트 명령어랑 규칙 두 개
- 긴 버전: 274줄. 코딩 규칙, 리뷰 규칙, 배포 절차 같은걸 다 넣은 “핸드북”
| 짧은 CLAUDE.md | 긴 CLAUDE.md | |
|---|---|---|
| 요청당 기본 토큰 | 28,200 | 46,700 |
| 버그 수정 비용 (중간값) | $0.117 | $0.218 |
| 결과 | 성공 | 성공 |
비용이 1.9배. 결과는 똑같다. 긴 CLAUDE.md 가 요청마다 1.85만 토큰씩 붙어서 나갔다.
넣을 것
- Claude 가 추측 못 하는 명령어 (테스트, 빌드, 배포)
- 이 프로젝트만의 규칙 (다른 데랑 다른 것만)
- 건드리면 안 되는 곳
뺄 것
- 코드 보면 알 수 있는 것
- 일반적인 코딩 원칙 (“깔끔하게 짜라” 류)
- 파일별 설명
가끔만 필요한 긴 절차는 스킬(.claude/skills/이름/SKILL.md)로 빼면 된다.
위 /context 결과처럼 스킬은 설명 한두 줄만 올라가 있다가 필요할 때 본문을 읽는다. 스킬 12개가 다 합쳐 2.1k 였다.
3. 로그는 걸러서 넘긴다
“이 로그에서 에러랑 원인 알려줘” 를 세 가지 방법으로 시켰다.
| 방법 | 입력 토큰 | 비용 |
|---|---|---|
cat app.log | claude -p "..." 통째로 | 162,000 | $0.573 |
grep ERROR app.log | claude -p "..." | 30,500 | $0.047 |
| 파일 경로만 주고 알아서 찾게 | 90,600 | $0.064 |
답은 세 개 다 똑같았다. “결제 게이트웨이가 2초 안에 응답 안 하고, 재시도가 0번이라 바로 실패”.
통째로 넘기면 12배 비싸다. 파일 경로만 줘도 Claude 가 알아서 grep 해서 꽤 싸다. 제일 나쁜건 로그나 파일 내용을 대화창에 복붙하는거다. 첫 번째 방법이랑 같은 거다.
4. 큰 걸 읽은 뒤엔 /clear
두 가지 경우를 재봤다.
작은 질문 네 개를 한 세션에서 계속
요청당 컨텍스트가 3.0만 → 3.2만. 거의 안 늘었다. 비용도 새 세션 네 번이랑 거의 같았다($0.102 vs $0.106). 캐시 덕분인듯
로그 전체를 읽은 다음, 같은 세션에서 README 질문 하나
| 요청당 컨텍스트 | |
|---|---|
| 같은 세션에서 이어서 | 173,800 |
| 새 세션에서 | 30,200 |
README 한 줄 물어보는데 로그 17만 토큰을 계속 끌고 다닌다.. 5.8배다.
작은 일은 이어서 해도 괜찮다. 큰 파일을 읽었거나 주제가 바뀌면 /clear 하자.
캐시는 시간이 지나면 풀린다. 그때는 17만 토큰을 제값 주고 다시 보낸다.
지금까지 내용을 이어가야 하면 /compact 에 아래처럼 지시를 붙이면 된다.
| |
5. 모델과 effort
같은 버그 수정을 모델별로 3번씩. 전부 성공했다.
| 모델 | 비용 | 시간 | 요청 수 |
|---|---|---|---|
| Haiku 4.5 | $0.054 | 20.5초 | 9 |
| Sonnet 5 | $0.117 | 21.3초 | 9 |
| Opus 5.5 low | $0.096 | 13.8초 | 6 |
| Opus 5.5 medium (기본) | $0.168 | 9.6초 | 4 |
| Opus 5.5 high | $0.169 | 9.3초 | 4 |
| Opus 5.5 max | $0.241 | 58.1초 | 12 |
- 이 정도 버그면 Haiku 로 충분했다. 제일 싸다
- Opus 는 비싸도 헤매지 않는다. 요청 4번에 끝났다
- max 는 느리기만 했다. 6배 오래 걸리고 결과는 같다. 쉬운 일에 max 는 낭비다
Opus low 가 medium 보다 싸게 나온건 캐시 저장 비용 차이가 커서 그렇다. effort 자체 차이라기보다는 운인듯
바꾸는 법
| |
평소엔 Sonnet 이나 Opus medium, 단순 반복 작업은 Haiku, 진짜 막힐 때만 올리는게 무난할듯
6. MCP 서버는 도구 검색을 켜둔다
도구 40개짜리 가짜 MCP 서버를 붙여봤다.
| 조건 | “hi” 입력 토큰 |
|---|---|
| MCP 없음 | 27,900 |
| MCP 40개, 도구 검색 켬 (기본) | 28,500 |
| MCP 40개, 도구 검색 끔 | 52,800 |
요즘 버전은 MCP 도구 설명을 미리 안 올리고 필요할 때 찾아 쓴다. 그래서 +600 토큰밖에 안 늘었다.
ENABLE_TOOL_SEARCH=false 로 끄면 +2.5만 토큰이 매 요청에 붙는다.
- Claude Code 를 최신으로 유지한다
- 도구 검색을 끄는 설정이 있으면 지운다
- 안 쓰는 서버는
/mcp disable 서버이름 gh,aws처럼 CLI 가 있는건 MCP 대신 CLI 를 쓰게 하는게 낫다
7. 서브에이전트는 돈 아끼는 용도가 아니다
“모듈 파일 전부 열어보고 요약해줘” 를 직접 시킨 것과 서브에이전트에게 맡긴 것.
| 직접 | 서브에이전트 | |
|---|---|---|
| 끝났을 때 메인 컨텍스트 | 47,200 | 31,800 |
| 총비용 | $0.158 | $0.197 |
메인 대화는 깨끗해졌다. 근데 총비용은 오히려 늘었다. 서브에이전트도 따로 시스템 프롬프트를 깔고 시작해서 그런듯
긴 작업 중간에 “이거 어디서 쓰는지 찾아봐” 같은 탐색을 맡겨서 메인 컨텍스트를 지키는 용도로 쓰자.
이름만 보면 다 아껴줄 것 같은데 아니다
8. 하네스 설정
측정은 안 했지만 해두면 편한 것들.
테스트 명령어를 하나로 만들어둔다
이번 테스트도 ./test.sh 하나만 만들고 CLAUDE.md 에 적어뒀다.
Claude 가 고치고 → 돌려보고 → 다시 고치는걸 알아서 한다. 검증 방법이 있으면 덜 헤매는듯
자주 쓰는 명령은 허용 목록에
.claude/settings.json
| |
매번 허락 버튼 누를 필요가 없다.
이번 테스트도 --allowedTools "Bash(./test.sh)" 로 테스트 명령만 열어주고 돌렸다.
--dangerously-skip-permissions 로 다 여는건 편하지만 위험하다.
포맷터는 hook 으로
파일 수정할 때마다 포맷터를 자동으로 돌린다. Claude 한테 “포맷 맞춰” 라고 시킬 토큰이 안 든다.
| |
큰 작업은 plan 모드부터
Shift+Tab 을 누르다 보면 plan 모드가 나온다. 코드 건드리기 전에 계획만 먼저 받는다.
다 짜고 나서 방향이 틀린걸 알면 그만큼 토큰이 날아간다.
잘못 가면 바로 멈춘다
Esc한 번: 지금 하던거 멈춤Esc두 번: 이전 시점으로 되돌리기
엉뚱한 파일을 열기 시작하면 바로 끊는게 제일 싸다.
쓴 돈 확인
/usage: 지금 세션 비용/context: 컨텍스트 뭐가 차지하는지- 스크립트로 돌릴 땐
--max-budget-usd 1로 상한을 걸 수 있다
정리
| 할 것 | 테스트 결과 |
|---|---|
| CLAUDE.md 짧게, 긴 절차는 스킬로 | 비용 1.9배 차이 |
| 로그·파일 통째로 넘기지 말고 경로나 grep 결과만 | 12배 차이 |
큰 파일 읽은 뒤 주제 바뀌면 /clear | 컨텍스트 5.8배 차이 |
| 쉬운 일은 Haiku, max 는 아껴서 | Haiku 가 Opus medium 의 1/3 |
| MCP 도구 검색 켜두기 | 끄면 요청당 +2.5만 |
| 서브에이전트는 메인 컨텍스트 지키는 용도 | 총비용은 오히려 +25% |
/context 부터 한번 쳐보기 | 뭐가 새는지 바로 보인다 |
반대로 “대충 말해도 되냐” 는 작은 프로젝트에선 차이가 없었다. 깨진 테스트가 하나뿐이라 모호하게 시켜도 바로 찾았다($0.111 vs $0.115). 큰 레포에선 다를꺼 같다. 파일 경로 하나 적어줘서 손해 볼 일은 없다.
제일 효과 컸던건 CLAUDE.md 다이어트랑 로그 복붙 안 하기. 이 블로그 CLAUDE.md 부터 다시 봐야 할듯