당신의 AI 코딩 도구들이 Mac에 상세한 로그를 남기고 있습니다. 그 안에는 무엇이 들어있을까요?
요약
Claude Code를 포함한 다양한 AI 코딩 도구들이 Mac 로컬 디스크에 상세한 세션 및 토큰 사용 로그를 남긴다는 사실을 분석합니다. 이 로그를 활용해 프로젝트별 비용을 추산하고 구독 서비스의 가치를 객관적으로 검증하는 방법을 제시합니다.
핵심 포인트
- Claude Code 등 AI 코딩 도구는 세션, 메시지, 토큰 정보를 로컬 JSONL 파일로 저장함
- 캐시 토큰(Cache tokens)이 전체 토큰 사용량의 대부분을 차지하여 비용 절감의 핵심 역할을 함
- jq 명령어를 사용하여 로컬 로그로부터 총 토큰 사용량 및 API 환산 비용을 계산 가능함
- 로그 데이터를 통해 AI 구독 서비스가 실제 사용량 대비 경제적인지 정량적으로 분석할 수 있음
터미널에서 다음을 실행해 보세요:
ls ~/.claude/projects/
Claude Code를 사용한다면, 지금까지 열었던 모든 프로젝트에 대한 폴더를 방금 발견한 것입니다. 각 폴더 내부에는 모든 세션, 모든 메시지, 모든 토큰(token)을 기록하는 JSONL 파일들이 들어있습니다. Codex CLI도 ~/.codex/sessions/에서 동일한 작업을 수행합니다. Cursor, Windsurf, Cline, Aider, Continue 모두 이와 같이 로컬 로그를 유지합니다.
대부분의 개발자는 이러한 파일이 존재하는지조차 모릅니다. 저는 몇 달 동안 이 파일들을 파헤쳐 왔으며, 이들은 진정으로 유용합니다. 그 내용을 살펴보겠습니다.
로그 항목 하나가 어떻게 생겼는지
Claude Code JSONL 파일의 각 줄은 하나의 이벤트입니다. 흥미로운 부분은 usage 블록을 포함하는 어시스턴트(assistant) 메시지입니다:
{
"type": "assistant",
"timestamp": "2026-07-06T21:14:03.812Z",
...
주목할 만한 다섯 가지 사항:
- 모델이 메시지 단위로 기록됩니다. 세션 단위가 아닙니다. 만약 Claude Code가 세션 중간에 모델을 변경했다면, 이 기록에 남습니다.
cwd는 프로젝트 디렉토리입니다. 이 필드 덕분에 프로젝트별 비용 분석이 가능해집니다.- 캐시 토큰(Cache tokens)이 다른 모든 것을 압도합니다.
cache_read_input_tokens숫자를 확인해 보세요. 긴 에이전트형(agentic) 세션에서 캐시 읽기는 통상적으로 전체 토큰의 95% 이상을 차지합니다. 에이전트형 코딩이 비용을 감당할 수 있는 이유가 바로 이것입니다. 캐시 읽기는 입력 가격의 10분의 1로 청구되기 때문입니다. sessionId를 통해 재개할 수 있습니다.claude --resume <sessionId>명령은 정확히 그 대화를 다시 엽니다. 전체 히스토리에 접근할 수 있습니다.- 디스크에 모두 평문(plaintext)으로 저장됩니다. 이에 대한 자세한 내용은 마지막에 다루겠습니다.
한 줄로 토큰 합계 구하기
지금까지 사용한 총 출력 토큰(output token) 수를 알고 싶으신가요? jq를 사용하면 됩니다:
cat ~/.claude/projects/*/*.jsonl 2>/dev/null \
| jq -s '[.[] | .message.usage.output_tokens // 0] | add'
cache_read_input_tokens로 바꿔 넣으면 숫자가 엄청나게 커집니다. 제 경우에는 수십억 단위입니다.
토큰을 달러로 변환하기
공개된 API 가격을 곱하면 로그는 비용 보고서가 됩니다. 현재 Sonnet급 모델에 대한 Anthropic의 100만 토큰당 리스트 가격은 다음과 같습니다: 입력 $3, 출력 $15, 캐시 쓰기 (cache write) $3.75, 캐시 읽기 (cache read) $0.30. 따라서 간단한 추정치는 다음과 같습니다:
cat ~/.claude/projects/*/*.jsonl 2>/dev/null | jq -s '
[.[] | .message.usage // empty] |
(([.[].input_tokens // 0] | add) * 3
...
이 명령은 귀하의 역대 Claude Code 사용량을 API 환산 달러로 출력합니다 (모든 항목에 Sonnet 가격을 적용한다고 가정했을 때의 대략적인 수치). 만약 Pro 또는 Max 구독을 사용 중이라면, 이 수치는 Anthropic이 절대 보여주지 않는 숫자입니다. /cost 명령어는 API 사용자에게만 작동합니다. 이를 구독 요금과 비교하면, 현재 많은 사람들이 데이터 없이 논쟁하고 있는 질문, 즉 '구독이 본인에게 그만한 가치가 있는가'에 대한 답을 얻을 수 있습니다.
Codex 로그는 형태가 다르지만 (rollout 파일 형태이며, usage 객체 내부에 추론 토큰 (reasoning tokens)이 별도로 기록됨), 동일한 원리가 적용됩니다.
모든 도구가 로그를 저장하는 위치
| 도구 | 위치 |
|---|---|
| Claude Code | ~/.claude/projects/ |
| ... |
형식은 다양하지만 (Aider는 litellm을 통해 로그를 남기고, Continue는 일반 JSON을 사용함), 모두 모델과 토큰 수를 기록합니다.
실제로 고민해봐야 할 부분
이 로그에는 귀하의 대화 내용도 포함되어 있습니다: 프롬프트 (prompts), 파일 경로, 프로젝트 이름, 코드 조각들 말입니다. 로컬에 저장되는 것은 괜찮으며, 어쩌면 매우 훌륭한 일일 수도 있습니다. 하지만 이는 두 가지를 의미합니다.
첫째, 홈 디렉토리를 클라우드 서비스에 백업한다면, 귀하의 AI 페어 프로그래밍 (pair-programming) 기록도 함께 넘어갑니다. 알아둘 가치가 있습니다.
둘째, 대시보드를 제공하겠다며 이 파일들을 업로드하려는 모든 "AI 사용량 분석 (AI usage analytics)" 도구를 회의적으로 바라보십시오. 분석 과정에서 서버가 반드시 필요할 것은 없습니다. 그저 곱셈 연산일 뿐입니다.
jq를 실행하는 게 지겨워져서, 직접 대시보드를 만들었습니다
위의 한 줄 명령어(one-liners)들은 저를 매료시켰지만, 동시에 짜증나게도 만들었습니다. 그래서 저는 AI Usage Tracker를 만들었습니다. 이는 모든 로그 형식을 파싱하고, 각 모델별로 모든 제공업체의 가격을 정확하게 산정하며(캐시 및 추론 토큰 포함), 이를 다음과 같은 로컬 대시보드로 시각화해 주는 오픈 소스 (MIT) macOS 앱입니다: 일일 지출, 프로젝트별 비용, 모델별 비용, 피크 시간대 히트맵(heatmap), 그리고 재개 명령어가 포함된 세션 브라우저. Claude와 Codex를 별도로 볼 수 있는 토글 기능이 있어, "내가 실제로 어떤 도구를 더 많이 사용하고 있는가"라는 질문에 빠르게 답을 내려줍니다.
완전한 로컬 방식이며, 텔레메트리(telemetry)나 계정이 필요 없습니다. 소스 코드는 여기에 있습니다:
https://github.com/658jjh/claude-usage-tracker
소스에서 직접 빌드하는 것은 무료이며, 직접 하기 원치 않는 분들을 위해 9달러의 서명된 빌드(signed build) 버전도 있습니다. 하지만 솔직히 말씀드리면, 제 앱을 전혀 사용하지 않더라도 그냥 그 ls 명령어를 실행해 보세요. 당신의 사용 기록은 지금까지 그곳에 머물러 있었으며, 그 안의 숫자들은 당신이 이 도구들을 사용하는 방식을 아마도 바꿔 놓을 것입니다.
당신의 로그에는 무엇이 들어있나요? 다른 분들의 캐시 읽기 비율(cache-read ratio)도 저만큼 불균형한지 궁금합니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기