ANTIGRAVITY LABEN
記事一覧/Agents & Manager
Agents & Manager/2026-05-26上級

Antigravity マルチエージェントの状態タイプ階層 — ephemeral / journal / canonical の3層設計と引き継ぎパターン

Antigravity の Background Agent と Sub-agent で状態管理がもつれる前に、ephemeral / journal / canonical の3階層に分けて責任を割り当てる設計則。Cloudflare KV / Durable Objects / R2 / D1 へのマッピング判断と、12年運用の壁紙アプリ群で固まった write-back 境界の決め方を共有します。

antigravity435agents90architecture13state-management2cloudflare-workers8

プレミアム記事

ある朝、Antigravity の Background Agent が前日の AdMob レビュー結果を完全に忘れていて、同じ警告を3回続けて私のメールボックスに投げてきました。Agent run のログを追いかけると、メモリは持っているはずなのに、復元先のキーが微妙にずれて読み出せていなかった、というのが原因でした。アーティスト・クリエイターの廣川政樹(Dolice)です。2014年から個人で iPhone / Android アプリを開発しながら、Antigravity を含むエディタ統合の AI エージェントで日々の運用を回しています。同じような「Agent が情報を覚えていない/逆に覚えすぎている」現象に何度かやられてから、私自身の中で「Agent が抱える情報は、寿命の長さで3階層に分けないと必ず壊れる」という結論にたどり着きました。

本稿はその3階層 — ephemeral / journal / canonical — の責任分界と、Cloudflare Workers の物理ストア(KV / Durable Objects / R2 / D1)への落とし込み方、そして write-back 境界の決め方を、累計5,000万DLの壁紙アプリ群を裏で支えてきた実運用ルールとセットでお渡しします。Background Agent / Sub-agent / Browser Sub-agent を複数本並走させているチーム(あるいは個人)にとって、設計判断を1段落ずつ詰める材料になればと思います。

同じ Antigravity Agent でも、覚えていてほしい情報には3つの寿命がある

Antigravity の Agent が触る情報を雑に「メモリ」と呼んでしまうと、必ずどこかで破綻します。私が実運用で痛い目を見てから採用したのは、以下の3階層に責任を分ける考え方です。

階層寿命失われたときの被害
ephemeral1 runほぼゼロ(再計算可能)中間プロンプト・思考ログ・LLM 出力の生テキスト
journal数日〜数週間中(再現に時間がかかる)意思決定ログ・実験結果・A/B 比較の中間スコア
canonical永続致命傷(サービス本体に直結)公開済み記事スラッグ・ユーザー購入記録・課金状態

ポイントは「失われたときに何が起きるか」で寿命を決めることです。情報量や物理的なサイズではありません。たとえば LLM の長い思考ログは数十万トークンあっても ephemeral で十分ですし、たった 1 件のスラッグ重複検知ログは canonical に置かないと事故ります。

この3階層に分けると、Agent コード側は次の3つだけを意識すればよくなります。

  1. その情報は、次の run で再計算できるか? → できるなら ephemeral
  2. 再計算できないが、最悪「やり直し」が許されるか? → 許されるなら journal
  3. 失えばユーザー体験そのものが壊れるか? → 壊れるなら canonical

これだけです。後述の通り、3層は別々の物理ストアにマッピングしますが、Agent 側コードからは統一的なインターフェースで扱えるようにアダプタを噛ませます。

ephemeral — 1回の Agent run 内だけで生きる作業メモリ

ephemeral は、Agent run の入口で生まれて出口で捨てられる情報です。中間プロンプト、LLM 応答の生テキスト、ファイル一覧の snapshot、検索結果、再計算の途中値、こういったものが該当します。失われても次の run で再生できるので、Cloudflare KV のような共有ストアに置く価値はほぼゼロです。

Antigravity の Background Agent では、私はこの層を Worker のローカルメモリ(つまり JavaScript の Map / Object)で完結させています。コードはこんな雛形です。

// state/ephemeral.ts
export class EphemeralStore {
  private bucket = new Map<string, unknown>();
 
  get<T = unknown>(key: string): T | undefined {
    return this.bucket.get(key) as T | undefined;
  }
 
  put<T = unknown>(key: string, value: T): void {
    this.bucket.set(key, value);
  }
 
  // run 終了時に必ず呼ぶ。意図的に明示する。
  dispose(): void {
    this.bucket.clear();
  }
}

意図的に dispose を明示しているのは、ephemeral を「黙って捨ててもいい」ではなく「能動的に捨てる」ものとして扱いたいからです。Sub-agent から戻ってきた中間 LLM 応答をうっかり journal や canonical に書き込んでしまうと、ストレージコストが青天井になります。私の場合、Background Agent 1本あたり ephemeral だけで 200〜800KB / run を扱うので、月単位だと GB スケールになります。これを真面目に KV に書いていたら月の運用予算 ¥800 では絶対に収まりません。

実装上の落とし穴も一つ。Cloudflare Workers の同一 Isolate が再利用されると、ephemeral として作った Map が次の run まで残ってしまう挙動を踏みました。これは Worker のグローバル変数として保持していた私のミスで、対処として EphemeralStore は必ず run のエントリ関数内で new するように変更しました。本番運用に乗せる前に、Isolate 再利用を意図的に発火させるテストを書くことを推奨します。

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

この記事の続きを読む

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

この記事で得られること
ephemeral / journal / canonical の3階層分類で Agent 間の状態責任を明確化し、月¥800のサブ運用予算で破綻させない設計則
Cloudflare KV / Durable Objects / R2 / D1 のマッピング判断軸と、TypeScript アダプタの最小実装(コミット可能なコード300行)
個人開発12年・累計5,000万DLの壁紙アプリ群を裏で支える、write-back 境界と snapshot タイミングの実運用ルール3つ
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

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

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

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

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

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

関連記事

Agents & Manager2026-06-19
並列にするか、順番に残すか — 複数エージェントを束ねるときの損益分岐
複数のエージェントを並列で走らせるべきか、直列のまま残すべきか。調整コストと待ち時間短縮の損益分岐をざっくり見積もる式と、4サイト運用での実際の線引き、判定を自動化する小さなスクリプトまでまとめました。
Agents & Manager2026-04-27
Antigravity Agent に書き込み権限を安全に渡す — Permission Boundary の本番設計
AIエージェントに本番DBやデプロイ権限を任せる際の Permission Boundary 設計を徹底解説。4階層モデル・ドライラン・承認キュー・監査ログまで実装パターンを示します。
Agents & Manager2026-03-24
Antigravity × Event-Driven Architecture: AIエージェントで構築するリアクティブマイクロサービス設計パターン
Antigravity AIエージェントとEvent-Driven Architectureを組み合わせ、疎結合でスケーラブルなリアクティブマイクロサービスを設計・実装する高度なパターンを実践的に解説します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →