codeburn: AI 코딩 토큰 사용량 추적 도구
요약
CodeBurn은 25개 이상의 AI 코딩 도구에 대한 토큰 사용량, 비용 및 성능을 추적하는 로컬 실행 도구입니다. API 키나 프록시 없이 디스크의 세션 데이터를 직접 읽어 프로젝트 및 모델별 지출 내역을 세분화하여 제공합니다.
핵심 포인트
- 25개 이상의 다양한 AI 코딩 도구 지원
- 로컬 실행 방식으로 보안 및 프라이버시 유지
- LiteLLM을 활용한 정확한 모델별 비용 책정
- 대시보드를 통한 기간별 사용량 및 최적화 분석
당신의 AI 코딩 토큰이 어디로 가는지 확인하세요.
CodeBurn은 25개의 AI 코딩 도구 (AI coding tools) 전반에 걸친 토큰 사용량, 비용 및 성능을 추적합니다. 작업 유형, 모델, 도구, 프로젝트 및 제공업체별로 지출 내역을 세분화하여 예산이 정확히 어디에 사용되는지 확인할 수 있습니다.
모든 기능은 로컬에서 실행됩니다. 래퍼 (wrapper), 프록시 (proxy), API 키가 필요하지 않습니다. CodeBurn은 디스크에서 세션 데이터를 직접 읽으며, LiteLLM을 사용하여 모든 호출의 가격을 책정합니다.
대시보드 (Dashboard) |
메뉴 바 (Menu Bar) |
최적화 (Optimize) |
비교 (Compare) |
- Node.js 20+
- 디스크에 세션 데이터가 있는 최소 하나 이상의 지원되는 AI 코딩 도구
- Cursor 및 OpenCode 지원을 위해,
better-sqlite3
는 선택적 의존성 (optional dependency)으로 자동 설치됩니다.
npm install -g codeburn
또는 Homebrew를 사용하여:
brew install codeburn
또는 설치 없이 직접 실행:
npx codeburn
bunx codeburn
dx codeburn
codeburn # 대화형 대시보드 (기본값: 7일)
codeburn today # 오늘의 사용량
codeburn month # 이번 달 사용량
...
방향키를 사용하여 오늘 (Today), 7일 (7 Days), 30일 (30 Days), 한 달 (Month), 6개월 (6 Months) 사이를 전환할 수 있습니다 (정확한 과거 기간을 지정하려면 --from / --to를 사용하세요). q를 눌러 종료하고, 1, 2, 3, 4, 5를 단축키로 사용할 수 있으며, c를 눌러 모델 비교 (model comparison)를 열고, o를 눌러 최적화 (optimize)를 열 수 있습니다. 대시보드는 기본적으로 30초마다 자동으로 새로고침됩니다 (--refresh 0으로 비활성화 가능). 또한 모든 프로젝트에 걸쳐 세션당 평균 비용과 가장 비용이 많이 발생한 5개의 세션을 보여줍니다.
| 제공업체 (Provider) | 지원 여부 (Supported) | 문서 (Doc) | |
|---|---|---|---|
| Claude Code | 예 (Yes) | claude.md | |
| Claude Desktop | 예 (Yes) | claude.md | |
| Cline | 예 (Yes) | cline.md | |
| Codex (OpenAI) | 예 (Yes) | codex.md | |
| Cursor | 예 (Yes) | cursor.md | |
| cursor-agent | 예 (Yes) | cursor-agent.md | |
| Forge | 예 (Yes) | forge.md | |
| Gemini CLI | 예 (Yes) | gemini.md | |
| Mistral Vibe | 예 (Yes) | mistral-vibe.md | |
| GitHub Copilot | 예 (Yes) | copilot.md | |
| IBM Bob | 예 (Yes) | ibm-bob.md | |
| Kiro | 예 (Yes) | kiro.md | |
| OpenCode | 예 (Yes) | opencode.md | |
| OpenClaw | 예 (Yes) | openclaw.md | |
| Pi | 예 (Yes) | pi.md | |
| OMP (Oh My Pi) | 예 (Yes) | omp.md | |
| Droid | 예 (Yes) | droid.md | |
| Roo Code | 예 (Yes) | roo-code.md | |
| KiloCode | 예 (Yes) | kilo-code.md | |
| Qwen | 예 (Yes) | qwen.md | |
| Kimi Code CLI | 예 (Yes) | kimi.md | |
| Goose | 예 (Yes) | goose.md | |
| Antigravity | 예 (Yes) | antigravity.md | |
| Crush | 예 (Yes) | crush.md | |
| Warp | 예 (Yes) | warp.md |
각 제공업체 문서에는 정확한 데이터 위치, 저장 형식 및 알려진 특이 사항(quirks)이 나열되어 있습니다. Linux 및 Windows 경로는 자동으로 감지됩니다. 경로가 변경되었거나 잘못된 경우 이슈를 열어주십시오.
제공업체 로고는 각 소유자의 상표입니다. 아이콘 세트는 tokscale (MIT), 공식 공급업체 자산, 그리고 간단한 제공업체 식별자에서 가져왔으며, 지원되는 도구를 식별하는 목적의 명칭적 공정 사용(nominative fair use) 하에 사용되었습니다.
CodeBurn은 사용자가 어떤 AI 코딩 도구를 사용하는지 자동으로 감지합니다. 여러 제공업체가 디스크에 세션 데이터를 가지고 있는 경우, 대시보드에서 p를 눌러 간편하게 전환할 수 있습니다.
--provider 플래그는 모든 명령을 단일 제공업체로 필터링합니다: codeburn report --provider claude, codeburn today --provider codex, codeburn export --provider cursor와 같이 사용할 수 있습니다.
다음 명령어에도 적용됩니다: report, today, month, status, export, optimize, compare, yield.
Cursor는 로컬 SQLite 데이터베이스에서 토큰 사용량을 읽어옵니다. Cursor의 "Auto" 모드는 실제 사용된 모델을 숨기기 때문에, 비용은 Sonnet 가격을 기준으로 추정됩니다(대시보드에는 "Auto (Sonnet est.)"로 표시됨). Cursor는 개별 도구 호출(tool calls)을 기록하지 않으므로, Cursor 뷰에서는 Core Tools/Shell/MCP 패널 대신 Languages 패널을 보여줍니다. 대규모 Cursor 데이터베이스에서 처음 실행할 때는 최대 1분이 소요될 수 있지만, 결과는 캐싱(cached)되므로 이후 실행은 즉시 이루어집니다.
Gemini CLI는 세션을 단일 JSON 파일로 저장합니다. 각 세션은 메시지당 실제 토큰 수(입력, 출력, 캐시됨, 사고 과정(thoughts))를 포함하고 있어 별도의 추정이 필요하지 않습니다. Gemini는 캐시된 토큰을 포함하여 입력 토큰을 보고하지만, CodeBurn은 이중 과금을 방지하기 위해 가격 책정 전 입력에서 캐시된 토큰을 제외합니다.
Antigravity CLI는 agy가 실행되는 동안 수명이 짧은 로컬 프로세스를 통해 정확한 사용량을 노출합니다. 메뉴바의 30초 새로고침 주기를 놓치는 짧은 CLI 세션까지 캡처하려면 codeburn antigravity-hook install로 선택적 라이브 훅(live hook)을 설치하세요. 이 훅은 프롬프트나 로컬 작업 디렉토리 경로가 아닌, 정제된(sanitized) 총 사용량만을 저장합니다. codeburn antigravity-hook uninstall로 제거할 수 있으며, 만약 --force가 기존의 statusLine 명령을 대체했다면, 삭제 시 이전 명령으로 복구됩니다.
Mistral Vibe는 세션을 ~/.vibe/logs/session/ (또는 $VIBE_HOME/logs/session/) 하위의 폴더로 저장합니다. CodeBurn은 meta.json에서 누적된 프롬프트/완성(completion) 합계와 모델 가격을 읽은 다음, messages.jsonl에서 첫 번째 사용자 프롬프트와 어시스턴트 도구 호출(assistant tool calls)을 읽습니다. agents/ 하위의 서브에이전트(Subagent) 세션은 별도의 Vibe 세션으로 계산됩니다.
Kiro는 대화를 .chat JSON 파일로 저장합니다. 토큰 수는 콘텐츠 길이를 바탕으로 추정됩니다. 기반 모델이 노출되지 않으므로 세션은 kiro-auto로 표시되며 Sonnet 요율로 비용이 계산됩니다.
GitHub Copilot은 ~/.copilot/session-state/ (레거시 CLI)와 VS Code/VSCodium의 workspaceStorage/*/GitHub.copilot-chat/transcripts/ 모두에서 데이터를 읽어옵니다.
에디터 트랜스크립트 (transcript) 형식에는 명시적인 토큰 수 (token counts)가 없습니다. 토큰은 콘텐츠 길이를 통해 추정되며, 모델은 도구 호출 (tool call) ID 접두사를 통해 추론됩니다.
OpenClaw는 ~/.openclaw/agents/에서 JSONL 에이전트 로그를 읽어옵니다.
또한 레거시 경로 (.clawdbot, .moltbot, .moldbot)도 확인합니다.
Warp는 Warp의 로컬 warp.sqlite에서 Oz 에이전트 세션을 읽어옵니다. 교환 (exchange) 레벨의 토큰 할당은 대화 총합으로 정규화된 프롬프트 크기 가중치를 통해 추정되며, run_command 블록은 타임스탬프를 기준으로 가장 가까운 이전 교환에 연결됩니다.
Forge는 ~/.forge/.forge.db에서 대화를 읽어옵니다. 어시스턴트 사용 항목은 프롬프트 (prompt), 완료 (completion), 캐시된 토큰 (cached token) 수를 제공합니다. CodeBurn은 어시스턴트 메시지당 하나의 호출을 생성하여 사용량을 출력하고, 세부 분석을 위해 도구 호출 (tool calls)을 정규화합니다.
Roo Code 및 KiloCode는 Cline 계열의 VS Code 확장 프로그램입니다. CodeBurn은 각 작업 디렉토리에서 ui_messages.json을 읽고 api_req_started 항목에서 토큰 사용량을 추출합니다.
여러 설정 디렉토리를 사용하는 Claude. 만약 하나 이상의 계정이나 프로필(예: ~/.claude-work 및 ~/.claude-personal)로 Claude Code를 실행하는 경우, CLAUDE_CONFIG_DIRS를 사용하여 이들을 한 번에 지정하십시오: CLAUDE_CONFIG_DIRS=~/.claude-work:~/.claude-personal codeburn. 모든 디렉토리에 걸친 세션은 프로젝트당 하나의 행으로 병합되어, 총합이 사용자의 모든 Claude 사용량을 한곳에 반영합니다. POSIX에서는 :를, Windows에서는 ;를 사용하십시오. 목록에 있는 디렉토리 중 누락되었거나 읽을 수 없는 디렉토리는 건너뜁니다.
새로운 프로바이더 (provider)를 추가하는 것은 단일 파일 작업입니다. 예시는 src/providers/codex.ts를 참조하십시오.
입력, 출력, 캐시 읽기, 캐시 쓰기 및 웹 검색 토큰 수를 사용하여 모든 API 호출의 가격을 책정합니다. Claude를 위한 빠른 모드 (fast mode) 승수를 적용합니다. 가격 정보는 LiteLLM에서 가져오며 24시간 동안 로컬에 캐싱됩니다. 잘못된 가격 책정을 방지하기 위해 모든 Claude 및 GPT 모델에 대해 하드코딩된 폴백 (fallback) 값을 사용합니다.
도구 사용 패턴과 사용자 메시지 키워드로부터 분류된 13개의 카테고리입니다. LLM 호출 없이 완전히 결정론적 (deterministic)으로 작동합니다.
| 카테고리 | 트리거 조건 |
|---|---|
| 코딩 (Coding) | 편집 (Edit), 작성 (Write) 도구 |
| ... |
일일 비용 차트, 프로젝트별, 모델별 (Opus, Sonnet, Haiku, GPT-5, GPT-4o, Gemini, Kiro 등), 활동별 원샷 비율 (one-shot rate), 핵심 도구, 셸 명령 (shell commands), 그리고 MCP 서버.
코드 편집을 포함하는 카테고리의 경우, CodeBurn은 파일 인지 재시도 사이클 (file-aware retry cycles)을 추적합니다. 재시도 (retry)란 중간에 셸 명령이 실행된 후 동일한 파일이 다시 편집되는 경우를 의미합니다 (예: foo.ts 편집, Bash 실행, foo.ts 편집). 셸 단계 전반에 걸쳐 서로 다른 파일을 편집하는 것은 재시도가 아닙니다. 원샷 (one-shot) 열은 재시도 없이 성공한 편집 턴 (edit turns)의 비율을 보여줍니다. 코딩 원샷 비율이 90%라는 것은 AI가 10번 중 9번은 첫 시도에 정확히 수행했음을 의미합니다. 파일 수준의 추적은 Claude, Codex, Goose에서 사용할 수 있으며, 다른 제공업체는 도구 이름 기반 탐지 (tool-name-based detection)로 대체됩니다.
LiteLLM 모델 가격에서 가져옵니다 (~/.cache/codeburn/에 24시간 동안 자동 캐싱됨).
입력, 출력, 캐시 쓰기 (cache write), 캐시 읽기 (cache read), 그리고 웹 검색 비용을 처리합니다. Claude를 위한 Fast mode 승수 (multiplier)가 적용됩니다. 모호한 매칭으로 인한 가격 오류를 방지하기 위해 모든 Claude 및 GPT-5 모델에 대해 하드코딩된 폴백 (fallbacks)이 적용됩니다.
codeburn optimize # 지난 30일간 스캔
codeburn optimize -p today # 오늘만
codeburn optimize -p week # 지난 7일
...
세션과 ~/.claude/ 설정을 스캔하여 낭비 패턴을 찾아냅니다:
- Claude가 세션 전반에 걸쳐 반복해서 다시 읽는 파일 (동일한 내용, 동일한 컨텍스트가 반복됨)
- 낮은 읽기:편집 (Read:Edit) 비율 (읽기 없이 편집하면 재시도가 발생하고 토큰이 낭비됨)
- 낭비되는 bash 출력 (
BASH_MAX_OUTPUT_LENGTH제한 없음, 후행 노이즈) - 사용하지 않는 MCP 서버가 매 세션마다 여전히 도구 스키마 (tool-schema) 오버헤드를 발생시키는 경우
~/.claude/에 정의되어 있지만 한 번도 호출되지 않은 유령 에이전트 (Ghost agents), 기술 (skills), 그리고 슬래시 명령 (slash commands)- 비대해진
CLAUDE.md파일 (@-import확장이 포함됨) - 캐시 생성 오버헤드 및 정크 디렉토리 읽기
- 유효한 입력/캐시 토큰이 출력을 압도하는 컨텍스트 과부하 세션
git또는gh전달 명령이 관찰되지 않는, 편집 턴이 없거나 반복적인 재시도가 발생하는 가치가 낮은 고비용 세션
각 결과(finding)는 예상되는 토큰 및 비용 절감액과 함께 즉시 붙여넣어 사용할 수 있는 해결책을 제공합니다: CLAUDE.md 라인, 환경 변수(environment variable), 또는 사용하지 않는 항목을 보관하기 위한 mv 명령어가 이에 해당합니다. 결과는 긴급도(관찰된 낭비 대비 영향도 가중치 적용)에 따라 순위가 매겨지며, A부터 F까지의 설정 상태 등급(setup health grade)으로 통합됩니다. 반복 실행 시 각 결과는 최근 48시간의 윈도우(window)를 기준으로 '새로운(new)', '개선됨(improving)', 또는 '해결됨(resolved)'으로 분류됩니다.
대시보드에서 인라인(inline)으로 열 수도 있습니다: 상태 표시줄에 결과 수가 나타나면 o를 눌러 열고, b를 눌러 돌아옵니다.
codeburn compare # 대화형 모델 선택기 (기본값: 최근 6개월)
codeburn compare -p week # 최근 7일
codeburn compare -p today # 오늘만
...
또는 대시보드에서 c를 눌러 비교 모드(compare mode)에 진입할 수 있습니다. 화살표 키로 기간을 전환하고, b를 눌러 돌아옵니다.
| 섹션 | 지표 | 측정 내용 |
|---|---|---|
| 성능 (Performance) | 원샷 비율 (One-shot rate) | 재시도 없이 성공한 편집 |
| ... | ||
| 또한 카테고리별 원샷 비율(one-shot rates), 위임 비율(delegation rate), 계획 비율(planning rate), 턴당 평균 도구 사용량(average tools per turn), 그리고 패스트 모드(fast mode) 사용량을 비교합니다. |
codeburn yield # 최근 7일 (기본값)
codeburn yield -p today # 오늘만
codeburn yield -p 30days # 최근 30일
...
타임스탬프(timestamp)를 기준으로 AI 세션과 git 커밋을 상관 분석합니다:
| 카테고리 | 의미 |
|---|---|
| 생산적 (Productive) | 이 세션의 커밋이 main에 반영됨 |
| ... | |
git 저장소(repository)가 필요합니다. 프로젝트 디렉토리에서 실행하세요. |
codeburn plan set claude-max # 월 $200
codeburn plan set claude-pro # 월 $20
codeburn plan set cursor-pro # 월 $20
...
Claude Pro, Claude Max, Cursor Pro 및 사용자 정의 제공자 요금제(custom provider plans)에 대한 구독 추적을 지원합니다. 요금제는 제공자별로 저장되므로 Claude와 Codex/Cursor 구독을 동시에 추적할 수 있습니다. 대시보드는 활성화된 제공자 요금제당 하나의 초과 사용량 라인(overage line)을 보여줍니다. 레거시/사용자 정의 all
plan은 단일 통합 요금제(aggregate plan)로 유지되며, 특정 제공자 전용 요금제(provider-specific plan)를 추가하면 교체되어 초과 사용량 행이 중복 계산되는 것을 방지합니다. 기존의 단일 요금제 설정은 여전히 폴백(fallback) 용도로 읽힙니다. 프리셋(Presets)은 공개된 요금제 가격(2026년 4월 기준)을 사용합니다. 벤더(vendor)들이 소비자용 요금제의 정확한 토큰 허용량을 공개하지 않기 때문에, 정확한 토큰 허용량을 모델링하지는 않습니다.
codeburn currency GBP # 영국 파운드로 설정
codeburn currency AUD # 호주 달러로 설정
codeburn currency JPY # 일본 엔로 설정
...
모든 ISO 4217 통화 코드(162개 통화)를 지원합니다. 환율은 Frankfurter(유럽 중앙은행 데이터, 무료, API 키 불필요)에서 가져오며 24시간 동안 캐싱(cached)됩니다. 설정은 ~/.config/codeburn/config.json에 저장됩니다.
통화 설정은 대시보드, 상태 표시줄(status bar), 메뉴 바, CSV/JSON 내보내기, 그리고 JSON API 출력 등 모든 곳에 적용됩니다.
만약 일부 모델에 대해 $0.00이 표시된다면, 제공자가 보고하는 모델 이름이 LiteLLM 가격 데이터의 항목과 일치하지 않는 것입니다. 이는 모델 이름을 재작성(rewrite)하는 프록시(proxy)를 사용할 때 흔히 발생합니다.
codeburn model-alias "my-proxy-model" "claude-opus-4-6" # 별칭(alias) 추가
codeburn model-alias --list # 설정된 별칭 표시
codeburn model-alias --remove "my-proxy-model" # 별칭 제거
별칭은 ~/.config/codeburn/config.json에 저장되며, 가격 조회 전 런타임(runtime)에 적용됩니다. 대상 이름은 LiteLLM 모델 목록에 있는 것이라면 무엇이든 가능하며, 폴백 테이블(fallback table)의 정식 명칭(예: claude-sonnet-4-6, claude-opus-4-5, gpt-4o)을 사용할 수 있습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub Codex tools의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기