
Claude Code로 개발하다 보면 어느 순간 깨닫게 된다. 토큰이 너무 빨리 사라진다. git status 한 번에 수천 토큰, cargo test 실패 로그에 수만 토큰, rg 검색 결과에 또 수천 토큰. 컨텍스트 윈도우가 순식간에 차오르고, 세션은 느려지며, 결국 “start fresh”를 입력하게 된다.
이 문제를 정면으로 해결하는 도구가 등장했다. RTK다. “CLI proxy that reduces LLM token consumption by 60-90% on common dev commands”라는 문장으로 소개되는 이 Rust 기반 CLI 프록시는, 개발자들이 매일 사용하는 명령어들의 출력을 지능적으로 압축하여 토큰 소모를 극적으로 줄여준다.
1. 토큰 버닝의 현장: 어디서 다 낭비되나
Claude Code가 터미널 명령을 실행할 때, 그 출력은 그대로 컨텍스트에 쌓인다. 문제는 대부분의 CLI 출력이 LLM에게 “노이즈”라는 점이다.
| 작업 | 빈도 | 표준 | RTK | 절약 |
|---|---|---|---|---|
| ls / tree | 10x | 2,000 | 400 | -80% |
| cat / read | 20x | 40,000 | 12,000 | -70% |
| grep / rg | 8x | 16,000 | 3,200 | -80% |
| git status | 10x | 3,000 | 600 | -80% |
| git diff | 5x | 10,000 | 2,500 | -75% |
| cargo test / npm test | 5x | 25,000 | 2,500 | -90% |
| pytest | 4x | 8,000 | 800 | -90% |
| Total | ~118,000 | ~23,900 | -80% |
하루에 10만 토큰이 넘는 출력이 컨텍스트를 잠식한다. RTK는 이걸 2만 토큰 수준으로 압축한다.
2. 4가지 압축 전략: 단순한 필터가 아니다
RTK는 단순히 “줄 수 줄이기”가 아니다. LLM이 이해하기 쉬운 형태로 정보를 재구성한다.
Smart Filtering — 노이즈 제거
주석, 공백, 보일러플레이트 코드를 자동으로 걸러낸다. 파일 읽기 출력에서 실제 로직만 남긴다.
Grouping — 유사 항목 집계
디렉토리별 파일, 타입별 에러를 그룹화한다. 100개의 파일이 “src/components/ (15 files)”, “src/utils/ (8 files)” 식으로 요약된다.
Truncation — 관련 컨텍스트 유지
중간을 자르는 게 아니라, 관련성 높은 부분을 유지하며 중복을 제거한다. 검색 결과에서 핵심 스니펫만 추출한다.
Deduplication — 반복 로그 축약
“동일한 에러가 47회 반복됨” 식으로 카운트와 함께 축약한다. 테스트 실패 로그에서 100줄짜리 스택 트레이스가 한 줄로 요약된다.
3. 지원 명령어: 개발 워크플로우 전 커버
RTK는 개발자가 하루 종일 입력하는 명령어들을 포괄한다.
파일 시스템
ls,read,smart,find,grep,diff
Git
status,log,diff,add,commit,push,pull
GitHub CLI
gh pr,gh issue,gh run
테스트
cargo test,npm test,vitest,playwright,pytest,go test
린트/빌드
eslint,biome,tsc,next build,prettier,cargo clippy,ruff,golangci-lint
패키지
pnpm list,pip list,prisma
컨테이너
docker ps,docker logs,kubectl pods,kubectl logs
유틸리티
json,deps,env,log,curl,wget,summary,proxy
4. Claude Code 통합: Hook으로 완벽 자동화
RTK의 진짜 힘은 Claude Code와의 통합에서 나온다.
rtk init --global
이 한 줄이면 끝이다. Claude가 어떤 명령어를 보내든, RTK가 가로채서 최적화한다.
자동 명령어 재작성
| Claude가 입력 | RTK가 실행 |
|---|---|
git status | rtk git status |
cat file.rs | rtk read file.rs |
cargo test | rtk cargo test |
rg pattern | rtk grep pattern |
100% RTK 채택, 제로 토큰 오버헤드. Claude는 그냥 평소처럼 명령을 내리고, RTK가 백그라운드에서 최적화한다.
5. 실패 시 Raw 출력 저장: 디버깅도 놓치지 않는다
압축된 출력이 문제를 숨길까 봐 걱정할 필요 없다. 명령이 실패하면, RTK는 전체 미필터 출력을 자동으로 저장한다.
~/.local/share/rtk/tee/
LLM이 재실행 없이 전체 출력을 읽을 수 있다. 성공할 땐 압축, 실패할 땐 전체. 최고의 두 세계를 다 갖췄다.
6. 통계 추적: 얼마나 아꼈는지 눈으로 확인
rtk gain 명령으로 절약한 토큰을 한눈에 볼 수 있다.
# 절약 토큰 요약
rtk gain
# ASCII 그래프 (최근 30일)
rtk gain --graph
# 일별 분석
rtk gain --daily
# 대시보드용 JSON
rtk gain --all --format json
숫자로 확인하면 체감이 달라진다. “이번 달 2백만 토큰 절약” 같은 메시지를 보면, RTK를 끌 수 없다.
7. Discover 모드: 놓친 기회 찾기
rtk discover
현재 워크플로우에서 RTK가 아직 최적화하지 않는 명령어들을 찾아준다. “이것도 압축할 수 있어요”라고 제안한다. 점진적으로 커버리지를 높여간다.
8. 설치: 단일 바이너리, 의존성 없음
Rust로 작성된 RTK는 단일 바이너리다. 복잡한 의존성 설치가 필요 없다.
Homebrew (macOS/Linux)
brew install rtk
curl (macOS/Linux/WSL)
curl -fsSL https://raw.githubusercontent.com/rtk-ai/rtk/master/install.sh | sh
Cargo
cargo install --git https://github.com/rtk-ai/rtk
Claude Code 통합
rtk init --global
9. 사용 예시
파일 읽기
# 기본 읽기
rtk read file.rs
# 시그니처만 (aggressive 모드)
rtk read file.rs -l aggressive
Git
# Compact status
rtk git status
# → "ok main"
rtk git push
# → "ok abc1234"
rtk git commit
테스트
# 실패만 표시 (-90%)
rtk test cargo test
# Python tests (-90%)
rtk pytest
린트
# ESLint grouped
rtk lint
# TypeScript errors grouped
rtk tsc
10. 설정 파일
RTK는 TOML 기반 설정을 지원한다.
- macOS:
~/Library/Application Support/rtk/config.toml - Linux:
~/.config/rtk/config.toml
압축 레벨, 제외 패턴, 커스텀 명령어 매핑 등을 세밀하게 조정할 수 있다.
마치며: 토큰 걱정 없는 개발
RTK의 등장은 Claude Code 사용 패턴을 근본적으로 바꾼다. 토큰을 아끼려고 명령어를 망설이던 습관이 사라진다. 그냥 평소처럼 명령하고, RTK가 알아서 최적화한다.
특히 인상적인 것은 성능이다. Rust로 작성된 단일 바이너리로, 오버헤드가 10ms 미만이다. 체감할 수 없을 정도로 빠르다.
6,361개의 스타가 증명하듯, 많은 개발자들이 이미 RTK를 일상적으로 사용하고 있다. Claude Code로 개발한다면, RTK는 “있으면 좋은 것”이 아니라 “없어선 안 되는 것”이 될 것이다.
이제 토큰 걱정 없이 대규모 프로젝트의 여정을 이어가라.
🔗 관련 정보
- 공식 사이트: https://www.rtk-ai.app
- GitHub: https://github.com/rtk-ai/rtk
- 개발자: rtk-ai
- 언어: Rust