에이전트 토큰 최적화 (Agent Token Optimization)
AI 에이전트에서 토큰 비용의 대부분은 “생성(출력)“이 아니라 “읽기(입력)“에서 발생한다. CLI 출력·API 응답·파일 반복 읽기·대화 히스토리·시스템 프롬프트 순으로 소비되며, 각 소비처를 구체적 도구와 습관으로 줄이는 5가지 전략이 있다.
토큰 소비처 구조
“코드를 짜는 데 드는 토큰”보다 “코드를 짜기 위해 읽는 것에 드는 토큰”이 더 많다.
| 순위 | 소비처 | 원인 | 대책 |
|---|---|---|---|
| 1 | CLI 출력 | git status 2,000자, 실 필요 20~30% | RTK 사용 |
| 2 | API 응답 | 필요 3필드에 20필드 딸려옴 | 필드 선택 쿼리 |
| 3 | 파일 반복 읽기 | AGENTS.md 세션 중 3~4회 재읽기 | offset/limit 부분 읽기 |
| 4 | 대화 히스토리 | 처리 끝난 결과가 계속 컨텍스트 차지 | 능동적 compact |
| 5 | 시스템 프롬프트 | 매 턴마다 6개 파일 전체 주입 | 파일 내용 다이어트 |
(출처: bbojjak-openclaw-token-optimization-lesson16)
전략 1: RTK — CLI 출력 압축
RTK (Rust Token Killer): CLI 명령 앞에 rtk를 붙이면 출력에서 노이즈를 제거해 60~90% 절감.
git status → 2,074자
rtk git status → 457자 (78% 감소)지원 명령: git status/diff/log/show, ls, find, grep, curl (JSON), docker, kubectl 등 30개+
설치:
brew install rtk-ai/tap/rtk
rtk init --globalHook vs 지침 — 환경별 RTK 적용
RTK를 적용하는 방식은 실행 환경에 따라 다르다:
| 환경 | 방식 | 에이전트 인지 여부 |
|---|---|---|
| Claude Code | PreToolUse hook 자동 치환 | 치환 인식 안 함 |
| OpenClaw | AGENTS.md 지침으로 직접 실행 | 규칙 읽고 스스로 실행 |
OpenClaw AGENTS.md 지침 예시:
## RTK (토큰 절약)
CLI 명령 실행 시 rtk 접두어를 붙인다.
적용: git status/diff/log, ls, find, grep, curl
미적용: bun run, npm run, 파이프라인 중간 명령
교훈: hook(자동화)이 안 되면 AGENTS.md 지침(규칙)으로 동일한 효과를 낼 수 있다. 이는 harness-engineering의 “지침 vs 시스템 2중 방어선” — 시스템(2차 방어선)이 불가할 때 지침(1차 방어선)이 대안이 된다.
전략 2: 능동적 Compact
agent-memory-architecture에서 정의한 컴팩션(자동 압축)은 95% 도달 시 자동 발동된다. 이 시점은 “이미 늦다” — 중요 맥락이 유실될 수 있다.
능동적 compact 규칙:
- 10만 토큰 → 능동적으로 compact 실행
- 15만 토큰 → memory/ 파일에 중요 내용 기록 후 세션 정리
/status 명령으로 현재 토큰 사용량 확인 가능.
전략 3: 서브에이전트 Sonnet 위임
리서치·데이터 조회 등 무거운 작업을 subagent-orchestration의 서브에이전트로 위임하면:
- Sonnet 모델 기본 사용 → Opus 대비 1/5 비용
- 새 컨텍스트에서 시작 → 히스토리 누적 없음
- 본체 세션 컨텍스트 절약
실전 데이터: 뽀짝이 하트비트가 27% 차지 → Sonnet으로 전환하면 비용 1/5로 감소.
전략 4: read offset/limit 부분 읽기
대형 파일 전체를 읽지 않고 필요한 부분만 읽는다:
Read(file_path="agents.md", offset=50, limit=100)
500줄 파일에서 100줄만 필요하면 80% 절감.
전략 5: NO_REPLY 출력 최소화
반응이 불필요한 메시지(다른 에이전트에게 온 메시지가 참조용으로 전달된 경우 등)에는 NO_REPLY로 응답을 생략한다. 답변 생성 자체가 토큰 소비이므로, 할 말이 없으면 아끼는 것도 최적화다.
실전 데이터 (2026-02-26 ~ 2026-03-11)
14일·3개 에이전트(뽀짝이·뽀야·닿플갱어) 분석:
| 지표 | 값 |
|---|---|
| 총 API 환산 비용 | $928 |
| 뽀짝이 비중 | 75% ($700) |
| 하트비트 비중 | 27% (1위) |
| Opus 비중 | 85% |
| 최고 단일 세션 | $73 (1,329 calls) |
도출된 개선 액션:
- 하트비트 → Sonnet으로 전환 (27%를 1/5로)
- AGENTS.md 390줄 → 161줄로 다이어트 (매 턴 절감)
- 장시간 세션 → 능동적 분할 ($73짜리 단일 세션 방지)
토큰 모니터링 도구
/status: 현재 세션의 입력/출력/캐시 히트/컨텍스트 사용량 확인rtk gain: RTK로 누적 절약한 토큰량 확인
세션 스티킨스와 Prompt Caching
agent-resilience-design의 세션 스티킨스(Session Stickiness) 설계가 토큰 비용에도 직접 영향을 미친다. (출처: bbojjak-openclaw-resilience-failover-lesson19)
한번 선택된 계정을 세션 끝까지 유지하면 → Prompt Caching 캐시 히트 → 시스템 프롬프트·이전 대화 90% 할인. 매 요청 계정 변경 → 캐시 미스 → 전액 과금.
즉: 장애 대응(세션 스티킨스)과 비용 최적화(캐시 보존)가 같은 설계 결정에서 나온다.
관련 개념
-
harness-engineering — hook vs AGENTS.md 지침 대안; 2중 방어선 실전
-
agent-memory-architecture — 컴팩션 메커니즘; 능동적 compact 전략; Prompt Caching
-
subagent-orchestration — 서브에이전트 Sonnet 위임으로 비용 절감
-
agent-runtime-architecture — 시스템 프롬프트 매 턴 주입 = 토큰 기본 비용
-
agent-error-learning-loop — AGENTS.md 규칙 추가 루프; RTK 지침도 동일 패턴
-
agent-resilience-design — 세션 스티킨스+Prompt Caching; 작업별 모델 분리; 장애 복원력
소스
- bbojjak-openclaw-token-optimization-lesson16
- bbojjak-openclaw-resilience-failover-lesson19 (세션 스티킨스·612 34% 절감 실증)