rtk
clitoken-optimizationrustclaude-codertk-ai
Claude Code를 포함한 10개 AI 코딩 도구에서 동작하는 CLI 프록시다. 명령어 출력이 LLM에 전달되기 전 필터링·압축해 토큰 소비를 60-90% 줄인다. 단일 Rust 바이너리로 설치가 간단하고 10ms 미만의 오버헤드만 추가된다. `rtk init -g`로 한 번 설정하면 Claude Code PreToolUse 훅이 모든 Bash 명령어를 자동으로 `rtk` 경유로 재작성한다. Claude는 이 리라이트를 인식하지 못하고 압축된 결과만 받는다. 네 가지 전략을 명령어 타입별로 조합해 적용한다: 노이즈 제거(스마트 필터링), 유사 항목 묶기(그루핑), 관련 컨텍스트만 남기기(트런케이션), 반복 로그 줄 집계(중복 제거). 명령어 실패 시에는 원본 전체 출력을 tee 파일로 저장해 재실행 없이 LLM이 읽을 수 있게 한다. 주의: Claude Code 내장 도구(Read, Grep, Glob)는 Bash 훅을 거치지 않아 자동 리라이트가 적용되지 않는다. 이 경우 `rtk read`, `rtk grep`, `rtk find`를 직접 호출하거나 셸 명령어(`cat`, `rg`)를 사용한다.
토큰 절약 (30분 세션 기준)
| 명령어 | 빈도 | 기본 | 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% |
| git log | 5x | 2,500 | 500 | -80% |
| git add/commit/push | 8x | 1,600 | 120 | -92% |
| cargo test / npm test | 5x | 25,000 | 2,500 | -90% |
| pytest | 4x | 8,000 | 800 | -90% |
| go test | 3x | 6,000 | 600 | -90% |
| docker ps | 3x | 900 | 180 | -80% |
중간 규모 TypeScript/Rust 프로젝트 기준 추정치. 실제 절약량은 프로젝트 크기에 따라 다를 수 있다.
요구사항
- —macOS / Linux / Windows
- —Claude Code, Cursor, Gemini CLI, Codex, Windsurf, Cline 등 10개 AI 도구 지원
- —Homebrew (macOS 권장) 또는 curl 설치 스크립트
설치
brew install rtkrtk init -g# Claude Code 재시작 후 자동 적용rtk gain # 토큰 절약량 확인자동 리라이트 훅
`rtk init -g` 한 번으로 Claude Code 전역 설정(`~/.claude/settings.json`)에 PreToolUse 훅이 등록된다. 이후 Claude가 Bash 도구를 호출할 때마다 훅이 명령어를 가로채 `rtk <명령어>`로 투명하게 재작성한다. Claude는 이 리라이트를 인식하지 못하고 압축된 출력만 받는다. 훅은 현재 세션뿐 아니라 서브에이전트를 포함한 모든 대화에 적용된다. 100% rtk 채택률을 토큰 오버헤드 없이 달성할 수 있다.
동작 흐름
- 01Claude가 Bash 도구로 `git status` 호출
- 02PreToolUse 훅이 명령어를 가로채 `rtk git status`로 재작성
- 03rtk가 git을 실행하고 출력을 필터링·압축
- 04Claude는 압축된 결과(~200 토큰)만 수신 — 원본(~2,000 토큰) 미노출
자동 변환 목록
| 원본 명령어 | 변환 후 |
|---|---|
| git status / diff / log / add / commit / push / pull | rtk git ... |
| gh pr / issue / run | rtk gh ... |
| cargo test / build / clippy | rtk cargo ... |
| cat / head / tail <file> | rtk read <file> |
| rg / grep <pattern> | rtk grep <pattern> |
| ls | rtk ls |
| tsc | rtk tsc |
| eslint / biome | rtk lint |
| pytest | rtk pytest |
| go test / build | rtk go ... |
| docker ps / images / logs | rtk docker ... |
| kubectl get / logs | rtk kubectl ... |
| aws sts / ec2 / lambda / ... | rtk aws ... |
| curl | rtk curl |
훅은 Bash 도구 호출에만 적용된다. Claude Code 내장 Read·Grep·Glob은 훅을 거치지 않으므로 RTK 필터링이 필요하면 `rtk read`, `rtk grep`, `rtk find`를 직접 호출하거나 셸 명령어(cat, rg)를 사용한다.
명령어
파일
rtk ls디렉토리 구조를 토큰 최적화된 트리 형태로 출력한다. 불필요한 메타데이터를 제거하고 파일을 디렉토리별로 그루핑한다.
rtk ls .rtk ls src/rtk read파일을 스마트하게 읽는다. `-l aggressive` 옵션으로 함수 시그니처만 추출해 본문을 제거할 수 있다.
`rtk smart`는 2줄 휴리스틱 요약을 출력한다.
rtk read file.rsrtk read file.rs -l aggressivertk smart file.rsrtk grep검색 결과를 파일·디렉토리별로 그루핑해 출력한다. 반복되는 경로 접두사를 제거한다.
rtk grep "pattern" .rtk find "*.rs" .rtk diff두 파일의 diff를 압축해 핵심 변경사항만 보여준다.
rtk diff file1 file2Git
rtk git status변경된 파일 목록을 간결하게 출력한다. 장황한 힌트 메시지를 제거한다.
rtk git statusrtk git diffdiff를 압축해 변경사항의 핵심만 남긴다.
rtk git diffrtk git diff --stagedrtk git log커밋 로그를 한 줄씩 간결하게 출력한다.
rtk git log -n 10rtk git add / commit / push / pull결과를 한 줄 응답으로 압축한다. add는 `ok`, commit은 `ok abc1234`, push는 `ok main`, pull은 `ok 3 files +10 -2`.
rtk git add .rtk git commit -m "msg"rtk git pushrtk git pullGitHub CLI
rtk ghgh CLI 출력을 압축한다. PR·이슈·워크플로우 목록을 간결하게 표시한다.
rtk gh pr listrtk gh pr view 42rtk gh issue listrtk gh run list테스트
rtk test / rtk cargo test실패한 테스트만 출력한다. 성공 케이스와 진행 상황 줄을 제거해 90% 절약한다.
`rtk err <명령어>` 형식으로 모든 명령어 출력에서 오류·경고만 추출할 수 있다.
rtk test cargo testrtk cargo testrtk pytestrtk go testrtk vitest runrtk playwright testrtk rspecrtk rake test빌드 & 린트
rtk tscTypeScript 타입 에러를 파일별로 그루핑해 출력한다.
rtk tscrtk lintESLint·Biome 결과를 룰·파일별로 그루핑한다.
rtk lintrtk lint biomertk cargo build / clippyCargo 빌드·Clippy 출력을 80% 압축한다.
rtk cargo buildrtk cargo clippyrtk ruff / rtk golangci-lint / rtk rubocop각 언어별 린터를 JSON 모드로 실행해 결과를 압축한다.
rtk ruff checkrtk golangci-lint runrtk rubocop컨테이너
rtk docker / rtk kubectldocker ps, images, logs와 kubectl pods, services, logs를 압축 출력한다. 로그는 반복 줄을 집계한다.
rtk docker psrtk docker imagesrtk docker logs <container>rtk kubectl podsrtk kubectl logs <pod>AWS
rtk awsAWS CLI 출력을 압축한다. 시크릿을 자동으로 마스킹하고, CloudFormation 이벤트는 실패를 우선 표시한다.
rtk aws sts get-caller-identityrtk aws ec2 describe-instancesrtk aws lambda list-functionsrtk aws logs get-log-eventsrtk aws cloudformation describe-stack-events토큰 절약 분석
rtk gain절약된 토큰 통계를 보여준다. 그래프·히스토리·일별 분석을 지원하며 JSON 내보내기도 가능하다.
rtk gainrtk gain --graphrtk gain --historyrtk gain --dailyrtk gain --all --format jsonrtk discoverClaude Code 히스토리를 분석해 RTK를 적용하지 않아 낭비된 토큰 기회를 찾아준다.
rtk discoverrtk discover --all --since 7rtk session최근 세션에서 RTK 적용률을 보여준다.
rtk session훅 설정
rtk initAI 도구별 훅을 설치한다. Claude Code가 기본값이며, 10개 AI 도구를 지원한다.
훅 설치 후 AI 도구를 재시작해야 적용된다. 훅은 Bash 도구 호출에만 적용되며, Claude Code 내장 Read·Grep·Glob은 대상이 아니다.
rtk init -g # Claude Code (기본)rtk init -g --gemini # Gemini CLIrtk init -g --codex # Codex (OpenAI)rtk init -g --copilot # GitHub Copilotrtk init -g --agent cursor # Cursorrtk init --agent windsurf # Windsurfrtk init --agent cline # Cline / Roo Codertk init --show # 설치 확인rtk init -g --uninstall # 제거