만약 실제 프로젝트에서 Claude Code를 사용한다면, 토큰의 상당 부분이 프롬프트에서 오는 것이 아닙니다. 그것은 명령어 출력(command output)에서 옵니다. 긴 git log, 모든 성공 케이스를 출력하는 테스트 실행, 반복되는 동일한 경고를 표시하는 린트 패스 등이 그 예입니다. 에이전트는 이 모든 것을 매번 읽게 되며, 사용자는 컨텍스트와 제한(limits) 측면에서 비용을 지불하게 됩니다.
RTK는 사용자 에이전트와 셸 사이에 위치하는 단일 Rust 바이너리입니다. Claude Code가 git status, pytest 또는 npm test를 실행할 때, RTK는 모델이 보기 전에 출력을 필터링하고 압축합니다. README에 따르면 지원되는 100개 이상의 명령어에서 최대 90%까지 출력 크기를 줄일 수 있다고 합니다. 프롬프트를 작성하는 방식은 변경할 필요가 없습니다. 에이전트는 평소와 같은 명령어를 계속 입력합니다.
여기서는 약 10분 만에 설정하는 방법, 토큰 절감이 실제로 이루어지는지 확인하는 방법, 그리고 사람들이 작동하지 않는다고 생각하게 만드는 하나의 함정(gotcha)을 설명합니다.
Step 1: 설치하기 (그리고 올바른 rtk인지 확인하기)
brew install rtk # macOS / Linux
winget install rtk-ai.rtk # Windows
패키지 관리자를 사용하지 않는 경우 레포지토리에 있는 설치 스크립트를 사용할 수도 있습니다.
그런 다음 올바른 패키지를 받았는지 확인해야 합니다. crates.io에는 이름이 "rtk"인 다른 프로젝트가 존재하기 때문입니다:
rtk --version
rtk gain # 반드시 절감 대시보드가 표시되어야 하며, "command not found"가 아니어야 합니다.
만약 rtk gain이 대시보드를 출력한다면, 성공적으로 설치된 것입니다.
Step 2: Claude Code에 연결하기 (hook)
이 명령어는 Claude Code에 PreToolUse hook을 추가합니다 (동일한 명령은 VS Code의 Copilot에도 --copilot과 함께 적용됩니다). Claude Code를 다시 시작한 다음, git status를 실행하도록 요청해 보세요. 내부적으로 호출은 rtk git status로 재작성되며 에이전트는 압축된 버전을 받게 됩니다. 에이전트가 직접 rtk를 호출할 필요가 없습니다.
다른 것을 사용하나요? 같은 아이디어는 18가지 도구에 걸쳐 작동합니다:
rtk init -g --codex # Codex
rtk init -g --gemini # Gemini CLI
rtk init -g --agent cursor # Cursor
...
Step 3: 절감이 실제인지 확인하기
몇 번의 세션 후에:
rtk gain # 요약
rtk gain --graph # 지난 30일간의 ASCII 그래프
rtk gain --daily # 일별
...
rtk discover가 유용한 명령어입니다. 토큰이 여전히 누수되는 지점을 알려줍니다.
함정: 후크는 셸 명령어만 감지합니다
이것은 대부분의 사람들을 혼란스럽게 합니다. 후크(hook)는 Bash 도구 호출에서만 작동합니다. Claude Code에 내장된 Read, Grep, 그리고 Glob 도구는 셸을 통과하지 않기 때문에 RTK가 이를 절대 볼 수 없습니다.
두 가지 해결책이 있습니다:
- 에이전트에게 읽기 및 검색을 위해 셸 명령어(
cat, rg, find)를 선호하도록 지시하거나,
- 직접
rtk read, rtk grep, 그리고 rtk find를 호출하게 합니다.
CLAUDE.md 파일에 "검색 및 읽기를 위해 Bash를 통해 rg와 cat을 사용하세요"와 같은 한 줄만 있어도 대부분의 프로젝트에는 충분합니다.
출력에 미치는 영향
RTK는 명령어에 따라 네 가지 전략을 적용합니다:
- 필터링 (Filtering): 주석, 공백 및 상용구(boilerplate)를 제거합니다.
- 그룹화 (Grouping): 디렉토리별 파일이나 유형별 오류와 같이 유사한 항목을 집계합니다.
- 자르기/축소 (Truncation): 관련 부분만 유지하고 반복되는 부분을 잘라냅니다.
- 중복 제거 (Deduplication): 반복되는 로그 라인을 개수와 함께 한 줄로 압축합니다.
원본 출력이 필요한가요? rtk bypass <명령어>는 필터링 없이 실행하며 여전히 추적합니다.
Claude의 프롬프트 캐시를 손상시키나요? 아니요. README에 따르면: 출력은 명령어당 한 번 필터링되어 기록(history)에 저장되며, 이후 호출에서는 정상적으로 캐싱됩니다. 또한 출력이 작을수록 캐시 쓰기 및 읽기가 더 저렴해집니다.
솔직한 주의사항
- 기본
rtk 빌드는 Apache-2.0과 BUSL-1.1 코드를 혼합합니다. 프로덕션 사용은 무료입니다. 팀이 Apache만 필요하다면 대신 rtk-oss를 설치하세요 (brew install rtk-ai/tap/rtk-oss). 둘 다 rtk라는 이름의 바이너리를 설치하므로, 하나를 제거한 후 다른 것을 제거해야 합니다.
- API 트래픽 자체를 압축하는 선택적 기능인
rtk-proxy가 있습니다 (rtk claude는 이를 통해 Claude를 실행합니다). 이것은 BUSL-1.1 하의 별도 바이너리입니다. 먼저 일반(plain) 후크를 시도해 보세요.
- 압축은 에이전트가 더 적게 보인다는 것을 의미합니다. 특정 명령어의 출력에서 세부 정보가 누락되기 시작하면, 해당 명령어에 대해
rtk bypass를 사용하세요.
복사/붙여넣기 프롬프트와 함께하는 사용 사례
각 페이지에는 대상 사용자, 단계별 과정, 그리고 코딩 에이전트에 붙여넣을 수 있는 프롬프트가 포함되어 있습니다.
사용 사례: 명령어 출력에서 코딩 에이전트의 토큰 사용량 줄이기
사용 사례: Codex, Gemini CLI, Cursor 및 기타 에이전트를 위한 RTK 설정하기