사실 회사에서는 크게 상관안하고 있지만 집에서 사용하는 경우 토큰 사용한도 때문에 자꾸 뭔가 중단되는 경우가 많습니다. 그래서 “토큰 소비 및 비용 최적화”에 대해서 적어 보겠습니다. 저는 집에서 Claude Code와 Gemini Cli를 사용하고 있어서 이 두가지에 대해서만 작성을 해보려고 합니다.
목차
서론 및 터미널 LLM 비용 구조의 정량적 이해
터미널 기반의 인공지능 에이전트인 Claude Code와 Gemini Cli는 터미널 작업의 맥락을 분석하고 파일 제어 및 쉘 명령어 실행을 자동화하여 생산성을 비약적으로 향상시킵니다. 그러나 개발 세션이 길어지거나 대규모 코드베이스에 접근할수록 관리해야 하는 컨텍스트의 물리적 크기가 누적되어 엄청난 입력 토큰 비용이 매 턴마다 청구되는 패널티가 존재하죠.
대화가 장기화되면 사용자가 보내는 단순한 한 줄의 후속 질문조차도 전체 대화 이력, 적재된 소스 파일 내용, 시스템 프롬프트가 모두 결합되어 매번 모델로 재입력(Input)되는 누적 비용 구조를 따르기 때문이다. 실제 에이전트 가동 비용의 흐름을 추적한 데이터에 따르면, 누적 대화가 일정 임계치를 초과할 때 전체 소모 토큰 중 단 1.5%만이 신규 답변 생성에 할당되고 나머지 98.5%는 이전 기록을 재판독하는 데 낭비되는 전형적인 병목 현상이 발생하고.

이러한 불필요한 토큰 유출을 억제하고 가용한 가상 컨텍스트 윈도우의 효율성을 극대화하기 위해서는 세밀한 소프트웨어 엔지니어링 접근 방식과 각 CLI 도구의 캐싱 특성을 이해해야 한다. 비용 구조를 최적화하기 위해 터미널 에이전트 구동 과정에서 계산되는 총 토큰 소모량은 수학적으로 다음과 같이 규명됩니다.
$$T_{\text{total}} = S_{\text{prompt}} + F_{\text{context}} + \sum_{i=1}^{N} (P_i + A_i) + M_{\text{tool}}$$
여기서 $S_{\text{prompt}}$는 에이전트 구동에 필요한 정적 시스템 프롬프트 크기, $F_{\text{context}}$는 활성화되어 로드된 파일들의 토큰 합, $P_i$와 $A_i$는 각각 $i$번째 턴에서의 사용자 입력 프롬프트 및 에이전트 답변 토큰 크기이며, $M_{\text{tool}}$은 실행된 외부 도구 및 MCP 서버 연계 과정에서 발생하는 메타데이터 오버헤드입니다. 본 보고서는 이 방정식의 각 매개변수 값을 통제하여 소모 비용을 격감시킬 수 있는 10가지 핵심 기술을 제시합니다.
최적화 기술 통합 비교 분석
다음 표는 본 보고서에서 상세히 다루는 10가지 토큰 소비 및 비용 최적화 절감 기술을 실행 매개변수, 작동 기저 메커니즘, 그리고 획득 가능한 비용 감축 편익 관점에서 종합적으로 비교 분석한 데이터 테이블입니다.
| 최적화 기술 구분 | 대상 플랫폼 | 가용 명령어 및 구성 매개변수 | 핵심 작동 원리 및 감축 메커니즘 | 실무적 정량 기대 편익 |
| 1. 선제적 압축 및 요약 | Claude, Gemini | /compact, /compressmodel.compressionThreshold | 과거 미세 이력을 하나의 통합 요약 블록으로 치환하여 장기 대화 오버헤드 무력화. | 입력 토큰 소비 기울기를 최대 80% 이상 완화. |
| 2. 세션 리셋 및 강제 종료 | Claude, Gemini | /clear, /exit --deletemodel.maxSessionTurns | 메모리 버퍼를 물리적으로 영(0)으로 회귀시키고 임시 적재 파일 잔재 소멸. | 이전 세션 유령 컨텍스트의 전송 가능성 원천 차단. |
3. 명시적 @ 참조 주입 | Claude, Gemini | @filename.ext, @./directory/ | 에이전트의 자동 수색 범위 탐사(Grep) 동작을 차단하고 특정 파일만 주입. | 불필요한 도구 호출 메타데이터 및 미사용 파일 적재 방지. |
| 4. 지침서 계층 분산화 | Claude, Gemini | CLAUDE.md, GEMINI.md | 글로벌 지침 대신 하부 서브디렉토리 가이드를 배치하여 온디맨드 로딩 유도. | 매 회신마다 전송되는 프롬프트의 기본 고정 비용 격감. |
| 5. 외부 프록시 레이어 융합 | Claude Code | headroom wrap claude | 통신 계층에서 대용량 도구 출력 및 중복 서브 에이전트 응답을 기계적으로 압축. | 활성 데이터 오버헤드 최대 80% 무손실 축소. |
| 6. 프롬프트 캐싱 정렬 제어 | Claude Code | (자동 활성화) 1,024 토큰 최소 조건, 5분 TTL | 첫 입력 접두사 일치 상태를 유도하여 Anthropic KV 캐시 히트율 극대화. | 캐시 히트 시 해당 영역 입력 비용 90% 차감 적용. |
| 7. API 키 기반 캐싱 활성화 | Gemini CLI | (API Key / Vertex AI 인증)/stats | OAuth 로그인을 배제하고 정식 API 키를 활용하여 시스템 컨텍스트 캐싱 기동. | 동일 대용량 코드베이스 반복 쿼리 시 가동 비용 50~90% 절감. |
| 8. 초경량 구동 모드 튜닝 | Claude Code | --bare, -p, --print | 훅, 기술, MCP, 메모리 검색을 스킵하고 일회성 파이프라인 처리 유도. | 백그라운드 탐사 구동 토큰 완전 소멸 및 시동 시간 격감. |
| 9. 대화 분기 및 복원 포인트 | Gemini CLI | /resume save [point], /rewind | 대화 세션의 복원 지점을 설정하여 파일 수정본은 남기고 대화 이력만 롤백. | 오답 디버깅에 낭비된 고비용 실패 대화 이력을 완전히 지움. |
| 10. 엄격한 거부 규칙 설계 | Claude Code | permissions.deny--disallowedTools | 무분별한 Grep 도구 접근이나 비밀번호 소스 파일 수색을 플랫폼에서 원천 차단. | 탐색 오류로 인한 불필요한 파일 로드 및 토큰 소비 낭비 차단. |
10가지 토큰 소비 및 비용 최적화

제시해주신 LLM 에이전트(Claude Code, Gemini Cli 등)의 토큰 최적화 및 비용 절감 기술 10가지를 친근하고 전문적인 대화형(해요체/-습니다 혼용)으로 매끄럽게 다듬었습니다. 개발자 동료에게 유용한 노하우를 공유하는 느낌으로 읽어보실 수 있습니다.
1. 선제적 컨텍스트 압축 및 요약 제어
대화 세션이 길어지면 에이전트의 이전 답변과 쉘 실행 기록이 기하급수적으로 쌓입니다. 결국 다음 질문을 할 때마다 과거 기록이 전부 함께 전송되는 토큰 소비 비용 패널티를 안게 되죠. 에이전트가 맥락을 잃고 이상해질 때까지 기다리는 수동적인 태도 대신, 특정 작업 단위가 끝나는 즉시 선제적으로 압축을 해주는 것이 좋습니다.
예를 들어, Claude Code에서는 /compact 명령을 사용해 버퍼에 지저분하게 쌓인 대화 로그를 지우고 핵심 맥락만 밀도 높게 요약한 텍스트로 치환할 수 있습니다. Gemini Cli 역시 /compress 명령으로 대화 이력을 축약형 단일 메시지로 바꿀 수 있죠. 특히 Gemini Cli는 설정 파일(settings.json)의 model.compressionThreshold 옵션을 이용해 컨텍스트 소비량이 임계치(예: 가용 한계의 60% 수준인 0.6)를 넘기면 자동으로 압축이 구동되도록 제어할 수 있습니다. 이때 유실되면 안 되는 영구 고정 데이터는 미리 /memory add 명령으로 기록해 두면 GEMINI.md 같은 고정 메모리 영역으로 대피하여 세션이 압축되어도 안전하게 보존됩니다.
2. 세션 제어 및 강제 초기화
동일한 터미널 세션 안에서 이전 작업과 전혀 상관없는 새로운 개발 작업을 시작하는데도 기존 세션을 그대로 붙잡고 있는 것은 치명적인 토큰 낭비입니다. 이전 소스 정보와 디버깅 이력이 불필요한 메타 데이터가 되어 신규 작업을 오염시키고 비용만 높이기 때문입니다.
따라서 완전히 다른 모듈을 개발하거나 다른 파일을 편집할 때는 대화 히스토리 전체를 깨끗이 비워주는 /clear 명령어를 적극적으로 활용하셔야 합니다. 특히 Gemini Cli 환경에서 단발성 작업을 마쳤다면, 종료할 때 즉시 /exit --delete 매개변수를 적용해 보세요. 로컬 임시 폴더에 생성된 도구 실행 잔재와 디버깅 이력을 안전하게 파괴하여 잔여 데이터가 전송될 가능성을 원천 차단해 줍니다. 나아가 시스템 설정 내의 model.maxSessionTurns 값을 기본값인 무제한(-1)에서 100회 같은 정적인 임계값으로 제한해 두면, 세션이 무한정 길어져 비용이 폭증하는 현상을 깔끔하게 막을 수 있습니다.
3. 명시적 @ 참조 주입
에이전트에게 문제 해결을 맡기면서 명확한 파일 주소를 알려주지 않으면, 에이전트는 해당 경로의 모든 구조를 파악하기 위해 다량의 디렉토리 목록을 열람하고 정밀 텍스트 탐사(Grep) 같은 자동화 도구들을 반복해서 실행합니다. 이 과정에서 엄청난 토큰 소비가 되면서 컨텍스트가 순식간에 잠식되죠.
이 문제를 해결하는 가장 좋은 방법은 프롬프트를 보낼 때 기호 @를 파일명과 묶어서 경로(예: @src/lib/auth.ts)를 명시적으로 지정해 주는 것입니다. 이렇게 하면 에이전트가 탐색 도구를 구동하지 않고 즉각 해당 소스 데이터만 추출해 분석하므로 컨텍스트 오염을 완벽하게 막을 수 있습니다. 단, 수십만 행에 이르는 큰 소스 전체를 강제로 주입하면 Gemini의 100만 가용 컨텍스트조차도 조기에 바닥날 수 있습니다. 만약 Gemini Cli가 소스 초과 경고를 보낸다면 즉시 모듈을 잘게 쪼개어 세부 소스만 타겟으로 지정해 주는 접근이 필요합니다.
4. 지침서 계층 분산화 및 마크다운 최적화
프로젝트의 개발 가이드라인과 규칙을 정의하는 CLAUDE.md나 GEMINI.md 파일은 매 세션마다 기본 고정 지출로 전송되는 정적 오버헤드를 발생시킵니다. 고정 파일 크기가 2,000토큰이라면, 가벼운 질문을 딱 두 번만 던져도 질문할 때마다 2,000토큰씩 반복해서 차감되는 구조이기 때문에 가용 윈도우를 크게 좀먹게 됩니다.
이 오버헤드를 제어하려면 글로벌 경로(~/.claude/CLAUDE.md)나 최상위 루트 경로 한 곳에 수만 줄짜리 거대한 지침을 몰아넣지 않아야 합니다. 대신 각 모듈이나 서브디렉토리 폴더 내부에 파편화된 로컬 지침 파일을 계층적으로 배치하는 것이 좋습니다. 에이전트는 특정 하위 폴더로 직접 이동할 때 비로소 해당 레벨의 하부 지침 파일을 스택 구조로 로드합니다. 덕분에 현재 작업과 관련 없는 다른 패키지의 지침은 활성 토큰 연산에서 자동으로 제외되어 가볍게 유지됩니다. 또한 가이드라인을 작성할 때는 “깨끗한 코드를 작성하라”처럼 모델이 이미 기본으로 알고 있는 뻔한 규칙은 전부 지우고, 오직 해당 레포지토리 환경에서만 요구되는 고유한 설계 규칙 위주로만 압축해서 작성하는 것이 현명합니다.
5. 외부 프록시 레이어 융합
에이전트가 작업을 완성하기 위해 하위 프로세스로 MCP(Model Context Protocol) 서버를 여러 개 구동하거나, 인터넷 정보 검색 및 내부 에이전트 호출을 시작할 때 컨텍스트의 양이 수배 이상 폭발적으로 늘어나는 특성이 있습니다.
이러한 네트워크 파이프라인 상의 물리적 팽창을 막으려면 Claude Code와 로컬 클라이언트 호출 단 사이에 무송신 및 기계적 압축을 제어해 주는 프록시 통신 레이어인 Headroom(오픈소스 프로젝트) 등을 배치하는 것이 좋습니다. 실행 명령을 내릴 때 headroom wrap claude와 같은 래퍼 명령어로 세션을 기동하면, 프록시 인프라가 에이전트 간의 교신에 개입하여 도구가 반환한 대량의 불필요한 정보와 반복 패킷을 지능적으로 압축한 뒤 Anthropic 종단으로 발송합니다. 이 방식을 적용하면 원래의 실행 무결성을 해치지 않으면서도 전체 입력 전송 흐름의 물리적 토큰 크기를 최대 80% 가량 획기적으로 줄일 수 있어 실질적인 비용 절감이 가능합니다.
6. 프롬프트 캐싱 메커니즘의 완벽한 정렬 유지
Anthropic 인프라에서 지원하는 프롬프트 캐싱은 완전히 고정된 토큰 시퀀스가 문자 한 자의 틀림도 없이 서두 접두사(Prefix) 영역에서 정렬을 유지해야만 활성화됩니다. 만약 접두사 일부분이라도 오염되거나 변경되면 그 이후 구간은 캐시 미스(Cache Miss) 처리가 되어 전체 입력 비용이 고스란히 정가로 부과되는 취약점이 있습니다.
이러한 캐시 탈락을 방지하고 입력 비용을 90% 이상 할인받으려면, 세션이 작동하는 도중에 최상위 가이드 파일인 CLAUDE.md를 기습적으로 수정하는 일은 멈추셔야 합니다. 또한 에이전트가 임의의 소스 파일을 읽어 들일 때 그 순서가 역전되는 경우에도 시퀀스 불일치로 캐시가 깨지므로 순서를 일정하게 보존해야 합니다.
캐싱 기능을 가동하려면 활성 접두사 크기가 최소 1,024 토큰 이상(Claude 3.5 Sonnet 및 Claude 3 Opus 규격)의 용량을 확보해야 하는 최소 임계치가 존재합니다. 게다가 캐시의 유효 수명(TTL)은 5분에 불과하므로 세션 간 질문 간격이 5분을 넘겨 지체되면 캐시는 즉시 소멸하여 재연산 비용이 과금됩니다. 따라서 5분 이내로 주기적이고 연속적인 인터랙션을 관리해 줄 필요가 있습니다. 한편 모델의 생각 과정(Thinking Blocks)은 cache_control로 직접 지정할 수는 없지만 이전 에이전트 대화 턴에 밀봉된 상태로는 함께 캐싱이 가능하므로, 대화 세션을 파괴하지 않고 압축 명령어를 활용해 정돈된 요약 레이아웃을 생성함으로써 지속성을 확보해야 합니다.
7. API 키 기반의 세션 인증 수단 채택
Gemini Cli는 인증 방식에 따라 캐싱 적용 범위가 완전히 양분되는 정량적 차이점을 보이고 있습니다. Google Personal 또는 Enterprise Accounts를 이용한 간편 OAuth 인증(구글 로그인 방식 tier)을 통해 가동할 경우 Code Assist API의 기술적 제약으로 인해 프롬프트 캐싱 기능이 내재적으로 지원되지 않는 치명적인 낭비가 수반됩니다.
이러한 손실 구조를 즉각 개선하기 위해 구글 AI 스튜디오 또는 버텍스 AI(Vertex AI) 계정을 가동하고 전용 API Key를 추출한 뒤, 시스템 변수인 GEMINI_API_KEY 환경 변수를 프로파일에 영구 이식하여 Cli를 활성화해야 합니다. 정식 API Key 인증 경로를 확보한 상태에서 세션을 구동하면, 에이전트는 동일 프로젝트에 연동된 대규모 소스 형상의 반복 스캔 과정에서 이전에 축적된 프롬프트 캐시 상태를 자동으로 호출합니다. 이 기법을 정밀 적용하면 동일 소스 코드에 대해 다중 질문을 투입할 때마다 청구되는 입력 처리 토큰 소비 비용을 최소 50%에서 최대 90%까지 극적으로 방어할 수 있습니다.
8. 경량 경계를 위한 커맨드라인 플래그 튜닝
사용자가 에이전트를 가동하는 목적이 복잡한 양방향 대화나 지능적 탐색이 아닌, 단순한 포맷 정렬, 단일 로그 파싱, 혹은 일회성 요약 검출과 같은 정형적 분석 작업인 경우에도 에이전트가 무거운 배경 기술들을 전부 로드하는 기본 설정은 불필요한 토큰 소비입니다.
이 경우 Claude Code 기동 시 --bare 플래그를 추가하는 것만으로 시동 프로세스 도중 실행되는 마운트 프로세스(자동 훅 검출, 확장 스킬 주입, MCP 서버 동기화, 영구 메모리 로딩 및 루트 CLAUDE.md 파싱 등)를 모두 일시에 비활성화할 수 있습니다. 초경량화된 환경에서 에이전트는 순수한 Bash 도구와 경량 파일 편집 도구만 손에 쥔 채 작업을 신속히 이행하므로 초기 시동 오버헤드를 막을 수 있습니다. 더불어, 프롬프트를 일회성 파이프라인으로 연결하여 구동할 때에는 --print (혹은 -p) 옵션을 추가하여 일회성 추론 후 세션을 곧바로 종료시킴으로써, 불필요한 백그라운드 스캔으로 인해 지속 축적되는 대기 비용 유출을 방지해야 합니다.
9. 대화 분기와 미세 되감기 제어
개발 디버깅 과정에서 에이전트가 한 차례 잘못된 방향으로 접근하여 수십 번의 실패 대화 로그가 누적되면, 대화 이력 자체가 돌이킬 수 없는 고비용 상태가 되며 심지어 모델이 과거 실패 지점에 편향되어 환각 증세를 야기합니다.
이와 같은 실패한 대화 궤적을 지우고 비용을 보존하기 위해 Gemini Cli가 선사하는 고유한 시간 제어 장치들을 능숙하게 다룰 수 있어야 합니다. 의사결정의 갈림길에 도달하는 경우 미리 /resume save decision-point-1 명령을 입력해 해당 세션 상태를 스냅샷 형태로 임시 저장해 두어야 합니다. 이후 해당 분기에서 디버깅 시도가 실패로 판명나면 지체없이 /resume resume decision-point-1을 실행하여, 파일들의 형상은 최신 상태로 유지한 상태에서 오직 실패했던 고비용의 가비지 대화 이력만 가상 세션 트리에서 물리적으로 도려내는 분기화(Forking) 처리를 진행합니다. 또한 에이전트가 폭주하거나 잘못된 코딩을 기재한 뒤 토큰을 마구 빨아들이는 시점에서는 /rewind 혹은 ESC 키를 두 번 입력하는 제어를 통해 복구 패널을 팝업시키고, 파일 수정 상태는 롤백하지 않고 보존하면서 오류가 발생하기 이전의 정돈된 상태로 대화 이력만 되감는 미세 제어를 적용해 불량 데이터를 세션에서 격리할 수 있습니다.
10. 엄격한 거부 규칙 설계 및 무분별한 도구 스캔 원천 봉쇄
에이전트가 자율 모드(auto 또는 bypassPermissions)로 동작할 때, 특정 오류를 찾아내기 위해 작업 디렉토리를 포함한 서브 도메인 전체를 마구잡이로 수색(Grep 도구 및 Read 도구 연쇄 시동)하면서 막대한 수의 소스 파일을 한꺼번에 컨텍스트 윈도우에 이식하는 치명적인 탐색 이상 반응이 포착된 바 있습니다.
이러한 폭주 상태를 시스템 인프라 수준에서 저지하고 토큰 유출을 막기 위해, 세션 실행 플래그나 설정 파일을 사용해 에이전트가 사용할 수 있는 도구의 상한선을 제약해 두어야 합니다. 기동 시 --disallowedTools "Grep" "Bash(rm *)"와 같은 지시자를 주입하면 에이전트는 대용량 소스 코드를 마구잡이로 긁어오는 탐색 전술 자체를 수립할 수 없어 과도한 파일 로드 현상을 원천 방지할 수 있습니다. 또한 Claude Code가 가진 보안상의 취약점으로 인해 .claudeignore가 에이전트의 내부 도구 기동이나 쉘 우회 명령을 완벽히 차단하지 못하고 소스를 외부로 송출하는 사고를 차단하기 위해, 프로젝트 구성 설정인 .claude/settings.json 내부에 명확한 물리 접근 배제 구문인 "permissions": {"deny":} 구조의 거부 설정을 공고히 명시하여 불필요한 토큰 차단과 데이터 유출을 강력히 예방해야 합니다.

결론 및 최적화 전략 제언
본 보고서에서 검토한 최적화 기술들은 Claude Code와 Gemini Cli 환경에서 발생하기 쉬운 토큰 소비 가속화를 통제 가능한 영역으로 전환시키는 구체적인 방안을 제시한다. 터미널 인공지능 에이전트의 구동 비용은 사용자가 무의식적으로 방치한 대화 이력과 무제한으로 열려 있는 파일 탐색 권한에서 대부분 기인한다. 따라서 세션 압축 명령어인 /compact 및 /compress를 단순 사후 처리가 아닌 정기적인 선제 조치로 구동하고, @ 지시자를 통해 명시적으로 소스 코드를 타겟 지정하는 습관을 들여야 합니다.
동시에 프롬프트 캐싱 메커니즘을 저해하지 않도록 대화 도중 CLAUDE.md 수정을 전면 자제하고, 일정한 세션 시간 간격을 존중하는 정교한 컨트롤이 수행되어야 캐시의 90% 비용 할인 편익을 상시 획득할 수 있다. 장기적으로는 엔터프라이즈 레벨의 대규모 코드 분석 시 거부 설정(permissions.deny)을 공고히 이식하여 불필요한 파일 로드를 전면 통제하고, 경량 전송용 오픈소스 프록시인 Headroom 등 통신 계층의 자동 압축 기술을 결합하여 가동 오버헤드를 물리적으로 격감시키는 현대적인 최적화 파이프라인을 조속히 정착시켜 토큰 소비를 줄이기 바랍니다.
