openclaw-cost-optimization について
OpenClaw のモデル振り分け、キャッシュ、コンテキストの削減、ハートビート設定、呼び出し制限、ワークスペース整理を通じて運用コストを見直すスキルです。エージェントを継続稼働させ、タスクに必要な能力を保ちながら API 支出を管理したい運用者向けです。
主な機能
- 01タスク別のモデル振り分け
- 02安定したコンテキストのキャッシュ
- 03セッション開始時の読み込み削減
- 04ローカルモデルでのハートビート処理
- 05API の頻度と予算の制限
- 06ワークスペースファイルの整理
活用シーン
- 01常時稼働エージェントのコスト削減
- 02コンテキストの重複処理の削減
- 03検索や API 呼び出しの暴走防止
- 04OpenClaw のモデルと cron 設定の確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ iammarcin/ cc4life --skill openclaw-cost-optimizationインストール後、Claude Code で/openclaw-cost-optimizationを入力して読み込まれたか確認します。
詳細
OpenClaw のコスト最適化
OpenClaw のセットアップでは、おそらく次の3つにコストをかけすぎています。些細なタスクに高価なモデルを使うこと、同じ静的ファイルをメッセージごとに再処理すること、エージェントが使わないコンテキストを読み込むことです。
デフォルトの設定は、性能を優先しています。試している段階なら問題ありません。しかし、24時間365日稼働させるようになると、月額1,500ドルと150ドル、あるいはそれ以下との差になります。
このスキルでは現在のセットアップを監査し、効果の大きい順に6つの最適化を適用します。ほとんどは5分以内で完了します。これらを組み合わせると、重要な場面での品質を落とさずに、コストを約97%削減できます。
これがないと Claude が誤ること
デフォルト設定のままでは、OpenClaw エージェントは次のような動作をします。
- 「今日の天気は?」に Sonnet や Opus を使います。これは Haiku で十分なタスクです
- セッション開始時に、8KBで済むところで50KBのコンテキストを読み込みます
- 有料 API にハートビートチェックを1日96回送信します
- 毎回のメッセージで、SOUL.md と USER.md を通常料金で再処理します
- 検索ループに歯止めがないため、一晩で20ドルを消費します
どれもバグではありません。24時間365日の自律稼働を想定して設計されていないデフォルト設定にすぎません。
6つの最適化
効果の大きい順に並んでいます。#1から順に進めてください。
1. タスクに適したモデルを割り当てる
効果:使用状況に応じて月額40~300ドルを節約
これは最も大きな効果がある方法です。エージェントは、チャット、ハートビート、コーディング、ウェブクロール、画像分析など、さまざまな種類の作業を処理します。それぞれの作業には、品質とコストのバランスが最適なモデルがあります。ハートビートチェックに Opus を使うのは、体温を測るのに外科医を雇うようなものです。
モデルの割り当て表:
| タスク | 最適(予算を気にしない場合) | 低コストの代替モデル | 節約額 |
|---|---|---|---|
| チャット(頭脳) | Opus 4.6 | Kimi K2.5 | 大幅な節約 — Opus に近い知能で、個性はやや控えめ |
| ハートビートチェック | Haiku 4.5 | Haiku 4.5(+頻度を下げる) | 約50ドル/月 |
| コーディング/夜間の開発 | Codex GPT-5.2 | Miniax 2.1 | 長時間のコーディングで約250ドル/月 |
| ウェブ閲覧/クロール | Opus 4.6 | DeepSeek V3 | クロールを頻繁に行う場合、月に数百ドル |
| 画像の理解 | Opus 4.6 | Gemini 2.5 Flash | 大幅な節約 — Flash は画像認識に非常に優れています |
| 定型タスク | Haiku 4.5 | Haiku 4.5 | Sonnet より10倍低コスト |
重要なポイント: 安価なモデルを1つだけ選ぶのではありません。各タスクを適切にこなせる、最も低コストのモデルを割り当てたラインアップを作ります。
デフォルトモデル — 個性をどの程度重視するかに応じて、普段使いのモデルを Haiku または Kimi に設定します。
{
"agents": {
"defaults": {
"model": {
"primary": "anthropic/claude-haiku-4-5"
}
}
}
}
モデルエイリアス — agents.defaults.models でエイリアスを定義すると、cron ジョブやエージェントから短い名前でモデルを指定できます。
{
"agents": {
"defaults": {
"models": {
"anthropic/claude-haiku-4-5": { "alias": "haiku" },
"anthropic/claude-sonnet-4-5": { "alias": "sonnet" },
"anthropic/claude-opus-4-6": { "alias": "opus" },
"openai/codex-gpt-5.2": { "alias": "code" },
"deepseek/deepseek-v3": { "alias": "crawl" },
"google/gemini-2.5-flash": { "alias": "vision" }
}
}
}
}
ハートビートの頻度も重要です。 デフォルトでは10分ごとのことが多いです。ハートビートに Opus を使うと、「注意が必要なことはあるか?」というチェックだけで約2ドル/日、約54ドル/月かかります。Haiku に切り替え、頻度も1時間ごとに減らしてください。
{
"heartbeat": {
"every": "1h",
"model": "anthropic/claude-haiku-4-5"
}
}
これだけで、ハートビートのコストは1日あたり0.01~0.10ドルまで下がります。
エージェントの SOUL.md またはシステムプロンプトに追加します。
## Model Selection
Default: Haiku for routine tasks.
Escalate to Sonnet/Opus only for: architecture decisions, code review, security analysis, complex reasoning.
For coding sessions: prefer Codex or dedicated coding model.
For web crawling: use DeepSeek V3.
For image analysis: use Gemini Flash.
When uncertain, try the cheaper model first.
モデルはこれを動作上の制約として従います。コードの変更は不要です。
2. 安定したコンテキストをキャッシュする
効果:繰り返し使用するトークンを最大90%割引
メッセージを送るたびに、SOUL.md、USER.md、ツール定義、リファレンスドキュメントが再読み込みされます。これらのファイルはリクエストごとに変わりません。キャッシュを使わないと、1日に何十回も同じ内容を再処理するために、毎回全額を支払うことになります。
Anthropicのプロンプトキャッシュでは、キャッシュ済みトークンを再利用する際の料金は10%です。繰り返し送信するコンテンツなら、最も頻繁に発生するコストを90%削減できます。
キャッシュするもの(安定していて、更新頻度が低いもの):
- SOUL.md — 人格、ルール
- USER.md — ユーザープロフィール、設定
- TOOLS.md — ツール定義
- リファレンスドキュメント、プロジェクト仕様
キャッシュしないもの(頻繁に変わるもの):
- 日次メモリファイル
- 会話履歴
- ツールの出力、検索結果
設定 — agents.defaults.modelsでモデルごとにcacheRetentionを設定します:
{
"agents": {
"defaults": {
"models": {
"anthropic/claude-opus-4-6": {
"alias": "opus",
"params": { "cacheRetention": "short" }
}
}
}
}
}
| 値 | キャッシュ期間 | 備考 |
|---|---|---|
"none" | キャッシュなし | プロンプトキャッシュを無効にします |
"short" | 5分 | APIキー認証時のデフォルト |
"long" | 1時間 | ベータフラグが必要です |
注: OpenClawでは、Anthropic APIキー認証を使用する場合、
"short"(5分間のキャッシュ)が自動的に適用されます。明示的に設定する必要があるのは、"long"または"none"を使いたい場合のみです。
キャッシュヒットを最大化するためのヒント:
- キャッシュの有効期間内に関連するリクエストをまとめて処理します(
shortでは5分、longでは1時間) - キャッシュを温めた状態に保つため、ハートビートの頻度をキャッシュTTLの少し手前に設定します(例:
shortでは4分ごと、longでは55分ごと) - 会話の途中でSOUL.mdを編集しないでください。変更のたびにキャッシュが無効になります
- 安定したコンテンツは、コンテキスト階層の上部に配置します
3. セッションを軽量に開始する
効果:セッションあたり約$0.35、頻繁に使う場合は月あたり$10~15を節約
多くのセットアップでは、起動時にすべてを読み込んでしまいます。メモリアーカイブ全体、過去の会話、あらゆるリファレンスファイルなどです。そのほとんどは使われません。
エージェントが自身であり、今日の状況を理解するために必要なものだけを読み込みます:
| 起動時に読み込む | 起動時にスキップする |
|---|---|
| SOUL.md | 会話履歴全体 |
| USER.md | 過去のメモリアーカイブ |
| IDENTITY.md | 古いプロジェクトの調査ドキュメント |
| 今日のメモリファイル | 他のエージェントのファイル |
それ以外はすべて、必要に応じて読み込みます。 過去のコンテキストが必要な話題が出たら、メモリ検索を使います:
"Search my memory for what we discussed about the marketing campaign"
セマンティック検索では、履歴全体を読み込まずに関連する箇所を取得できます。これによりコストを抑えられるだけでなく、効果も高まります。総当たりで読み込むより、対象を絞って取得する方が優れています。
エージェントの指示に追加します:
## Session Startup
Load ONLY: SOUL.md, USER.md, IDENTITY.md, today's memory file.
For prior context: use memory_search() on demand. Don't pre-load history.
結果: セッション開始時のコンテキストは50KB以上ではなく、約8KBになります。エージェントはより高速で低コストになり、逆説的ですが性能も向上します。コンテキスト内のノイズが減ることで、応答により集中できるためです。
4. ハートビートをローカルモデルに振り分ける
効果:月あたり$5~15を節約
ハートビートとは、「対応が必要なことはあるか」を確認する定期チェックで、15~60分ごとに実行されます。最先端の推論を必要としない単純なタスクですが、デフォルトでは実行するたびに有料のAPI呼び出しが発生します。
代わりに、Ollama経由で無料のローカルモデルに振り分けます。
セットアップ:
# Install Ollama
curl -fsSL https://ollama.com/install.sh | sh
# Pull a lightweight model (2GB, handles heartbeat tasks easily)
ollama pull llama3.2:3b
設定:
{
"heartbeat": {
"model": "ollama/llama3.2:3b"
}
}
有効な理由: ハートビートのタスクは、「対応が必要なものがあるか」という分類問題です。ローカルで動作する30億パラメーターのモデルなら、何の問題もなく回答できます。はい/いいえで判定する監視タスクではSonnetとの品質差はなく、API料金はゼロになります。
要件: 約2GBの空きRAMがある、Ollamaを実行するマシンが必要です。OpenClawをすでにホームサーバーまたはVPSで実行しているなら、条件を満たしています。
5. レート制限と予算上限を設定する
効果:暴走による月額50~200ドルのコストを防止
AI エージェントはループすることがあります。検索が追加の検索を次々に発生させたり、デバッグ中に数秒で何十件もの API 呼び出しが行われたりします。ガードレールがなければ、たった一度の暴走したやり取りで、1日分の予算を数分で使い切る可能性があります。
SOUL.md またはシステムプロンプトに追加します:
## API Discipline
- 5 seconds minimum between consecutive API calls
- 10 seconds minimum between web searches
- Max 5 searches per batch, then pause 2 minutes
- If a task needs more than 10 API calls, ask before continuing
- On rate limit error (429): stop, wait 5 minutes, retry once
行動ルールによる予算管理:
OpenClaw には予算を設定するネイティブな設定キーはありません。その代わり、エージェントへの指示と外部モニタリングを通じて制限を適用します。
- Anthropic API の利用額アラートを設定する — Anthropic Console またはプロバイダーのダッシュボードで、直接請求アラートを設定します
- SOUL.md に行動制限を追加する(上記参照) — エージェントが自ら使用量を調整します
- CLI でモニタリングする:
openclaw cron list --all --json # Check what's running and on which model
- Anthropic の使用状況ダッシュボードで追跡する — 日次・週次の利用額の傾向を確認します
レート制限により、通常の運用中の無駄を防げます。プロバイダーレベルの予算アラートで、想定外のケースを検知できます。両方を組み合わせれば、機能を制限せずに支出を予測可能にできます。
6. ワークスペースのファイルを整理する
効果:少しずつですが、積み重なっていきます — すべてのリクエストで節約できます
SOUL.md、USER.md などのファイルは、やり取りのたびに読み込まれます。不要な行は、一度だけでなく、メッセージのたびにトークンを消費します。200行ある SOUL.md を80行にできる場合、最も利用頻度が高い場面では、気づかないうちに必要以上のコストが2~3倍かかっています。
各行を見直すときの質問:「エージェントがタスクを実行するために、この情報は必要ですか?」
残すもの:
- 中核となるパーソナリティ(段落ではなく、2~3文)
- 出力を変える厳守すべき行動ルール
- コミュニケーションに関する好み
- 運用上の制約
削除するもの:
- 背景設定や物語(参照用ドキュメントに移し、必要に応じて読み込みます)
- 同じルールの重複した言い換え
- Claude がすでに把握している内容についての冗長な説明
- 応答に影響しない「あれば便利」なコンテキスト
整理前(冗長、85トークン):
## Communication Style
You should always communicate in a way that is clear, concise, and helpful.
When talking to the user, make sure your responses are well-structured and easy
to follow. Use bullet points when listing things. Don't write overly long
responses unless the topic genuinely requires depth. The user values efficiency.
整理後(簡潔、22トークン):
## Style
Direct and concise. Use structure for complex answers. Match depth to the question.
動作は同じです。コストは4分の1になり、メッセージのたびに節約できます。
最適化を組み合わせた効果
| 最適化 | 月あたりの節約額 | 設定時間 |
|---|---|---|
| デフォルトを Haiku にする | $40-60 | 5 min |
| プロンプトキャッシュ | $15-30 | 2 min |
| 起動時コンテキストの簡素化 | $10-15 | 30 min |
| ローカルハートビート | $5-15 | 15 min |
| レート制限と予算上限 | $50-200(予防) | 10 min |
| ワークスペースのファイルを整理 | $5-10 | 1 hour |
月額1,500ドル以上から、30~50ドルに。
モデルの振り分けとキャッシュで、最も大きな節約が得られます。ワークスペースの整理は、やり取りのたびにコストを削減するため、時間とともに節約効果が積み重なります。
適用方法
ほとんどの場合、JSON ファイルを手作業で編集する必要はありません。OpenClaw エージェントに伝えてください。
「デフォルトモデルを Haiku に切り替えてください。複雑な推論タスクに限り Sonnet を使ってください。」
「プロンプトキャッシュを有効にしてください — Anthropic モデルの
cacheRetentionを'long'に設定してください。」
「SOUL.md に API の利用ルールを追加してください — レート制限、検索の一括処理、エスカレーションのしきい値を設定してください。」
「SOUL.md と USER.md を監査して、出力品質に直接影響しない項目を指摘してください。」
ほとんどの場合、OpenClaw は自身の設定を変更できます。依頼するだけです。
動作の確認
確認コマンド
cron ジョブごとの実際のモデルを確認する(テーブル表示では確認できないため、必ず JSON を使ってください):
openclaw cron list --all --json
各ジョブの payload.model フィールドを確認します。エージェントの割り当てだけで判断しないでください。cron ジョブでは、エージェントのデフォルトモデルを上書きできます。
エージェントごとのハートビートの状態を確認する(設定は ~/.openclaw/openclaw.json にあります):
cat ~/.openclaw/openclaw.json | python3 -c "
import json,sys; c=json.load(sys.stdin)
d=c['agents']['defaults'].get('heartbeat',{}).get('every','')
print(f'Default: {d or \"(disabled)\"}')
for a in c['agents']['list']:
e=a.get('heartbeat',{}).get('every',d)
print(f'{a[\"id\"]}: {e or \"(disabled)\"}')
"
heartbeat ブロックのないエージェントは、デフォルト設定を引き継ぎます。every: "15m" を引き継いだ状態で Opus を実行しているエージェントは、最大のコスト要因になります。
ブートストラップコンテキストのサイズを確認する:
wc -c SOUL.md USER.md AGENTS.md MEMORY.md
適切な状態
- コンテキストサイズ: セッション開始時は2~8KBに抑えます。50KB以上にはしません
- デフォルトモデル: SonnetではなくHaikuを使用します
- Cronジョブ: 各ジョブの
payload.modelは、複雑さに応じて設定します(チェック用にはHaiku、構造化されたタスクにはSonnet、創造的または複雑な作業に限りOpus) - ハートビート: 最低でもOllama/ローカルモデルまたはHaikuにルーティングします
- 1日のコスト: 初日中に0.10~0.50ドルの範囲まで下がるはずです
コストが下がらない場合、最もよくある原因は、システムプロンプトでモデル選択ルールが読み込まれていないことです。SOUL.mdへの変更が反映されているか確認してください。
よくある監査ミス
エージェントの割り当てからCronジョブのモデルを推測しないでください。openclaw cron listの表にはAgent: sherlockと表示されていても、ジョブ自体のペイロードでモデルが上書きされている場合があります。実際のpayload.modelフィールドは、必ずopenclaw cron list --all --jsonで確認してください。
アンチパターン
「複雑なタスクも含めて、すべてHaikuを使えばいい。」 そうしないでください。Haikuは高速で低コストですが、複数ステップの推論、微妙なニュアンスを含む分析、創造的な作業では、実際に性能が劣ります。目指すのは適切なモデルの選択であり、性能を下げることではありません。品質が重要な場合は、より高性能なモデルに切り替えてください。
「節約のため、すべてをキャッシュすればいい。」 日次メモやツールの出力など、変化しやすいコンテンツをキャッシュしても、キャッシュ枠が無駄になり、効果はありません。キャッシュするのは安定した内容だけにしてください。
「安全のため、予算を1日1ドルに設定しよう。」 厳しすぎます。エージェントが正当な作業中に上限に達し、タスクの途中で停止してしまいます。まずは1日5ドルに設定し、1週間観察してから、実際の使用傾向に応じて調整してください。
「SOUL.mdを10行に削ったら、エージェントの動作がおかしくなった。」 削りすぎです。性格や行動に関するルールの中には、出力品質に実際に影響するものがあります。余分な部分は削り、重要な部分は残してください。動作が悪化した場合は、その動作を制御していたルールを個別に戻してください。
品質チェック
この設定をほかの人と共有する前に、以下を確認してください。
- デフォルトモデルがHaikuである(Sonnet/Opusではない)
- 安定したファイルのキャッシュが有効になっている
- セッション開始時に必須項目だけが読み込まれる
- ハートビートがローカルモデル(または利用可能な最安モデル)にルーティングされる
- 警告しきい値を設定した予算上限が設定されている
- ワークスペース内のファイルを監査し、不要な内容を削除している
- エージェントの動作を検証し、重要なタスクで品質が低下していない