한줄 요약
Rust로 만든 CLI 프록시 하나로 AI 코딩 세션의 LLM 토큰 소비를 평균 80% 줄일 수 있다.
어떤 상황에서 필요한가?
Claude Code나 Cursor 같은 AI 코딩 도구를 장시간 사용하다 보면, git diff나 cargo test 같은 명령어 출력이 그대로 LLM 컨텍스트에 쌓이면서 토큰이 빠르게 소진된다. 30분짜리 일반 세션에서 ls, cat, grep, git 관련 명령을 합산하면 약 118,000토큰이 소비되는 것으로 측정됐다. rtk는 이 출력값을 LLM에 전달하기 전에 필터링·압축해서 같은 작업을 약 23,900토큰 수준으로 처리한다.
핵심 구현 방법
1. 설치
macOS 사용자라면 Homebrew로 가장 간단하게 설치할 수 있다.
brew install rtk
Linux/macOS 공통으로는 설치 스크립트를 사용할 수 있으며, 바이너리는 ~/.local/bin에 위치한다.
curl -fsSL https://raw.githubusercontent.com/rtk-ai/rtk/refs/heads/master/install.sh | sh
Cargo를 통한 설치도 가능하지만, crates.io에 동명의 별개 프로젝트(Rust Type Kit)가 존재하므로 반드시 Git 경로를 직접 지정해야 한다.
cargo install --git https://github.com/rtk-ai/rtk
설치 확인은 rtk --version으로 하며, 현재 최신 버전은 0.28.2다.
2. AI 도구와 연동
rtk init 명령 하나로 주요 AI 도구에 훅을 설치한다. 지원 도구별 명령은 아래와 같다.
rtk init -g # Claude Code / Copilot (기본값)
rtk init -g --gemini # Gemini CLI
rtk init -g --codex # Codex (OpenAI)
rtk init -g --agent cursor # Cursor
rtk init --agent windsurf # Windsurf
rtk init --agent cline # Cline / Roo Code
설치 후 AI 도구를 재시작하면, Bash 툴콜에서 git status 같은 명령이 자동으로 rtk git status로 재작성된다. AI 입장에서는 이 재작성 과정이 보이지 않으며, 압축된 출력만 전달받는다.
3. rtk가 적용하는 4가지 압축 전략
rtk는 명령 유형에 따라 네 가지 방식을 조합해 출력을 줄인다.
- 스마트 필터링: 주석, 공백, 보일러플레이트 제거
- 그루핑: 디렉터리별 파일 묶기, 오류 유형별 집계
- 트런케이션: 중복 컨텍스트 제거 후 핵심만 유지
- 중복 제거: 반복되는 로그 라인을 카운트로 축약
4. 주요 명령별 토큰 절감률
30분 세션 기준 측정치를 보면 절감 효과가 명확하다.
| 명령 | 기본 토큰 | rtk 적용 후 | 절감률 |
|---|---|---|---|
cat / read | 40,000 | 12,000 | -70% |
cargo test / npm test | 25,000 | 2,500 | -90% |
git diff | 10,000 | 2,500 | -75% |
pytest | 8,000 | 800 | -90% |
grep / rg | 16,000 | 3,200 | -80% |
git add/commit/push | 1,600 | 120 | -92% |
수치는 중간 규모 TypeScript/Rust 프로젝트 기준이며 프로젝트 크기에 따라 실제 절감폭은 달라질 수 있다.
실전에서 주의할 점
- Bash 훅의 적용 범위 제한: rtk의 자동 재작성은 Bash 툴콜에만 적용된다. Claude Code의 내장 도구인
Read,Grep,Glob은 Bash 훅을 거치지 않으므로 자동 압축이 되지 않는다. - 내장 도구 대체 방법: 위 내장 도구 대신
cat,rg,find같은 쉘 명령을 사용하거나,rtk read,rtk grep,rtk find를 직접 호출해야 압축 출력을 얻을 수 있다. - Cargo 설치 시 패키지 혼동 주의: crates.io의
rtk는 전혀 다른 패키지다.rtk gain명령이 실패한다면 잘못된 패키지가 설치된 것이므로, Git URL을 명시한 설치 명령으로 다시 설치해야 한다. - PATH 설정 확인: 스크립트로 설치 시 바이너리가
~/.local/bin에 위치하므로, 해당 경로가 PATH에 포함되어 있지 않다면.bashrc또는.zshrc에 수동으로 추가해야 한다. - 오버헤드는 10ms 미만: 단일 Rust 바이너리 구조로 처리 지연은 10ms 미만이며, 100개 이상의 명령을 지원한다.