cost-session について
cost-session は、単一セッション内のメッセージコストを計算して順位付けする分析スキルです。キャッシュの読み書き量とセッション内のパーセンタイルを示し、具体的なコスト異常の特定に役立ちます。
主な機能
- 01セッションの JSONL メッセージを読み込み
- 02メッセージコストを計算して順位付け
- 03キャッシュの読み書き量を表示
- 04メッセージコストのパーセンタイルを計算
- 05セッション内のコスト異常を検出
活用シーン
- 01異常セッション内の高コストメッセージを調査
- 02時間範囲を指定してメッセージを絞り込み
- 03キャッシュ書き込みによるコストを調査
- 04最高額とセッション内パーセンタイルを比較
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ ruvnet/ ruflo --skill cost-sessionインストール後、Claude Code で/cost-sessionを入力して読み込まれたか確認します。
詳細
cost-anomaly がセッションを >3.5σ の外れ値としてフラグ付けしたら、次に知りたいのは「どのメッセージにコストがかかったのか?」です。cost-session がそれに答えます。
| 質問 | スキル |
|---|---|
| 「最もコストが高かったセッションは?」 | cost-conversation |
| 「外れ値のセッションは?」 | cost-anomaly |
| 「このセッションでコストがかかったメッセージは?」 | cost-session ← これ |
アルゴリズム
- セッションの jsonl を特定します:
--session-id <id>(~/.claude/projects/*/をスキャン) または--latest(デフォルト。最終更新日時が最も新しい jsonl を選択)。 usageブロックを含むすべてのアシスタントメッセージを解析します。- 共通の PRICING(
_prices.mjs)を使って各メッセージのコストを計算します。 cost_usdの降順に並べ替え、上位 N 件を表示します(デフォルトは 20 件)。- セッション内のパーセンタイルを把握できるよう、メッセージコストの p50/p90/p99 を計算します。
- 最上位のメッセージが p99 の 2 倍を超える場合、セッション内の外れ値としてフラグ付けします。
重要な理由:キャッシュ書き込みは見えにくいコストです
実際のセッションの例、最上位のメッセージ:
| # | Model | In | Out | Cache W | Cache R | Cost |
| 1 | opus-4-7 | 6 | 569 | 881898 | 0 | $16.58 |
Cache W 列がないと、「出力トークン 569 個に $16 かかった」ように見えますが、これは 380 倍も誤っています。実際のコストは、opus の料金での一時的な 1 時間キャッシュへの書き込みです:881,898 トークン × $18.75/100 万 = $16.54。
表を読む運用担当者は、すぐに「モデルが一時キャッシュに 881K トークンを書き込んだ」とわかります。そこから「入力 6 件のリクエストで、なぜコンテキスト 881K トークンをキャッシュしたのか?」という疑問が生まれます。これは実際のエンジニアリング上のシグナルです。
詳細調査のワークフロー
# Step 1: find outliers across all sessions
cost anomaly --alert-on-outliers 1 || cost anomaly # see which session-ids
# Step 2: drill into the flagged session
cost session --session-id <flagged-id> --top 10
# Step 3: open that jsonl at the timestamp the top message reports,
# inspect the prompt + tool calls
パーセンタイルの把握
出力の先頭:
| p50 (median) message | $0.85 |
| p90 message | $1.45 |
| p99 message | $1.74 |
これにより、運用担当者は自分で計算しなくても、「この最上位のメッセージは 2 倍の外れ値なのか、それとも 380 倍なのか?」と確認できます。「top is >2× p99」というフッターは、答えが「はい、これは調査する価値のあるセッション内の外れ値です」の場合に表示されます。
--since フィルター
長いセッション内の特定の時間範囲を詳しく調べるのに便利です:
cost session --since 2026-06-16T13:00:00Z --top 5
timestamp >= --since を満たすメッセージのみが対象になります。
エッジケース
- コストが計算されたアシスタントメッセージがない場合 → 「コストが計算されたアシスタントメッセージはありません」を表示して、終了コード 0。
--session-idがどのプロジェクトの jsonl にも見つからない場合 → エラーを表示して、終了コード 2。--topは正の整数でなければなりません → 終了コード 2。