
2026/04/14 7:57
Show HN:CodeBurn — タスクごとの Claude Code のトークン使用量分析ツール
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
CodeBurn は、Claude Code、Cursor、OpenCode、Pi、GitHub Copilot、Codex などの AI コーディングアシスタントに伴うコストの追跡、分析および削減のための軽量ユーティリティです。複雑な API キーやラッパーを必要とする競合他社製品と異なり、CodeBurn は LiteLLM ライブラリを使用して、プロバイダー固有のディレクトリ(例:
~/.claude/、~/Library/Application Support/Cursor/ など)からセッションデータを直接読み取り、遅延を引き起こす LLM コールを行うことなく、正確なキャッシュ化された価格情報を取得します。主要なイノベーションは、ローカルのファイル変更を調べることで使用活動を自動的に 13 カテゴリー(コーディング、デバッグ、Git オペレーションなど)に分類し、LLM コールによる遅延を排除できる点にあります。本ツールにはキーボードナビゲーションに対応したインタラクティブな TUI ダッシュボードと macOS メニューバーウィジェットが搭載されており、codeburn、report、status、export コマンドを通じてリアルタイムのコスト洞察および詳細レポートを提供します。プロバイダー(-p/--provider)やプロジェクト(--project、--exclude)によるフィルタリングをサポートし、通貨設定も可能でデフォルトは USD であり ISO 4217 をサポートしています。また、ソースファイルを修正せずに実行可能な修正を提示する不効率を検出するための optimize コマンド(最近の使用履歴を設定可能なウィンドウ内でスキャン)も用意されています。システム要件としては Node.js 20 以上および Cursor 用特定の依存関係である better-sqlite3 が必要です。現時点でネイティブにサポートされているのは Cursor および OpenCode のみですが、プラグインシステムを通じて Amp を追加する予定であり、これがチームに対してプロジェクト固有の AI 支出に対する本質的な財務可視性を提供し、既存のワークフローを変更せずに予算を最適化することを可能にするものです。本文
CodeBurn: AI コーディング トークン追跡ツール
AI コーディングに使用されるトークンの行方を完全に把握できます。タスクタイプ、ツール、モデル、MCP サーバー、プロジェクトごとに詳細な分析が可能です。Claude Code、Codex (OpenAI)、Cursor、OpenCode、Pi、GitHub Copilot をサポートしており、プロバイダプラグインシステムに対応しています。
各アクティビティタイプごとの「ワンショット成功率(初回成功確率)」を計測するため、AI が最初から正しく処理する場面と、編集/テスト/修正の試行回数でトークンを浪費している箇所が一目でわかります。グラデーションチャートやレスポンシブなパネル、キーボードナビゲーションに対応したインタラクティブ TUI デスクトップです。macOS メニューバーウィジェットにも対応しています(SwiftBar 利用)。CSV または JSON へのエクスポート機能も備えています。本ツールはセッションデータをディスクから直接読み取るため、ラッパー也不需要、プロキシ也不需要、API キー也不需要で動作します。
価格情報は LiteLLM から自動取得され(24 時間キャッシュ)、すべてのモデルに対応しています。
インストール
インストールなしで動作することも可能です。
要件
- Node.js 20 以降
- Claude Code (
)~/.claude/projects/ - Codex (
)~/.codex/sessions/ - Cursor
- OpenCode
- Pi (
)~/.pi/agent/sessions/ - GitHub Copilot (
)~/.copilot/session-state/- 注意: Cursor または OpenCode のサポートには、オプションの依存関係として
が自動的にインストールされます。better-sqlite3
- 注意: Cursor または OpenCode のサポートには、オプションの依存関係として
使用法コマンド
codeburn # インタラクティブなダッシュボード(デフォルト: 7 日間) codeburn today # 今日の使用量 codeburn month # 今月の使用量 codeburn report -p 30days # ローリング 30 日間のレポート codeburn report -p all # 記録されたすべてのセッション codeburn report --format json # ダッシュボードの全データを JSON 形式で出力 codeburn report --refresh 60 # 60 秒ごとに自動リフレッシュ codeburn status # コンパクトなワンライナー(今日 + 今月) codeburn status --format json codeburn export # CSV エクスポート(今日、7 日間、30 日間を含む) codeburn export -f json # JSON 形式でのエクスポート codeburn optimize # 無駄な部分を特定し、コピー&ペーストして適用できる修正方法を示す codeburn optimize -p week # スキャン対象を過去 7 日に制限
キーボードナビゲーション
- 矢印キー: 今日 / 7 日間 / 30 日間 / 今月 / 全期間の間で切り替える。
: 終了。q
: ビュー切り替えのためのショートカット。1-5- 機能: セッションごとの平均コストと、すべてのプロジェクトにおける 5 つの最も高コストなセッションを表示します。
JSON 出力形式
report, today, month コマンドでは --format json オプションを使用することで、構造化された JSON 形式のダッシュボード全データを標準出力に出力できます:
codeburn report --format json # 7 日間の JSON レポート codeburn today --format json # 今日のデータ(JSON) codeburn month --format json # 今月のデータ(JSON) codeburn report -p 30days --format json # 30 日間ウィンドウのデータ
この JSON データには、ダッシュボード上のすべてのパネルが含まれます:概要(コスト、コール数、セッション数、キャッシュヒット率)、 daily の詳細内訳、プロジェクト、トークン数を付与したモデル別データ、ワンショット成功率付きのアクティビティ、コアツール、シェルコマンド、および MCP サーバーです。
jq をパイプしてフィルタリングすることも可能です:
codeburn report --format json | jq '.projects' codeburn today --format json | jq '.overview.cost'
注記: 軽量なステータス表示用
(今日と今月の合計のみ)またはファイルベースのエクスポート (--format json
) については、上記を参照してください。export -f json
プロバイダ
CodeBurn は自動検出によって、あなたが使用している AI コーディングツールを特定します。複数のプロバイダがディスク上にセッションデータを保持している場合、ダッシュボードで
キーを押して切替えることができます。p
すべてのコマンド(
report, today, month, status, export)で --provider フラグを使用できます:
codeburn report # すべてのプロバイダを結合表示(デフォルト) codeburn report --provider claude # Claude Code のみ codeburn report --provider codex # Codex のみ codeburn report --provider cursor # Cursor のみ codeburn report --provider opencode # OpenCode のみ codeburn report --provider pi # Pi のみ codeburn report --provider copilot # GitHub Copilot のみ codeburn today --provider codex # Codex の今日の使用量 codeburn export --provider claude # Claude のデータのみをエクスポート
サポートされているプロバイダとデータ場所
| プロバイダ | データ場所 | ステータス | 備考 |
|---|---|---|---|
| Claude Code | | サポート済み | |
| Claude Desktop | | サポート済み | |
| Codex (OpenAI) | | サポート済み | ツール名は Claude の慣習に適合するように正規化されています。 |
| Cursor | macOS: Linux: Windows: | サポート済み | SQLite から読み込み。"Auto" モードのコストは Sonnet プライシングに基づいて推定表示(「Auto (Sonnet est.)」)。個々のツールのコールがログ化されていないため、「Core Tools/Shell/MCP」の代わりに Languages パネルを表示します。初回実行では最大 1 分かかる場合がありますが、その結果はキャッシュされ、次回以降は瞬時に動作します。 |
| OpenCode | (SQLite) | サポート済み | セッション、メッセージ、パートテーブルに対して読み取り専用のクエリを実行し、コストを LiteLLM プライシングに基づいて再計算します。サブタスクセッション(重複カウント防止)は除外されます。複数のチャンネルデータベースと XDG_DATA_HOME をサポートしています。 |
| Pi | | サポート済み | トークン数を抽出し、小文字のツール名を正規化(例: -> )します。また、 から Bash コマンドを取得します。 |
| GitHub Copilot | | サポート済み(出力トークンのみ) | 出力トークンのみをログ化し、コスト行は実際の API コストの下に表示されます。セッション内のモデル変更イベント () を経てモデルを追跡し、最初のモデル変更前のメッセージは除外して誤属人性を防ぎます。 |
| Amp | -- | 予定済み | プロバイダプラグインシステムの対応を待っています。 |
新しいプロバイダの追加
プロバイダプラグインシステムにより、新しいプロバイダの追加は単一のファイルの実装のみで可能です。各プロバイダはセッション発見、JSONL パース、ツールの正規化、モデル表示名の提供を行います。サンプルコードについては
src/providers/codex.ts を参照してください。
プロジェクトフィルタリング
プロジェクト名によって結果をフィルタリングできます(大文字小文字不問の部分一致):
codeburn report --project myapp # "myapp" に一致するプロジェクトのみ表示 codeburn report --exclude myapp # "myapp" 以外のすべてを表示 codeburn report --exclude myapp --exclude tests # 複数のプロジェクトを除外 codeburn month --project api --project web # 複数のプロジェクトを含める codeburn export --project inventory # "inventory" プロジェクトのデータのみをエクスポート
通貨
デフォルトではコストは米ドル (USD) で表示されます。他の通貨に切り替えるには:
codeburn currency GBP # イギリスポンドへ設定 codeburn currency AUD # オーストラリアドルへ設定 codeburn currency JPY # 日本円へ設定 codeburn currency # 現在の設定を表示 codeburn currency --reset # 米ドルに戻す
- サポート: ISO 4217 の通貨コード(162 通貨)すべてに対応。
- 為替レート: Frankfurter (欧州中央銀行のデータで無料、API キー不要) から取得し、
に 24 時間キャッシュされます。~/.cache/codeburn/ - 保存: 設定は
に格納されます。~/.config/codeburn/config.json - 範囲: この設定はダッシュボード、ステータスバー、メニューバーウィジェット、CSV/JSON エクスポート、および JSON API 出力全体で適用されます。
- ウィジェット: メニューバーウィジェットには 17 の一般的な通貨が表示された通貨セレクターも含まれています。上記の CLI コマンドを使用すれば、リストされていない通貨も設定可能です。
メニューバー (macOS)
codeburn install-menubar # SwiftBar/xbar プラグインをインストール codeburn uninstall-menubar # リムーバル
- 要件: SwiftBar のインストールが必要 (
)。brew install --cask swiftbar - 機能: メニューバーに今日のコストを表示し、炎のアイコン付きでドロップダウンメニューからアクティビティの内訳、モデル別コスト、トークン統計、プロバイダ別のコスト内訳、通貨セレクターを表示します。5 分ごとに自動更新されます。
何を追跡しているか
ツール使用パターんとユーザーメッセージのキーワードから分類される13 のタスクカテゴリ。LLM のコールを呼び出すことなく、完全に決定論的に動作します。
| カテゴリ | トリガー条件 |
|---|---|
| コーディング | Edit, Write ツール |
| デバッグ | エラー/修正キーワード + ツール使用 |
| 機能開発 | "add", "create", "implement" などのキーワード |
| リファクタリング | "refactor", "rename", "simplify" |
| テスト | Bash での pytest, vitest, jest |
| 探索 | 編集なしの Read, Grep, WebSearch |
| 計画 | EnterPlanMode, TaskCreate ツール |
| 委任 | Agent ツールの起動(スパウン) |
| Git Ops | Bash での git push/commit/merge |
| ビルド/デプロイ | npm build, docker, pm2 |
| ブレインストーミング | "brainstorm", "what if", "design" |
| 会話 | ツールなし、テキストのみのやり取り |
| 一般 | Skill ツール、未分類項目 |
内訳とメトリクス
- チャート: 日別コストチャート、プロジェクト別、モデル別(Opus/Sonnet/Haiku/GPT-5/GPT-4o/Gemini)、ワンショット率付きアクティビティ別、コアツール別、シェルコマンド別、MCP サーバー別。
- ワンショット率: コード編集を伴うカテゴリについては、CodeBurn が Edit/テスト/修正の試行サイクル(
パターンなど)を検出します。「1-shot」カラムは、編集回数が成功し直りなしで解決された割合を示します。(例:コーディングが 90% とすると、AI は 10 回のうち 9 回は最初から正解しています)。Edit -> Bash -> Edit - 価格: LiteLLM のモデル価格から自動取得され(24 時間キャッシュ)、入力・出力・キャッシュの読み書き、および Web 検索のコストを処理します。Claude 用の高速モード倍率も対応しており、全ての Claude および GPT-5 モデルに対してハードコーディングされたフォールバック値を設定することで、模糊適合による誤った価格設定を防ぎます。
シグナル解釈ガイド
これらは出発点であり、決定的な判断材料ではありません。単一の実験セッションで 60% のキャッシュヒット率は問題ありませんが、数週間の作業で一貫して 60% キャッシュヒットしている場合は設定の問題です。
| 見られるシグナル | それを示唆する意味 |
|---|---|
| キャッシュヒット < 80% | システムプロンプトやコンテキストが安定していないか、キャッシュが無効になっている可能性があります。 |
| セッションあたりの Read コールが多すぎる | エージェントが同じファイルを再度読み込み、文脈を欠いている可能性があります。 |
| 1-shot 率が低い(コーディング 30% など) | エージェントが編集で苦労し、試行ループに陥っている可能性があります。 |
| Opus 4.6 が小規模なターンでコストを支配 | 単純なタスクに対して性能が高すぎるモデルを使用している可能性があります。 |
| dispatch_agent / task が重い | サブエージェントのファウアウトが発生しており、予期されるか過剰であるかのどちらかです。 |
| MCP の使用が表示されない | MCP サーバーを使用していないか、設定が破損している可能性があります。 |
| Bash が git status, ls で支配的 | エージェントが実行するのではなく探索モードにある可能性があります。 |
| 会話カテゴリが優位 | エージェントが動作する代わりに会話を続けている可能性があります。 |
最適化
何が問題であるかを把握したあと、
codeburn optimize コマンドはあなたのセッションと ~/.claude/ セットアップをスキャンし、一般的な無駄のパターンを検出し、即座にコピー&ペーストして適用できる修正方法を提示します。このコマンドはあなたのファイルに永続的に書き込むことはありません。
codeburn optimize # 過去 30 日間をスキャン codeburn optimize -p today # 今日のみをスキャン codeburn optimize -p week # 過去 7 日間をスキャン codeburn optimize --provider claude # プロバイダ限定(Claude のみ)
検出対象
- セッション間で同じ内容を何度も読み返しているファイル。
- Read:Edit 比率が低い(読み込みなしの編集による試行とトークンの浪費)。
が不足しているプロジェクト(Claude が node_modules、.git、ビルドディレクトリを探索してしまい)。.claudeignore- 無駄な Bash 出力(キャップされていない BASH_MAX_OUTPUT_LENGTH、末尾のノイズ)。
- 使用されていない MCP サーバーがセッションごとにツールスキーマのオーバーヘッドを支払っていること。
に定義されているが呼び出されていない Ghost エージェント、スキル、スラッシュコマンド。~/.claude/- 膨大化している CLAUDE.md ファイル(
展開が含まれる場合)。@-import - キャッシュ作成のオーバーヘッドと、不要なディレクトリの読み込み。
各発見項目には、推定されるトークンとドル単位の節約額に加え、貼り付ける準備ができている修正方法が提示されます:CLAUDE.md の行、
.claudeignore テンプレート、環境変数、または非使用アイテムをアーカイブするための mv コマンドなどです。発見項目は緊急性(影響度と観測された浪費に基づく)によってランク付けされ、A-F 等級のセットアップ健康度スコアにまとめられます。再度実行することで、各発見項目を「新規」「改善中」「解決済み」に分類します(48 時間以内の最近のウィンドウを使用)。
また、ダッシュボード内でインラインで開くことも可能です:ステータスバーに発見項目数が表示されている状態で
キーを押すと該当箇所を開き、o
キーを押して戻るようにします。b
データの読み込み方法
- Claude Code:
に JSONL 形式でセッショントランスクリプトを格納しています。各アシスタントエントリには、モデル名、トークン使用量(入力・出力・キャッシュの読み書き)、tool_use ブロック、およびタイムスタンプが含まれます。~/.claude/projects/<sanitized-path>/<session-id>.jsonl - Codex:
にセッションを格納し、コールごとおよび累積的なトークン使用量を表す token_count イベントと、ツール追跡用の function_call エントリを含みます。~/.codex/sessions/YYYY/MM/DD/rollout-*.jsonl - Cursor: SQLite データベース(macOS:
、Linux:~/Library/Application Support/Cursor/User/globalStorage/state.vscdb
、Windows:~/.config/Cursor/User/globalStorage/state.vscdb
)にセッションデータを格納します。トークン数は%APPDATA%/Cursor/User/globalStorage/state.vscdb
テーブルのエントリで bubbleId: キープレフィックスを持ちます。cursorDiskKV
を必要とします(オプションの依存関係としてインストール)。パース結果はbetter-sqlite3
にキャッシュされ、データベースが変更されたら自動的に無効化されます。~/.cache/codeburn/cursor-results.json - OpenCode:
の SQLite データベースにセッションを格納します。セッション、メッセージ、パートテーブルに対して読み取り専用のクエリを実行してトークン数とツール使用量を抽出します。LiteLLM プライシングエンジンを使用してコストを再計算し、当社の価格データにないモデルについては OpenCode の独自のコストフィールドを使用します。サブタスクセッション(~/.local/share/opencode/opencode*.db
)は重複カウントを防ぐために除外されます。複数のチャンネルデータベースと XDG_DATA_HOME をサポートしています。parent_id IS NOT NULL - Pi:
に JSONL 形式でセッションを格納します。各アシスタントメッセージにはトークン使用量(入力・出力・キャッシュの読み書き)とインライン toolCall コンテンツブロックが含まれます。CodeBurn はトークン数を抽出し、Pi の小文字のツール名を標準セットに正規化(例:~/.pi/agent/sessions/<sanitized-cwd>/*.jsonl
->bash
,Bash
->dispatch_agent
)し、Agent
から Bash コマンドを取得してシェル内訳を作成します。toolCall.arguments.command
CodeBurn はこれらのファイルを読み取り、メッセージを重複除去(Claude では API メッセージ ID、Codex では累積トークンクロスチェック、Cursor では会話/タイムスタンプ、OpenCode ではセッション+メッセージ ID、Pi では responseId により)、エントリーごとの日付範囲でフィルタリングし、各ターン进行分类します。
環境変数
| 変数名 | 説明 |
|---|---|
| CLAUDE_CONFIG_DIR | Claude Code データディレクトリのオーバーライド(デフォルト: ) |
| CODEX_HOME | Codex データディレクトリのオーバーライド(デフォルト: ) |
プロジェクト構造
src/ ├── cli.ts # Commander.js エントリポイント ├── dashboard.tsx # Ink TUI (ターミナル用の React) ├── parser.ts # JSONL リーダー、重複除去、日付フィルタ、プロバイダオーケストレーション ├── models.ts # LiteLLM プライシング、コスト計算 ├── classifier.ts # 13 カテゴリのタスク分類器 ├── types.ts # タイプ定義 ├── format.ts # テキストレンダリング(ステータスバー) ├── menubar.ts # SwiftBar プラグインジェネレーター ├── export.ts # CSV/JSON マルチ期間エクスポート ├── config.ts # 設定ファイル管理 (~/.config/codeburn/) ├── currency.ts # 通貨変換、為替レート、Intl フォーマット └── sqlite.ts # SQLite アダプター (better-sqlite3 の遅延ロード) └── providers/ ├── types.ts # プロバイダインターフェース定義 ├── index.ts # プロバイダレジストリ (Cursor, OpenCode の遅延ロード) ├── claude.ts # Claude Code セッション発見 ├── codex.ts # Codex セッション発見と JSONL パース ├── cursor.ts # Cursor SQLite パース、言語抽出 ├── opencode.ts # OpenCode SQLite セッション発見とパース └── pi.ts # Pi エージェント JSONL セッション発見とパース
ライセンス
MIT
クレジット
にインスパイアされています。ccusage- 価格データは LiteLLM から提供されています。
- 為替レートは Frankfurter (欧州中央銀行のデータ) から提供されています。
- AgentSeal が開発しました。