캐싱 없음: [System 10k] + [History 60k] + [새 메시지] = 70k 토큰 과금
캐싱 있음: [캐시 히트 69k] + [새 메시지 1k] = 1k 토큰 과금 (나머지는 캐시 요금)종류 | 요금 (per 1M tokens) | 비율 |
일반 Input | $3.00 | 100% |
Cache Write | $3.75 | 125% |
Cache Read | $0.30 | 10% |
Output | $15.00 | 500% |
SOUL.md — 페르소나/성격 정의
USER.md — 사용자 프로필 (이름, 직책, 배경)
AGENTS.md — 행동 규칙 및 지침
MEMORY.md — 장기 기억 (학습한 것들)
HEARTBEAT.md — 주기적 체크리스트
IDENTITY.md — 어시스턴트 정체성
도구 목록 — 사용 가능한 skill 목록아침 인사 cron → System Prompt 10k 토큰
10분 후 heartbeat → 또 10k 토큰
20분 후 대화 → 또 10k 토큰 (히스토리 포함 50k+)호출 # | Cache Read | Cache Write | 실제 비용 | 캐싱 없었다면 |
1 | 8,590 tok | 11,772 tok | $0.047 | ~$0.094 |
2 | 8,590 tok | 12,045 tok | $0.049 | ~$0.094 |
3 | 20,635 tok | 6,395 tok | $0.036 | ~$0.162 |
4 | 27,468 tok | 266 tok | $0.011 | ~$0.207 |
5 | 27,734 tok | 838 tok | $0.013 | ~$0.210 |
... | ... | ... | ... | ... |
16 | 69,836 tok | 455 tok | $0.025 | ~$0.527 |
17 | 70,291 tok | 1,126 tok | $0.032 | ~$0.531 |
초반 (8k 캐시): 절약률 ~50%
중반 (28k 캐시): 절약률 ~70%
후반 (70k 캐시): 절약률 ~87%{
"agents": {
"defaults": {
"models": {
"anthropic/claude-sonnet-4-5-20250929": {
"params": {
"cacheRetention": "long"
}
},
"anthropic/claude-haiku-4-5": {
"alias": "haiku",
"params": {
"cacheRetention": "long"
}
}
}
}
}
}{
"diagnostics": {
"cacheTrace": {
"enabled": true,
"includeSystem": true,
"includeMessages": false,
"includePrompt": false
}
}
}{
"agents": {
"defaults": {
"contextPruning": {
"mode": "cache-ttl",
"ttl": "1h"
}
}
}
}# 설정 파일 직접 편집 후
openclaw gateway restart
# 또는 OpenClaw에게 요청
"config.patch로 cacheRetention: long 적용해줘"50회 × 10,000 토큰 × $3.00/1M = $1.50/일
월간: ~$45대화가 5분 이상 끊기면 캐시 만료
Heartbeat가 1시간마다 → 매번 새 캐시 Write
Write 비용 포함 시 절약 효과 제한적
월간: ~$20 (약 55% 절약)1시간 동안 모든 호출이 캐시 히트
Heartbeat, cron, 대화 모두 혜택
Write는 1시간에 1~2번만 발생
월간: ~$5 (약 89% 절약)"heartbeat": {
"every": "59m"
}캐시 만료선: ─────────────────────────────[60분]
Heartbeat: ──[59분]──[118분]──[177분]──
↑ 캐시 갱신 ↑ 갱신 ↑ 갱신
→ 캐시가 절대 만료되지 않음 ✅패턴 | 5분 캐싱 | 1시간 캐싱 |
Heartbeat (59분마다) | ❌ 매번 캐시 미스 | ✅ 캐시 히트 |
Cron job (야간 리서치) | ⚠️ 실행 간격 따라 다름 | ✅ 안정적 히트 |
빠른 연속 대화 | ✅ 히트 | ✅ 히트 |
30분 자리 비운 후 재개 | ❌ 캐시 미스 | ✅ 캐시 히트 |
아침 cron → 점심 대화 | ❌ 미스 | ✅ 히트 (1시간 내) |
SOUL.md + USER.md + AGENTS.md → 앞부분에 배치 (캐싱 대상)
동적 컨텐츠(오늘 날짜, 실시간 데이터) → 뒷부분에 배치매 요청마다 MEMORY.md를 완전히 새로 생성 → 캐시 무효화
System Prompt 앞부분에 타임스탬프 넣기 → 캐시 미스 유발{
"sessionTarget": "isolated",
"payload": {
"kind": "agentTurn",
"message": "CRON.md의 '아침 인사' 섹션을 따라 실행"
}
}❌ Bad: "Read workflows/WORKFLOW_MORNING_GREETING.md (350줄) and execute"
✅ Good: "Read CRON.md의 '아침 인사' 섹션을 따라 실행" (CRON.md = 30줄)컨텍스트 180k 도달 시 → 새 세션 시작작업 | 권장 모델 | 이유 |
복잡한 분석 | Sonnet 4.5 | 품질 필요 |
Heartbeat 체크 | Haiku 4.5 | 단순 작업, 훨씬 저렴 |
Cron 요약 | Haiku 4.5 | 반복 작업, 비용 절감 |
코딩/디버깅 | Sonnet 4.5 | 정확도 필요 |
# 현재 세션 ID 확인 (OpenClaw webchat에서)
# 세션 파일 경로:
/Users/myhome/.openclaw/agents/main/sessions/<session-id>.jsonl
# cacheRead/cacheWrite 필터링
grep "cacheRead\|cacheWrite" <session>.jsonl | python3 -c "
import sys, json
for line in sys.stdin:
d = json.loads(line)
if d.get('type') == 'message':
u = d['message'].get('usage', {})
if u.get('cacheRead', 0) > 0:
print(f\"히트: {u['cacheRead']:,} tok read, {u['cacheWrite']:,} tok write\")
"cacheRead > 0 → ✅ 캐시 히트 (절약 발생)
cacheRead = 0 → ❌ 캐시 미스 (전체 input 비용 발생)
cacheWrite 급증 → 새 캐시 생성 (첫 요청 또는 캐시 갱신)요청 1: cacheRead=8,590 cacheWrite=11,772 ← 첫 요청, Write 비쌈
요청 2: cacheRead=8,590 cacheWrite=12,045 ← 캐시 히트!
요청 3: cacheRead=27,468 cacheWrite=266 ← 대부분 히트, 소폭 Write
...
요청 16: cacheRead=69,836 cacheWrite=455 ← 92% 절약 구간# 오늘의 캐시 절약 금액 추정
grep -a "cacheRead" ~/.openclaw/agents/main/sessions/<id>.jsonl | \
python3 -c "
import sys, json
total_saved = 0
for line in sys.stdin:
try:
d = json.loads(line)
u = d.get('message', {}).get('usage', {})
cr = u.get('cacheRead', 0)
# 캐시 Read vs 일반 Input 차이: $3.00 - $0.30 = $2.70/1M
saved = cr * 2.70 / 1_000_000
total_saved += saved
except: pass
print(f'절약 금액: \${total_saved:.4f}')
"✅ openclaw.json에 cacheRetention: "long" 설정
✅ contextPruning mode: "cache-ttl", ttl: "1h" 설정
✅ Cron job은 isolated session으로 실행
✅ 워크플로우 파일을 짧게 유지 (CRON.md 분리 전략)
✅ 컨텍스트 180k 도달 시 새 세션 시작
✅ 단순 반복 작업은 Haiku 모델 사용
✅ diagnostics.cacheTrace 활성화로 주기적 모니터링