mcpField
C
cost-session

cost-session

github.com/ruvnetデータ・データベース80.0k249 回インストール今日更新
リポジトリ

cost-session について

cost-session は、単一セッション内のメッセージコストを計算して順位付けする分析スキルです。キャッシュの読み書き量とセッション内のパーセンタイルを示し、具体的なコスト異常の特定に役立ちます。

主な機能

  1. 01セッションの JSONL メッセージを読み込み
  2. 02メッセージコストを計算して順位付け
  3. 03キャッシュの読み書き量を表示
  4. 04メッセージコストのパーセンタイルを計算
  5. 05セッション内のコスト異常を検出

活用シーン

  1. 01異常セッション内の高コストメッセージを調査
  2. 02時間範囲を指定してメッセージを絞り込み
  3. 03キャッシュ書き込みによるコストを調査
  4. 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 ← これ

アルゴリズム

実装:scripts/session.mjs。

  1. セッションの jsonl を特定します:--session-id <id>(~/.claude/projects/*/ をスキャン) または --latest(デフォルト。最終更新日時が最も新しい jsonl を選択)。
  2. usage ブロックを含むすべてのアシスタントメッセージを解析します。
  3. 共通の PRICING(_prices.mjs)を使って各メッセージのコストを計算します。
  4. cost_usd の降順に並べ替え、上位 N 件を表示します(デフォルトは 20 件)。
  5. セッション内のパーセンタイルを把握できるよう、メッセージコストの p50/p90/p99 を計算します。
  6. 最上位のメッセージが 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。

コメント