이 가이드는 GEODE의 LLM 호출 비용을 추적하고 예산을 설정하는 방법입니다.
비용 추적 경로
- 실시간:
LLM_CALL_ENDhook (per-call 토큰·달러). - 누적 (런타임):
geode /status(현재 세션 + 일일). - append-only ledger:
~/.geode/usage/<date>.jsonl(v0.66+ 도입). - per-call assertion:
core.audit.diagnostics.CallDiagnostic(v0.92+, Observability 참조).
Usage ledger 스키마
# ~/.geode/usage/2026-05-12.jsonl 한 줄
{
"ts": "2026-05-12T10:42:13.482Z",
"run_id": "r-abc123",
"call_seq": 4,
"provider": "anthropic",
"model": "claude-opus-4-7",
"input_tokens": 1284,
"output_tokens": 482,
"cache_read_tokens": 28104,
"cache_write_tokens": 0,
"reasoning_tokens": 1872,
"cost_usd": 0.0127,
"cost_breakdown": {
"input": 0.00385,
"output": 0.00723,
"cache_read": 0.00084,
"cache_write": 0,
"reasoning": 0.00281
},
"latency_ms": 4218,
"audit_mode": false
}v0.90 dual-record 수정
v0.90.0 이전, codex와 glm 어댑터가 같은 호출을 ledger에 두 번 기록해 token/cost가 50-64% 과잉 카운팅됐습니다.token_tracker.dedup_by_call_id() 도입으로 수정. 기존 ledger를 다시 합산하려면 history 명령으로 재집계 가능.
예산 설정
# config.toml [budget] per_session_usd = 1.0 per_day_usd = 10.0 on_exceed = "downgrade" # downgrade | stop | warn
모델 다운그레이드 전략
예산 초과 임박 시 자동으로 더 싼 모델로 전환합니다.
- Anthropic: opus 4.7 → opus 4.6 → sonnet 4.6 → haiku 4.5
- OpenAI: gpt-5.5 → gpt-5.4 → gpt-5.4-mini → gpt-5-mini
- GLM: glm-5.1 → glm-5 → glm-5-turbo → glm-4.7 → glm-4.7-flash
수동 전환
geode /model claude-haiku-4-5 geode /model glm-4.7-flash
유용한 jq one-liner
# 오늘 총 비용
jq -s '[.[] | .cost_usd] | add' ~/.geode/usage/$(date +%F).jsonl
# 모델별 토큰 합계
jq -s 'group_by(.model) | map({model: .[0].model, total: (map(.input_tokens + .output_tokens) | add)})' ~/.geode/usage/$(date +%F).jsonl
# 캐시 hit 호출만
jq -c 'select(.cache_read_tokens > 0)' ~/.geode/usage/$(date +%F).jsonl참조: Observability, Context System (200K guard), wiki/concepts/geode-context-guard.md.