캐싱 없음: [System 10k] + [History 60k] + [새 메시지] = 70k 토큰 과금
캐싱 있음: [캐시 히트 69k] + [새 메시지 1k] = 1k 토큰 과금 (나머지는 캐시 요금)SOUL.md — 페르소나/성격 정의
USER.md — 사용자 프로필 (이름, 직책, 배경)
AGENTS.md — 행동 규칙 및 지침
MEMORY.md — 장기 기억 (학습한 것들)
HEARTBEAT.md — 주기적 체크리스트
IDENTITY.md — 어시스턴트 정체성
도구 목록 — 사용 가능한 skill 목록아침 인사 cron → System Prompt 10k 토큰
10분 후 heartbeat → 또 10k 토큰
20분 후 대화 → 또 10k 토큰 (히스토리 포함 50k+)초반 (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분]──
↑ 캐시 갱신 ↑ 갱신 ↑ 갱신
→ 캐시가 절대 만료되지 않음 ✅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 도달 시 → 새 세션 시작# 현재 세션 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 활성화로 주기적 모니터링