5가지 인기 토큰 절약 방법을 10가지 실제 작업으로 테스트해 본 결과, 두 번의 실행 모두에서 토큰을 줄인 방법은 없었습니다.
I tested 5 popular token saving methods across 10 real tasks, and none cut total tokens in both runs.
핵심 요약
토큰 절약 기법들이 실제로는 토큰 사용량을 줄이기보다 에이전트의 행동 방식을 변화시켜 품질 저하나 비용 증가를 초래함을 입증했습니다.
토큰 절약 기법 — 6가지 방법을 테스트했으나 일관되게 토큰을 줄인 사례는 전무함
행동 변화 — 토큰 절약 시도가 에이전트의 검색, 검증, 코드 수정 방식에 영향을 줌
비용 효율성 — 5.6 Terra xhigh 모델로 교체하는 것이 유일하게 비용을 절감함
품질 저하 — 일부 기법은 코드의 견고성과 범위 설정에 부정적인 영향을 미침
TL;DR
내 저장소에 있는 10가지 실제 코딩 작업을 대상으로 5.6 Sol 모델에서 토큰 절약 기법 5가지(와 더 저렴한 모델 하나)를 비교해 봤다. 7가지 방식(6개 기법 + 기준 모델)을 각각 두 번씩, 총 140번의 에이전트 실행을 돌렸다.
6가지 기법 중 어느 것도 두 번의 실행 모두에서 전체 토큰을 줄이지 못했다. 평균적으로는 5개가 오히려 토큰을 더 썼다. Context Mode는 토큰이 68%나 늘어나서 최악이었다.
이 모드들이 확실하게 바꾼 건 에이전트의 행동 방식이었다. 검색, 위임, 검증, 패치 범위를 어떻게 다루는지가 달라졌다. 몇몇 기법은 토큰을 아끼려다 코드 리뷰 문제, 의도와 다른 패치, 유지보수성 저하라는 대가를 치렀다.
유일하게 확실한 비용 절감은 5.6 Terra xhigh로 바꾸는 거였다. 토큰은 조금 더 썼지만 달러 기준으로는 49%나 아꼈다.
Codex 모델 기준이긴 하지만, Claude 쓰는 친구들한테도 충분히 적용 가능한 결과라고 본다 :)
토큰이랑 돈 아껴준다는 툴은 널리고 널렸다. "별다른 손해 없이 토큰을 줄여준다는데, 안 쓸 이유가 있나?" 싶지?
나도 이런 주장들이 진짜인지 직접 검증해보고 싶어서, 내 저장소에 있는 10가지 실제 작업(직접 만든 로컬 평가 도구 사용)을 가지고 6가지 방법을 테스트했다. 각 작업은 실제로 머지(merge)된 변경 사항들이다. 원래 저장소 상태에서 다시 실행해보고, 테스트 통과 여부, 의미적 동일성, 코드 리뷰, 풋프린트 위험도, 그리고 8가지 품질 지표로 점수를 매겼다.
기준(Baseline)은 5.6 Sol 모델에 보통 수준의 노력을 들인 경우다. 테스트한 6가지 방식은 다음과 같다.
Caveman: 원시인처럼 행동하게 함.
Ponytail: 에이전트를 세상에서 제일 게으른 시니어 엔지니어로 만듦. 출력 최소화, 코드 짜기 전에 YAGNI(당장 필요 없는 건 만들지 마라) 원칙 따지기, 검증 횟수 제한하기 등을 지시함.
RTK: 셸 명령어 출력이 모델에 들어가기 전에 필터링하고 압축해주는 래퍼.
Context Mode: 명령어를 배치로 처리하고, 큰 결과물은 인덱싱한 뒤 관련 있다고 판단되는 부분만 반환함.
Mandarin: 중국어 텍스트가 밀도가 높아서 토큰을 아낄 수 있다는 가설을 검증하기 위해 프롬프트를 중국어로 번역함.
Terra xhigh: 더 높은 추론 노력을 들이는 더 저렴한 모델.
모든 방식은 두 번씩 실행했다. 같은 작업을 반복해서 실행했으니 일관성을 측정할 수 있다. 같은 모델이라도 실행할 때마다 토큰 사용량은 달라지니까.
둘째, 품질이다. 각 모드를 같은 작업에서 기준 모델과 1:1로 붙여서 총 20번의 대결을 붙였다. 아래 표는 20번 중 승리, 패배, 무승부를 카운트한 것이다. 테스트, 동일성, 코드 리뷰 항목에서 '승리'는 해당 모드의 패치가 더 나았다는 뜻이다. 풋프린트 항목에서 '승리'는 위험도가 더 낮았다는 뜻이다.
Mode
Tests
Equivalence
Code review
Footprint
Caveman
0-0-20
0-4-16
2-6-12
9-10-1
Ponytail
1-4-15
0-2-18
0-4-16
15-4-1
RTK
1-1-18
1-2-17
2-3-15
7-13-0
Context Mode
2-5-13
1-3-16
3-3-14
13-5-2
Mandarin
2-1-17
2-2-16
2-2-16
10-10-0
Terra xhigh
0-1-19
0-4-16
2-4-14
16-4-0
셋째, 8가지 품질 평가 지표다. 각 셀은 0~4점 척도에서 해당 모드의 평균 점수에서 기준 모델의 평균 점수를 뺀 값이다. 두 번의 실행을 평균 냈고, 마이너스 값은 평가자가 해당 모드의 패치를 더 낮게 평가했다는 뜻이다.
Mode
Clarity
Simplicity
Coherence
Intentionality
Robustness
Adherence
Scope
Diff min.
Caveman
−0.03
−0.18
−0.23
−0.20
−0.42
+0.09
−0.24
+0.01
Ponytail
−0.09
−0.14
−0.28
−0.19
−0.48
−0.18
−0.45
+0.07
RTK
−0.02
+0.18
−0.16
+0.08
−0.02
+0.07
−0.04
+0.40
Context Mode
0.00
−0.09
−0.30
−0.23
−0.38
−0.21
−0.23
+0.01
Mandarin
−0.10
+0.13
−0.07
+0.08
+0.06
−0.13
+0.03
+0.49
Terra xhigh
−0.03
−0.11
−0.37
−0.12
−0.33
−0.03
−0.06
−0.33
에이전트에게 적게 쓰라고(Ponytail) 하거나 말을 적게 하라고(Caveman) 시킨 두 모드는 견고함과 범위 통제 측면에서 가장 큰 타격을 입었다. 반면, diff 최소화에서 승리한 두 모드(RTK, Mandarin)는 토큰을 줄인 게 아니라 오히려 더 많이 써서 결과를 얻어낸 꼴이었다.
분석
Caveman 사례를 보면 왜 반복 실행이 중요한지 알 수 있다. 평균값은 거의 비슷해 보이지만, 실제 두 번의 실행 결과는 +7%와 -11%였다. 이 방식은 일관되게 "덜 하는" 메커니즘이 아니었다. Caveman은 대화나 탐색 같은 특정 구간은 압축했지만, 다른 구간은 오히려 늘려버렸다. 늘어나는 구간은 작업마다 달랐다. 어떤 건 패치가 커졌고, 어떤 건 검증 루프가 길어졌고, 어떤 건 독립적인 테스트 아티팩트가 생겨났다.
Ponytail은 두 번 다 출력 토큰을 줄인 유일한 모드였는데, 각각 -3%, -11%를 기록했어. 근데 전체 토큰은 여전히 +16%, -1%로 움직였지. 패치 크기도 대체로 더 작았고. 이건 전부 주입된 행동 방식 때문이야. Ponytail은 모델한테 "최고의 코드는 아예 안 짜는 코드"라고 세뇌하고, 코드를 쓰기 전에 YAGNI 사다리를 7단계나 타게 만들거든. 게다가 복잡한 작업은 실행 가능한 작은 체크 하나로 제한해 버리지. 추론 모델 입장에선 이게 역설적인 상황인 거야. 뭘 생략할지 고민하느라 입력 토큰이랑 사고 토큰은 더 쓰는데, 정작 나오는 패치는 짧아지는 거지.
RTK는 개별 명령어의 출력값은 줄였지만, 에이전트가 명령어를 더 많이 날려버렸어. RTK는 작업당 평균 60번의 도구 호출을 했는데, 베이스라인은 49번이었고 시간도 거의 두 배나 더 걸렸지. 래퍼(wrapper)가 자기 할 일은 제대로 했어. 명령어 하나당 나오는 원시 출력값은 줄였으니까. 근데 에이전트가 그 뒤로 명령어를 더 많이 때리고, 검증도 더 많이 하고, 같은 파일을 더 잘게 쪼개서 다시 읽어버린 거야. rg, git, 테스트 명령어 하나에서 아낀 토큰이, 모델이 나중에 명령어를 몇 번이나 더 실행할지까지는 보장해주지 않는다는 거지.
Context Mode는 토큰이랑 비용을 둘 다 늘렸어. 전체 토큰이 +94%, +46% 늘었고, 20개 페어 작업 중 19개에서 토큰 손실이 발생했지. 싸고 구조화된 검색 기능을 주니까 에이전트가 문맥을 더 많이 긁어모으고 더 자주 들여다보게 된 거야. 저장소 전체를 검색하고 가져오는 게 싸고 체계적으로 변하니까, 에이전트가 문맥을 더 많이 수집하고, 더 자주 확인하고, 그걸 통합하는 데 시간을 더 쏟게 된 거지. 문맥 작업 하나당 한계 비용을 낮췄더니 오히려 전체 수요량이 늘어난 꼴이야.
Mandarin은 전체 토큰을 86%, 15% 늘렸어. 为什么?(왜냐고?) 번역된 프롬프트는 단순히 첫 메시지의 토큰 수만 바꾼 게 아니야. 모델이 작업을 분해하고 접근하는 방식 자체를 바꿔버렸거든. 작업이 필요하든 아니든 상관없이 위임하는 횟수가 늘었고, 그 방식도 더 획일화됐어. 비용은 중국어 글자 때문이 아니라, 그 결과로 나타난 전체 작업 궤적에서 발생한 거야.
Terra는 20개 작업 페어 중 19개에서 더 저렴했지만, 전체 토큰은 6%, 5% 더 썼어. 그러니까 이건 토큰 효율성이 아니라 가격 책정에서 이득을 본 거지. Terra는 턴당 출력 토큰은 더 많으면서 도구 호출 횟수는 평균적으로 더 적었어(49번 대비 42번). 추론에 쓴 노력은 궤적이 아니라 토큰 수에 나타난 셈이지. 품질 문제는 과하게 만들어서 생긴 게 아니라, 더 큰 요구사항의 구성 요소를 누락해서 발생했어.
공유된 메커니즘
이 방법들은 각기 다른 국소적인 지점들을 최적화해:
Ponytail은 코드랑 설명을 덜 내뱉으려고 함.
Caveman은 상호작용을 압축함.
RTK는 개별 명령어 결과를 압축함.
Context Mode는 검색된 문맥을 압축함.
Mandarin은 프롬프트 표현 방식을 바꿈.
Terra는 모델, 추론 수준, 가격 책정 방식을 바꿈.
근데 청구서는 국소적인 지점이 아니라 전체 작업 궤적에 대해 날아오지.
모델은 명령어 결과값을 작게 받아도, 명령어를 두 배로 실행해서 메꿀 수 있어. 뭘 생략할지 고민하느라 토큰을 더 쓰고 나서 더 짧은 패치를 내뱉을 수도 있지. 저장소 문맥을 가져오기 쉽게 만들면, 그만큼 훨씬 더 많이 가져와서 응답할 수도 있고.
여기서 일어난 일이 딱 이거야. 이 처리 방식들이 에이전트의 검색 정책, 위임, 검증 루프, 패치 경계를 다 바꿔버린 거지. 그 행동 변화가 토큰 절감 효과보다 훨씬 크고 일관적이었던 거야.
출력 압축이 곧 작업량 압축은 아니다.
다른 연구들도 국소적인 절감 효과와 전체 궤적 사이의 이런 괴리를 지적해. 실제 Claude Code 세션 500개를 다시 돌려본 결과에 따르면, 이 분야 도구들이 광고하는 60~90% 절감 효과는, 재전송된 문맥까지 다 계산하고 나면 전체 비용의 4% 미만으로 쪼그라들었어. JetBrains도 Caveman 프롬프팅과 RTK에 대한 통제 연구에서 똑같은 패턴을 발견했지.
결론
토큰을 아끼려고 만든 도구들은 사실상 행동 교정이나 다름없음. 광고하는 효과만 봐서는 실제 청구 금액이나 결과물의 퀄리티가 어떤지 알 수가 없거든.
전체 토큰 사용량을 줄이는 게 목적이라면, 지금 나온 증거들로 봐서는 이런 도구들을 굳이 폭넓게 쓸 이유가 없음. 비용 절감이 목적이라면 5.6 Terra xhigh가 확실한 승자긴 한데, 이건 모델 자체가 다르고 추론 수준이나 퀄리티도 차이가 있으니 감안해야 함.
결국 자기 작업에서 설정 변경이 토큰을 아껴주는지 확인하는 유일한 방법은, 설정을 바꿨을 때랑 안 바꿨을 때 각각 작업을 돌려보고 청구서를 직접 확인하는 것뿐임.
공개: 이 연구에 사용한 로컬 평가 도구인 Stet은 내가 직접 만들고 있음. 코딩 에이전트가 설정을 변경했을 때, 커밋하기 전에 과거 저장소 작업들을 대상으로 테스트해 볼 수 있게 해주는 도구임. Stet은 현재 사용 중인 LLM 구독을 활용해서 로컬에서 돌아감.
주요 댓글
r/claudeai
토큰 절감 도구의 실효성에 대한 회의적인 반응과 함께, 기술적인 댓글 작성 환경에 관한 논의가 이루어졌습니다.
7
Ponytail 방식은 꽤 괜찮아 보이네요. Caveman 방식도 LLM 답변의 출력 토큰을 줄이고 가독성을 높여준다면 확실히 이득이고요. 이 실험이 매우 엄격하게 진행되었고, '토큰을 줄이는가'라는 본래 목적에 집중했다는 점이 마음에 듭니다.
모델이 문제를 해결하기 위해 일정량의 연산이 필요한 건지, 아니면 다른 이유가 있는 건지 궁금하네요. '토큰 사용량을 줄이는 방법이 없다'는 결과의 근본 원인이 무엇이라고 생각하시나요?
토큰 효율성 측면에서, GPT 5.6 모델들이 더...
3
토큰 효율성 측면에서, GPT 5.6 모델들이 일반적으로 더 토큰 효율적인가요? 많은 유명 벤치마크에서 그렇다고 하던데요?
세 줄 요약: LLM이 rtk read big.log --max-lines 20 | wc -l처럼 작은 스니펫을 요청하면, rtk는 전체 파일을 토큰 절감량으로 계산한 뒤 LLM에게 잘못된 정보를 보냅니다. LLM은 잘못된 CLI 출력을 그대로 믿거나, CLI가 거짓말을 했다는 걸 알아채고 다시 요청하게 되는데(이게 절감량을 더 부풀리게 됨), 이런 식이죠.
3
놀랍지도 않네..
1
흥미롭네요, 상세한 분석 감사합니다. 그런데 두 번의 반복만으로 통계적으로 유의미한 결론을 내릴 수 있을까요? 어떤 경우에는 한 번의 실행이 더 나은 결과를 보이기도 하잖아요. 결과가 좋지 않았던 쪽이 이상치이거나 최악의 시나리오였을 수도 있지 않을까요?
또한, 작성자님의 워크로드가 얼마나 대표성을 띠는지도 궁금합니다. 다른 워크로드에서도 비슷한 결과가 나올까요? 특정 사용 사례에서는 이런 도구들이 더 효율적일 수도 있지 않을까요?
목록에 있는 도구 중 RTK를 써봤는데 토큰 사용량을 상당히 줄여주는 것 같았거든요...
2
좋은 질문입니다. 각 반복마다 10개의 페어 작업이 포함되었지만, 두 번의 반복만으로는 더 좋거나 나쁜 실행이 이상치였는지 판단하기 부족해서, 나타난 작은 절감 효과는 통계적 결론이라기보다 방향성을 제시하는 정도로 봐야 합니다.
1
trace-mcp, codegraph, codebase-memory-mcp 같은 도구들을 써보세요. 대규모 레포지토리에서 코드 리뷰를 하거나, 코드를 탐색하거나, 현재 코드베이스를 알아야 하는 설계 및 구현 계획을 작성할 때 실질적인 절감 효과를 볼 수 있습니다. 이 셋 중 codebase-memory-mcp는 작업 실행 중에 에이전트에게 도구를 사용하라고 명시적으로 요청해야 할 수도 있지만, 나머지 두 개는 훅을 제공하거나 시스템 프롬프트를 수정하기 때문에 명시적으로 호출하지 않아도 사용됩니다.
0
Mandarin(중국어) 방식은 사람들이 생각하는 것보다 일반화가 잘 안 되는데, 그 이유를 알 필요가 있습니다.
저는 한국어 워크플로우에서 Caveman 스타일의 압축을 테스트해 봤습니다. 광고되는 ~65% 절감은 영어에만 해당하는 수치예요. 한국어는 교착어라서 문법 요소가 모든 명사와 동사에 붙어 있고, 영어처럼 삭제할 수 있는 저렴한 기능어(function words)가 따로 없거든요. 그걸 떼어내면 아무것도 절약하지 못하거나 의미가 바뀌어 버립니다. '언어가 조밀하면 토큰이 적게 든다'는 말은 사실 '영어에는 삭제 가능한 군더더기가 많다'는 뜻일 뿐입니다.