メインコンテンツへスキップ

トークン使用量とコスト

OpenClawは文字数ではなくトークンを追跡します。トークンはモデル固有ですが、ほとんどの OpenAIスタイルのモデルでは、英語テキストで平均すると1トークンあたり約4文字です。

system promptの構築方法

OpenClawは、実行のたびに独自のsystem promptを組み立てます。これには次が含まれます:
  • Tool一覧 + 短い説明
  • Skills一覧(メタデータのみ。指示は必要時にreadで読み込まれます)
  • self-update instructions
  • Workspace + bootstrap files(AGENTS.mdSOUL.mdTOOLS.mdIDENTITY.mdUSER.mdHEARTBEAT.md、新規の場合はBOOTSTRAP.md、さらに存在する場合はMEMORY.md、または小文字フォールバックとしてmemory.md)。大きなファイルはagents.defaults.bootstrapMaxChars(デフォルト: 20000)で切り詰められ、bootstrap注入全体はagents.defaults.bootstrapTotalMaxChars(デフォルト: 150000)で上限設定されます。memory/*.mdファイルはmemory tools経由のオンデマンドであり、自動注入されません。
  • 時刻(UTC + ユーザーのタイムゾーン)
  • 返信タグ + heartbeat behavior
  • runtime metadata(host/OS/model/thinking)
完全な内訳はSystem Promptを参照してください。

context windowに含まれるもの

モデルが受け取るものは、すべてcontext limitに含まれます:
  • System prompt(上記のすべてのセクション)
  • 会話履歴(user + assistant messages)
  • Tool callsとtool results
  • 添付ファイル/transcripts(画像、音声、ファイル)
  • compaction summariesとpruning artifacts
  • provider wrappersまたはsafety headers(見えませんが、それでもカウントされます)
画像については、OpenClawはprovider呼び出し前にtranscript/tool画像payloadsを縮小します。 これを調整するにはagents.defaults.imageMaxDimensionPx(デフォルト: 1200)を使用します:
  • 値を低くすると、通常はvision-token使用量とpayloadサイズが減ります。
  • 値を高くすると、OCR/UIが多いスクリーンショットでより多くの視覚的詳細を保持できます。
実用的な内訳(注入されたファイルごと、tools、Skills、およびsystem promptサイズごと)を確認するには、/context listまたは/context detailを使用してください。Contextを参照してください。

現在のトークン使用量を見る方法

チャットでは次を使用します:
  • /status → セッションモデル、context使用量、 直近の応答の入力/出力トークン、および推定コスト(APIキーのみ)を含む絵文字付きのステータスカード
  • /usage off|tokens|full → すべての返信に応答ごとの使用量フッターを追加します。
    • セッションごとに保持されます(responseUsageとして保存)。
    • OAuth authではコストは非表示になります(トークンのみ)。
  • /usage cost → OpenClawのセッションログからローカルのコスト概要を表示します。
その他の表面:
  • TUI/Web TUI: /status/usageがサポートされています。
  • CLI: openclaw status --usageopenclaw channels listは 正規化されたprovider quota windows(応答ごとのコストではなくX% left)を表示します。 現在のusage-window対応provider: Anthropic、GitHub Copilot、Gemini CLI、 OpenAI Codex、MiniMax、Xiaomi、z.ai。
使用量の表示面では、表示前に共通のproviderネイティブfield aliasesを正規化します。 OpenAI系Responsesトラフィックでは、input_tokens / output_tokensprompt_tokens / completion_tokensの両方が含まれるため、transport固有の field namesによって/status/usage、またはセッション概要の表示が変わることはありません。 Gemini CLI JSON usageも正規化されます: reply textはresponseから取得され、 CLIが明示的なstats.input fieldを省略した場合は、stats.cachedcacheReadに対応付けられ、stats.input_tokens - stats.cached が使用されます。 ネイティブOpenAI系Responsesトラフィックでは、WebSocket/SSE usage aliasesも 同じ方法で正規化され、total_tokensが存在しない、または0の場合は、合計値は正規化済みのinput + outputへフォールバックします。 現在のセッションスナップショットが疎な場合、/statussession_statusは 最新のtranscript usage logからトークン/cache countersおよびアクティブなruntime model labelも復元できます。既存のゼロ以外のlive値は引き続きtranscript fallback値より優先され、保存済み合計が存在しないか小さい場合は、より大きいprompt指向の transcript totalsが優先されることがあります。 provider quota windows用のusage authは、利用可能な場合はprovider固有のhooksから取得されます。そうでない場合、OpenClawはauth profiles、env、またはconfigから一致するOAuth/API-key credentialsへフォールバックします。

コスト見積もり(表示される場合)

コストは、モデル価格設定configから見積もられます:
models.providers.<provider>.models[].cost
これらはinputoutputcacheReadcacheWriteに対する100万トークンあたりのUSDです。 価格設定がない場合、OpenClawはトークンのみを表示します。OAuth tokensでは ドルコストは表示されません。

Cache TTLとpruningの影響

provider prompt cachingは、cache TTL window内でのみ適用されます。OpenClawは 必要に応じてcache-ttl pruningを実行できます: cache TTLが期限切れになるとセッションをpruneし、 次のリクエストで履歴全体を再キャッシュするのではなく、新しくキャッシュされたコンテキストを再利用できるよう cache windowをリセットします。これにより、セッションがTTLを超えてアイドル状態になったときのcache writeコストを低く保てます。 これはGateway configurationで設定し、 動作の詳細はSession pruningを参照してください。 Heartbeatは、アイドル間隔をまたいでcacheをwarmに保つことができます。モデルのcache TTL が1hなら、heartbeat intervalをそれより少し短く設定する(例: 55m)ことで、 プロンプト全体の再キャッシュを避け、cache writeコストを減らせます。 マルチエージェント構成では、1つの共有モデルconfigを維持したまま、 agents.list[].params.cacheRetentionでエージェントごとにcache動作を調整できます。 各設定項目を順に確認する完全ガイドについては、Prompt Cachingを参照してください。 Anthropic APIの価格設定では、cache readはinput tokensより大幅に安価である一方、cache writeはより高い倍率で課金されます。最新の料金とTTL倍率については、Anthropicの prompt caching価格設定を参照してください: https://docs.anthropic.com/docs/build-with-claude/prompt-caching

例: heartbeatで1時間のcacheをwarmに保つ

agents:
  defaults:
    model:
      primary: "anthropic/claude-opus-4-6"
    models:
      "anthropic/claude-opus-4-6":
        params:
          cacheRetention: "long"
    heartbeat:
      every: "55m"

例: エージェントごとのcache戦略を持つ混在トラフィック

agents:
  defaults:
    model:
      primary: "anthropic/claude-opus-4-6"
    models:
      "anthropic/claude-opus-4-6":
        params:
          cacheRetention: "long" # most agents向けのデフォルトベースライン
  list:
    - id: "research"
      default: true
      heartbeat:
        every: "55m" # 深いセッション向けにlong cacheをwarmに保つ
    - id: "alerts"
      params:
        cacheRetention: "none" # bursty notifications向けにcache writesを避ける
agents.list[].paramsは選択されたモデルのparamsの上にマージされるため、 cacheRetentionだけを上書きし、その他のモデルデフォルトはそのまま継承できます。

例: Anthropic 1M context beta headerを有効にする

Anthropicの1M context windowは現在beta-gatedです。OpenClawは、サポートされるOpus またはSonnetモデルでcontext1mを有効にすると、必要な anthropic-beta値を注入できます。
agents:
  defaults:
    models:
      "anthropic/claude-opus-4-6":
        params:
          context1m: true
これはAnthropicのcontext-1m-2025-08-07 beta headerに対応します。 これは、そのモデルエントリでcontext1m: trueが設定されている場合にのみ適用されます。 要件: credentialがlong-context usageの対象である必要があります。対象でない場合、 Anthropicはそのリクエストに対してprovider-side rate limit errorを返します。 AnthropicをOAuth/subscription tokens(sk-ant-oat-*)で認証している場合、 Anthropicは現在その組み合わせをHTTP 401で拒否するため、OpenClawはcontext-1m-* beta headerをスキップします。

トークン圧力を減らすためのヒント

  • 長いセッションの要約には/compactを使用してください。
  • ワークフロー内の大きなtool outputsを切り詰めてください。
  • スクリーンショットが多いセッションではagents.defaults.imageMaxDimensionPxを下げてください。
  • skill descriptionsは短く保ってください(skill listはプロンプトに注入されます)。
  • 冗長で探索的な作業には、より小さなモデルを選んでください。
skill listの正確なオーバーヘッド計算式については、Skillsを参照してください。