ANTIGRAVITY LABEN
記事一覧/連携・プラグイン
連携・プラグイン/2026-04-30上級

Antigravity × Cloudflare Durable Objects で作るステートフル AI エージェント — 1セッション=1インスタンスで会話・ツール状態・コストを一元管理

Antigravity で開発した AI エージェントを Cloudflare Durable Objects に載せて、会話履歴・ツール呼び出し・トークン消費を1セッション1インスタンスで管理する設計と実装を、実際に本番投入したコードと運用コストで解説します。

antigravity362cloudflare6durable-objectsagentkit13production54

プレミアム記事

Antigravity でエージェントを作って Cloudflare Workers にデプロイしたとき、まず最初にぶつかる壁があります。それは「ユーザー A の会話履歴がユーザー B のリクエストに紛れ込む」「同じユーザーでもリクエストのたびに記憶がリセットされる」という、ステートレス環境ならではの根本的な問題です。

私自身、2週間ほどこの問題に頭を抱えました。Redis を立てる、Cloudflare KV にすべて書き出す、毎回 D1 から SELECT する — どれも「動くことは動くけれど、本番運用したくない」レベルの妥協案ばかりだったのです。最終的にたどり着いたのが Cloudflare Durable Objects(以下 DO)でした。1セッション=1インスタンスという考え方は、ステートフルなエージェントを設計する上でこれ以上ない手触りで、しかもコストが想像の10分の1以下に収まりました。

なぜ AI エージェントは「ステートフル」でなければならないのか

エージェントを Workers にデプロイしてみると、すぐに気付きます。ステートレスは速くて安いけれど、エージェントには合いません。理由は3つです。

ひとつ目は会話履歴の持ち回りです。ユーザーが10往復のやり取りをするとき、毎回フロントエンドから全履歴を送り直す方式だと、ペイロードが膨らんで Workers の CPU 制限を圧迫します。私のテストでは、20ターン目あたりで 50ms 以上の余計な JSON パース時間が発生していました。

ふたつ目はツール呼び出しの中断と再開です。AgentKit 2.0 のマルチエージェントでは、長いタスクが20〜40秒に及ぶことがあります。Workers の単発リクエストは最大30秒(無料プランは10秒)なので、サブエージェントの実行中に切れてしまうと、フロントエンドは「タイムアウトしました」しか返せません。途中状態を保持してくれる場所が必要なのです。

3つ目はコスト計測の精度です。OpenAI / Gemini / Claude の API はトークン単位で課金されます。1ユーザーあたりの月間消費量を正しく取りたいなら、リクエストごとに「session_id でグループ化された永続カウンタ」が必須になります。KV では書き込み回数の課金がボトルネックになり、D1 では同一行への高頻度書き込みでロック競合が起きます。

DO は、この3つを「インスタンス内のメモリ+ストレージ」だけで解決してくれます。Redis を別途立てる必要も、KV のレートリミットに気を遣う必要もありません。

Durable Objects がエージェントに最適な3つの理由

DO の何が優れているのか、エージェント文脈に絞って整理します。

1. グローバルに一意なインスタンス: idFromName(sessionId) を使うと、同じ session_id に対しては地球上のどのリージョンからアクセスしても同じインスタンスにルーティングされます。会話履歴がインスタンス内のメモリにあるので、毎リクエストでデータベースを叩く必要がありません。

2. 強い一貫性のあるストレージ: DO 内の state.storage は、そのインスタンス専用の Key-Value ストアです。Workers のグローバル KV と違ってトランザクション境界が明確で、storage.transaction() で複数の更新をアトミックに行えます。会話履歴とトークン消費カウンタを同時更新するときに役立ちます。

3. 低い固定コスト: DO は呼ばれていない間はメモリから自動的に追い出されます。月100万リクエスト+ストレージ1GB で約 $5 程度に収まり、月数千〜数万 MAU の個人 SaaS でも十分採算が合います。後ほどコスト試算を詳しく扱います。

逆に DO が向かないのは、地理的に分散した「読み取りメイン」のキャッシュ用途です。ここは KV のほうが速いので、用途で住み分ける必要があります。

ここまでお読みいただきありがとうございます。

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
Antigravity で作ったエージェントが「複数ユーザーでセッションが混ざる」「再起動でコンテキストが消える」問題に詰まっていた状況を、1セッション=1 Durable Object の設計で根本から解決できるようになります
会話履歴・ツール呼び出し状態・トークン消費メトリクスを単一インスタンスに閉じ込める実装パターンを、AgentKit 2.0 との接続コードまで丸ごと自分の SaaS に持ち帰れます
1ユーザーあたり月数セントで動く本番運用コスト構造と、同時接続が増えたときの設計判断を理解し、過剰な Redis や KV へのバックアップを止められるようになります
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

お読みいただきありがとうございます

Antigravity Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • コピー&ペーストで使える実装コード付き
  • 毎日新しい上級ガイドを追加
  • ¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

関連記事

連携・プラグイン2026-05-15
Antigravity で Claude Opus 4 / Sonnet 4 を使う — モデル選択の思想と本番実装パターン
Claude Opus 4・Sonnet 4・Haiku 4.5 を Antigravity で活用する実践ガイド。コスト・速度・品質のバランスを取りながら本番環境で動かすための設計思想と実装パターンを解説します。
連携・プラグイン2026-04-22
Antigravity API を Python で本番運用する前に必ず入れる3つの保護装置
リトライ・タイムアウト・サーキットブレーカー — Antigravity API を本番運用する前に必ず入れておきたい3つの保護装置を、実装コード付きで解説します。
連携・プラグイン2026-04-21
Antigravity で作る Gemini Live API リアルタイム音声エージェント — 双方向音声・画面共有・遅延最適化の本番運用ガイド
Gemini Live API で本番品質のリアルタイム音声エージェントを作るために必要なアーキテクチャ、遅延最適化、エラー回復、コスト制御の実装パターンを Antigravity で組み立てる現場向けガイドです。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →