SpecRunnerDocs
ドキュメントコスト目安と計測
USAGE & COST

コスト目安と計測

公開済みの実測分布を初期目安にし、実運用ではrepository内のusage記録から自分の中央値と増加要因を確認します。

このページの内容

まず中央値を初期予算に使う

SpecRunnerの表示額はproviderの請求額ではなく、記録したtokenを内蔵価格表へ当てたUSD概算です。契約プラン、quota、割引、価格改定、未計測tokenはproviderの請求明細で確認します。

docs/cost.mdに記録された2026-06-10時点のスナップショットです。このproject自身のarchive 278 requestを、当時のAnthropic list rateで集計しています。

MINIMUM0.64M token / $1.42

短く収束したrequestの下限。通常予算の基準にはしません。

MEDIAN6.1M token / $8.58

最初の見積もりに使う中心値。自分のrunが揃ったら置き換えます。

MAXIMUM117M token / $73.11

fixer loopを多く含む高コスト例。正常runの上限とはみなしません。

基準値。 初回は1 requestあたり$8.58前後を粗い基準にし、同じrequest typeを5〜10件実行した後にjob statsの自分の中央値へ更新します。

token総数だけで高い・安いを決めない

CACHE実測の約94%がcache read

cache readは通常inputより安価です。総tokenだけでlist input rateを掛けると過大になります。

CONVERGENCEreview・fixer回数が効く

高コスト側にはfixer loopの反復が含まれます。costとconvergenceを同時に見ます。

MODELstepごとの単価差が大きい

同じtoken量でもmodelとcache種別で金額が変わります。slug合計だけでなくstep別に確認します。

follow-up、output repair、再実行で取得したusageもrunner内で加算されます。resumeは完了済みstepを飛ばしますが、再開後に発生したturnは新しいusageとして記録されます。

fresh inputを見るときだけcache readを引きます 内部評価資料ではfresh input = inputTokens − cacheReadInputTokensとして読みます。これはcontextの再利用率を見る指標で、SpecRunnerが表示するUSD計算式そのものではありません。

main checkoutから3段階で確認する

terminal
# 1 runのstep別見積もり
npx specrunner job show <job-id>

# 1 requestのtoken内訳
npx specrunner usage my-feature

# 全runの分布と機械集計
npx specrunner job stats
npx specrunner job stats --json
command得られる値使いどころ
specrunner job show <jobId|slug>1 runのstep別costactiveまたは特定jobを調べる
specrunner usage <slug>invocation別・model別tokenactiveを優先し、なければ最新archive
specrunner usagearchiveのslug別・step別・model別tokenとcost過去runの内訳を比較する
specrunner job statsactive + archiveのduration・convergence・costrun単位の分布を見る
specrunner job stats --json同じ統計の構造化データ外部集計・定期観測に使う
  1. 01
    個別run

    job showで高いstepとmodelを特定します。

  2. 02
    同種run

    job statsでcost中央値、duration中央値、convergence平均を並べます。

  3. 03
    時系列

    --jsonを保存し、request typeやmodel構成を変えた前後で比較します。

usage <slug>はtoken内訳、引数なしのusageはarchive集計とcost、job statsはactiveとarchiveを含むrun統計です。目的を混同しません。

4種類のtokenをmodel単価で合算する

terminal
estimated USD =
  inputTokens / 1,000,000 × input rate
+ outputTokens / 1,000,000 × output rate
+ cacheReadInputTokens / 1,000,000 × cache-read rate
+ cacheCreationInputTokens / 1,000,000 × cache-write rate
model familyinputoutputcache readcache write根拠
Claude Opus 4.5–4.8$15.00$75.00$1.50$18.75実単価
Claude Sonnet 4.5–4.6$3.00$15.00$0.30$3.75実単価
Claude Haiku 4.5$0.80$4.00$0.08$1.00実単価
o3$10.00$40.00$2.50$0実単価
GPT-5.1 / 5.2 Codex / 5.3 Codex / 5.4 / 5.5$10.00$40.00$2.50$0o3 tierによる近似
GPT-5.4 mini$1.50$6.00$0.375$0近似
GPT-5.3 Codex Spark$3.00$12.00$0.75$0近似

単位はUSD / 1M tokens。価格表の基準日はAnthropicが2026-06-07、OpenAIが2026-06-12です。[1m] variantは別keyとして解決されますが、現行表では対応するbase modelと同じflat-rate近似です。

OpenAIの複数modelは近似値です 現行ソースは個別の公開価格がないmodelをo3 tierなどで近似しています。$?nullだけでなく、数値が出ても近似かどうかをこの表で確認します。

認証方式と実際の支払いを分ける

実行方式SpecRunnerの表示実際の確認先
provider API keytoken × 内蔵list rateproviderのusage・請求明細。価格日と割引を照合
Claude Code / Codexの保存済み認証取得できたtokenを同じ価格表で換算subscription quota。表示USDはlist-rate相当で、追加請求額とは限らない
managedsession usageをbest-effortで取得usageが取れなければcostは不明。managed側の記録を確認

credentialの解決順とruntime別の環境変数は権限・認証・環境変数を参照してください。

金額capではなく増加要因を制御する

現行SpecRunnerにmaxCostUsdのような金額上限はありません。provider側のspend alertを最終境界にし、SpecRunnerでは高コスト化する条件を狭めます。

  1. 01
    requestを絞る

    受け入れ基準と非対象を明記し、不要なdesign・fixer往復を減らします。

  2. 02
    modelを役割で分ける

    品質が必要なstepだけ高単価modelを使い、既知の軽作業は低単価modelを検証して使います。

  3. 03
    turnと時間を制限する

    Claude localではsteps.*.maxTurns、各runtimeではtimeoutMsを明示します。

  4. 04
    反復を観測する

    cost急増時はjob statsのconvergenceとjob showのstep内訳を確認します。

  5. 05
    請求側で止める

    providerのbudget・alert・quotaを設定し、SpecRunnerの推定値だけに依存しません。

model、maxTurnstimeoutMsの設定例は設定レシピで確認できます。

0・不明・部分集計を区別する

状態表示判断
usage.jsonなしnullまたはno data0 USDではない。取得・保存されていない
modelUsageなしno usage datamanaged等のbest-effort取得に失敗した可能性
価格表にないmodel$?null、または集計から除外tokenとprovider請求を手動確認
priced / unpriced混在job statsはpriced分だけ数値化表示額を全額とみなさない
Codex reasoning tokenusage.jsonへ未マッピングprovider側と差が出る計測穴

pricing.tsは会計台帳ではありません 価格表は静的で、請求条件を自動取得しません。月次予算ではjob stats --jsonを運用指標、provider明細を金額のsource of truthとして扱います。

参照ソース 10