Claude 使用量監査
~/.claude/projects/**/*.jsonl(メインセッションと subagents/)を解析する4つのローカルスクリプト。各 API 呼び出しは (message.id, requestId) で重複排除され、コストはモデルごとの公開 API 価格に基づくため、サブスクリプションでは「API 換算相当額」、つまりプラン割り当ての代理指標として読み替えてください。
実行
SKILL_DIR="${CLAUDE_SKILL_DIR}/scripts"
OUT=$(mktemp -d) # またはセッションのスクラッチパッド
python3 -I "$SKILL_DIR/usage.py" "$OUT/usage.json" # 合計、日次、モデル、プロジェクト、セッション、キャッシュ再構築、ツール、スキル、エージェント
python3 -I "$SKILL_DIR/context_sources.py" "$OUT/usage2.json" # 出力サイズ別の Bash コマンドファミリー、完全 vs 部分 Read、SDK エントリポイント、アイドルギャップ
python3 -I "$SKILL_DIR/cost_split.py" # トークン種類別のコスト、200k/300k コンテキストを超えるキャッシュ読み取り税
python3 -I "$SKILL_DIR/history.py" "$OUT/hist.json" # 週次のプロンプト数、プロンプトあたりのコスト、スラッシュコマンド、セッション数、時間帯×曜日(デフォルト90日)
期間: 環境変数 AUDIT_DAYS=90(デフォルト30、history.py では90)。トランスクリプトは cleanupPeriodDays(設定で120に設定可能、Claude Code のデフォルトは30)までしか遡れず、~/.claude/history.jsonl はすべてのプロンプトを保持します。保持期間を超えるとプロンプトレベルの指標のみが実データとなり、トランスクリプトが一部削除された週は「部分」としてマークされ、低コストとして扱われることはありません。
金額を提示する前に
価格は3つのテーブルにあります: usage.py と history.py の PRICES、cost_split.py の P。まず claude-api スキルと照合し、モデルが不足している場合はテーブルを修正してください(未知のモデルは $0 としてカウントされます)。
注目すべき点(優先順位順)
| シグナル | フィールド | 対策 |
|---|---|---|
| 200k コンテキストを超える呼び出し | ctx_cost, cost_split.py の tax | 設定の autoCompactWindow、トピックごとに /clear |
| コールド再開(1時間以上のアイドル後にキャッシュ再構築) | cache_miss | cold-resume-guard.sh フック |
CLI 以外のエントリポイント(sdk-py、sdk-cli) | entry, sdk in usage2 | Claude を起動するプラグインやフック:モデルを固定(security-guidance なら SG_AGENTIC_MODEL) |
| 最大のツール出力 | tool_result_kchars, bash_fam, read | 対象を絞った Read、コマンド出力の制限 |
| 1時間 vs 5分のキャッシュ TTL | w1h と gaps 内の5〜60分ギャップ数 | 5〜60分ギャップ×コンテキスト×1.25 が 1時間書き込みの0.75倍のプレミアムを超える場合は1時間を維持 |
| サブエージェントの割合とモデル | main_sub, agents | パターン作業には Sonnet |
top_sessions 内のセッションプロンプトはユーザー自身のテキストです。共有物からは除外してください。