このコンテンツは自動機械翻訳サービスによる翻訳版であり、皆さまの便宜のために提供しています。原本の英語版と異なる誤り、省略、解釈の微妙な違いが含まれる場合があります。ご不明な点がある場合は、英語版原本をご確認ください。
2026年は、エージェントを活用して本番環境に移行する年です。モデルの外部世界へのアクセスを制御するソフトウェア(Codeex、Claude Code、OpenCode、Pi、Project Thinkなどを利用)は、チームが単なるプロトタイプではなく、実際の、負荷がかかるインフラストラクチャとしてデプロイできるまで成熟しました。
しかし、本番稼働を続けるエージェントを構築するのは簡単ではありません。
当社は、Project Thinkの構築を身をもって体験し、ファーストパーティのエージェントを活用することを学びました。お客様と協力してエージェントを本番環境で実行する中で、クラウドで実行する場合、どのエージェントも直面する共通の分散システム問題がいくつか明らかになりました。エージェントが中断された場合、コンテキストを失ったり、トークンを浪費したりすることなく、中断した場所から自動的に再開できるのでしょうか?エージェントが信頼できないコードを安全に実行するにはどうすればいいでしょうか?エージェントはトレーニングを受けたツールをどのように活用できるでしょうか?
これらの問題は、ハーネスだけで解決することはできません。ステート、ストレージ、コンピューティングに縛られています。つまり、エージェントが実行するプラットフォームに依存しているのです。そのため、本番環境向けにProject Thinkを強化した際の知見を活かし、それをCloudflare Agents SDKの基盤レイヤーとして導入しています。耐久性のある実行、動的コード実行、耐久性のあるファイルシステム、動的ワークフローが、Agents SDK上に構築するあらゆるハーネスで利用可能になりました。
同時に、ハーネスの上に新たな層が出現しました。Flueのようなフレームワークは、エージェントの構築を生産的にするプロジェクト構造、慣行、統合、開発者エクスペリエンスを包含します。
こうしたスケーリングの課題を解決するために、プロダクショングレードのAIを構築するための新しい3層スタックが登場しています。ユーザー向けの開発者エクスペリエンスから基盤となるプラットフォームのプリミティブまで、この構成要素がどのように組み合わされるかは、以下の通りです:
フレームワーク(Flue) — プロジェクト構造、規則、統合、CLI、エージェント構築のための開発者エクスペリエンス。
ハーネス (Pi, Project Think) — ツールを呼び出し、結果を読み取り、コンテキストを管理し、タスクが完了するまで進行し続けるエージェンティックループ。
ランタイム/プラットフォーム (Cloudflare Agents SDK) — 上記のすべてが依存するコンピューティング、状態、ストレージのプリミティブ
Agents SDKはその最下層であり、あらゆるハーネスやあらゆるフレームワークで利用できる耐久性のある実行のようなプリミティブを作成します。Astroの背後にいるチームが提供する新しいオープンソースフレームワークであるFlueは、Astroを基盤として構築された最初のものです。方法はこちらから。
Flueは今週、OpenClawを構築しているのと同じPiだけのハーネスを使用して構築された1.0ベータ版をリリースしました。エージェントフレームワークとして異なるのは、そのアプローチです。エージェントが行うことをスクリプトではなく、エージェントが知っていることを記述します。エージェントに必要なコンテキスト(モデル、スキル、サンドボックス、指示)を定義し、与えられたタスクを自律的に解決します。オーケストレーションループを書く必要がありません。
この宣言的モデルによって、エージェントの作成は容易になります。ここではバグレポートを傍受し、サンドボックスで再現し、25行以下で問題を診断するトリアージエージェントを紹介します。
Flueのパワーは、エージェントが単独では存在しないという事実から生まれるのです。ユーザーがすでに作業している場所に存在するように構築され、好みのツールと統合することができます。
どこでもエージェント:イベント検証を処理する事前設定されたChannelsで、エージェントをSlack、GitHub、Linear、Discordにドロップすることができます。
ヘッドレス、しかしUI対応:エージェントがブラックボックス内に置かれてはならない。Flueエージェントはバックグラウンドタスクのために完全にヘッドレスで実行できますが、@flue/reactは、エージェントの状態、ツールの実行、ライブメッセージをフロントエンドアプリケーションに直接ストリーミングするネイティブなフロントエンドフックを提供します。カスタムリアルタイムプラミングをゼロから構築する必要はありません。
エコシステム対応: Flue を使用すると、flue add channel slack のようなコマンドで統合の追加やアップグレードが簡単になり、独自のコーディングエージェントが読み取り、変更し、コードベースに直接クリーンに統合できる Markdown 設計図が生成されます。
エージェントをローカル端末から本番エコシステムに移動させると、従来型の分散型システム障害が発生します。ホストのクラッシュ、LLMプロバイダーからのAPIタイムアウト、予期しない再起動により、実行中のエージェントターンの短期記憶が消去される恐れがあります。
FlueはDurable Streamsでこれを解決します。実行履歴の各イベントは、追加専用ログに追加されます。すべてのプロンプト、ツール応答、モデルの選択を変更不可能な台帳として処理することで、エージェントの状態は決して変動しません。プロセスが終了すると、別のプロセスはログを取り上げ、中断したステップから続行します。
Flueはマルチクラウドフレームワークです。Node.jsでは、各エージェントは長期間実行されるプロセスとして動作します。任意のVMやコンテナにデプロイし、GitHub Actionsで実行したり、既存のサーバーに埋め込むことができます。しかし、Cloudflareを標的にすると、各エージェントはDurable Objectになります。
各FlueエージェントをそれぞれのDurable Object内で実行することで、Cloudflareは必要な数のエージェントに自動的に拡張でき、それぞれが分離されたストレージとコンピューティングを備えています。サーバーのプロビジョニングも、費用対効果の高いセッションを管理する必要も、煩雑な近隣者を心配する必要もありません。また、FlueエージェントをCloudflareにデプロイすると、Agents SDKのrunFiber()、stash()、onFiberRecovered()メソッドを使って耐久性のある実行を実現します。Flueは、@cloudflare/codemodeと@cloudflare/shellを使用して、耐久性のあるワークスペースに対するサンドボックス化されたコード実行を行うこともできます。
FlueのCloudflareターゲットは、私たちがAgents SDKに組み込んだコアプリミティブに明確にマッピングされるため、非常に効果的に機能します。Flueのソースコードを調べれば、基盤となるハーネスであるPiがCloudflare Agents SDK上でどのように動作するように適応されているかを理解することもできます。
FlueがどのようにAgents SDKをその内部で活用しているか、そして最新のエージェントを確実に、大規模に実行するために必要な要素をご紹介します。
エージェントを活用する場合は、すべて耐久性のある実行が必要
エージェントターンは単一のリクエストではありません。このモデルは、トークンをストリーミングしたり、ツールを呼び出したり、結果を待ち、人間に承認を求めたり、サブエージェントに作業を委任したりすることもあります。この一連の動作には数秒かかる場合があり、その時点で、プロセスが中断されたり、クラッシュしたりする可能性があります。そうなると、メモリにあったエージェントの状態はすべて消えてしまいます。エージェントが順番に作業していたストリーミング接続、保留中のツール呼び出しなどです。もちろん、会話履歴はディスクに残りますが、ユーザーには解決されないスピナーが見えます。それはユーザー体験の悪化です。
Fibersは、エージェントの基盤となるDurable Object内部に直接ネイティブチェックポイントメカニズムを提供することで、この問題を解決します。runFiber() は、エージェントターンの作業が開始される前にDurable ObjectのSQLiteストレージへの進行状況を記録し、ターンが進むに伴い、stash() でチェックポイントを作成します。中断後に新しいエージェントインスタンスが起動すると、onFiberRecovered()は最後のチェックポイントを配信するため、エージェントはターンが中断されたことを認識し、どこに到達したのかを認識し、続行方法を決定することができます。
import { Agent } from "agents";
import type { FiberRecoveryContext } from "agents";
class MyAgent extends Agent {
async doWork() {
await this.runFiber("my-task", async (ctx) => {
const step1 = await expensiveOperation();
ctx.stash({ step1 });
const step2 = await anotherExpensiveOperation(step1);
this.setState({ ...this.state, result: step2 });
});
}
async onFiberRecovered(ctx: FiberRecoveryContext) {
if (ctx.name !== "my-task") return;
const { step1 } = (ctx.snapshot ?? {}) as { step1?: unknown };
if (step1) {
const step2 = await anotherExpensiveOperation(step1);
this.setState({ ...this.state, result: step2 });
}
}
}
Flueは、まさにこれのために、CloudflareターゲットでrunFiber()を使用しています。onFiberRecovered()フックを使用することで、ハーネスは、ターンの状態を修復するProject Thinkのような完全な再構築モデルを試みるか、ターンの特定の部分を再現するかなど、ターンの実行を再開する方法を決定することができます。
エージェントを活用することで、モデルはツールを通じて外部世界へアクセスできるようになります。しかし、ツール対象領域は急速に拡大しており、リストが長くなり、コンテキストウィンドウがツール定義でいっぱいになると、モデルは適切なツールを選ぶのが難しくなります。より良いパターンは、コードを実行する1つのツールをモデルに与えることです。モデルは、必要なAPIを呼び出すTypeScript関数を記述し、ハーネスはそれを実行します。これについては、コードモードを導入した時に書きました。
問題は、そのコードがどこで実行されているかです。LLMで生成されたコードを安全に実行するには、サンドボックスが必要です。しかし、一般的なサンドボックスでは、ツール呼び出しごとに実行するのに遅く、法外なコストがかかり、非効率的です。そのため、Agents SDKは、@cloudflare/codemodeを提供し、Dynamic Workersをラップして、提供されたバインディングのみで、LLMが生成したコードを独自のWorker分離環境で実行します。
コードモードは、各スニペットごとに新しいDynamic Workerを作成し、実行し、破棄します。分離は10ミリ秒以内、1読み込みあたり0.002ドルから開始でき、エージェントが短いコードを実行する必要があるたびにコンテナを起動するよりも大幅に速く、低い実行コストが得られます。Flueは、Cloudflareターゲットで@cloudflare/codemodeを使用してコードツールを強化します。エージェントはワークスペースに対してJavaScriptを記述し、コードモードで実行します。
ワークスペースのほとんどのタスクにフルコンテナは不要
エージェントの利用は、ファイルの読み取り、アウトプットの書き込み、コードの検索、相違の理解など、ファイルシステムを必要とすることがよくあります。特にコーディングエージェントはファイルシステムに存在します。しかし、ハーネスがサーバーレス環境で実行されている場合、実行をまたいで永続的になる耐久性のあるファイルシステムを実現するにはどうすればよいのでしょうか。
よくある答えはコンテナです。効果はあるものの、エージェントの主な仕事にとっては高価です。エージェントが生成するファイルシステム操作の大半はテキストです。ファイルを読み取ったり、ソースコードを解読したり、パッチを記述することのできるレビューエージェントを考えてみましょう。そのため、完全なLinuxブートは必要ありません。
@cloudflare/shellは、エージェントのDurable Object内に、SQLiteに支えられた耐久性のある仮想ファイルシステムを提供します。エージェントがツールとして使用できる、型付けされたファイル操作(読み取り、書き込み、編集、検索、情報収集、定義)が可能です。
個々のツールを呼び出す代わりに、Cloudflareターゲット上で実行されるFlueエージェントは、ワークスペースの仮想ファイル状態APIに対してJavaScriptを書き込みます。Durable Object内でより多くの操作を実行することで、エージェントは分離モデルのより効率的な実行プロセスの恩恵を受け、コンテナのオーバーヘッドを完全に回避することができます。
async () => {
const files = await state.glob("src/**/*.ts");
const results = [];
for (const file of files) {
const content = await state.readFile(file);
const todos = content.match(/\/\/ TODO:.*/g);
if (todos) results.push({ file, todos });
}
return results;
}
これは、シェルおよびファイルシステム操作を実行して作業を完了するエージェントにとって、より高速でコスト効率の高いサンドボックス環境になります。また、npmインストール、git、またはコンパイラーを実行するために完全なOSを必要とするエージェントのために、 Cloudflare Containersがそれを提供します。また、@cloudflare/workspaceも構築中です。これにより、特定のDurable Objectの仮想ファイルシステムをコンテナと同期して、軽量なWorkersからLinux環境へのシームレスな移行が必要な時だけ可能になります。
動的ワークフロー:エージェントが独自のワークフローを作成でき、一貫してタスクを繰り返します。
しかし、エージェントがファイルを読んだり、単一のコードスニペットを実行する以上のことを行う必要がある場合はどうなるでしょうか。バグをうまく解決するコードレビューや、良い結果を生み出すリサーチワークフローなど、時間をかけて一貫して繰り返さなければならない、大規模で複数のステップを踏む必要がある場合はどうなるのでしょうか?ハーネスは、耐久性のあるマルチステップ実行を可能にします。プラットフォームは各ステップを永続化し、失敗の再試行を行い、中断後に再開する必要があります。
このパターンは広がりつつあります。Claude Codeは最近、動的ワークフローをリリースしました。これは、Claudeが実行時にJavaScriptスクリプトを記述し、数十のサブエージェントに作業を引き渡し、ランタイムがそれを永続的に実行するものです。@cloudflare/dynamic-workflowsは、Agents SDK上で実行されているハーネスに対してこれを提供します。エージェントは実行時にワークフローを生成し、Workflowsエンジンは各ステップを実行し、失敗を再試行し、何時間もスリープしたり、人間の承認などの外部イベントを待つことができます。
エージェントクラスから、runWorkflow()は、エージェントをWorkflowsエンジンに接続します。エージェントはワークフローを開始して、スリープ状態にすることができます。ワークフローはRPC経由でエージェントに生じ、進捗の報告、状態の更新、または承認リクエストを行います。ワークフローが終了すると、エージェントは結果を返して起動します。
エージェントを活用する場合、コンピューティングとストレージに加えて、Webブラウジング、メール、メモリ、検索、推論などの外部機能へのアクセスも必要とします。利用者は、これらを個別に統合したり、それぞれのAPIキーを管理したり、エージェントが生成したコードを通じて認証情報が漏洩することを心配する必要はありません。
Agentクラスは、バインディングを通じてCloudflareの他の部分へのアクセスを可能にします。AI Gatewayはエージェントごとの支出追跡と制限のため、Browser RunはWeb自動化のため、Email Serviceは受信トレイワークフローのため、Agent Memoryは永続的な呼び出しのため、AI Searchは検索のため、ContainersはフルOSを必要とするワークロードのため、そして14以上のモデルプロバイダーにわたる推論に対応します。バインディングは、認証情報を公開せずに機能を付与します。エージェントはバインディングを使用しますが、キーがエージェント生成コードを入力することはありません。
エージェンティッククラウドへエージェントを導入する
このアプローチが有効なのは、Project Thinkを構築する際に使用したアーキテクチャの基盤であり、当社のファーストパーティエージェントが活用できることを私たちは知っています。Project Thinkは依然としてCloudflareエージェントのネイティブエージェント体験のための高度に最適化された、すぐに使えるソリューションですが、Agents SDKは、より広範なオープンソースエコシステムがFlueを含む、攻撃テスト済みのプリミティブを活用できるようにします。
Flueを使ってエージェントを構築している場合、わずか数クリックでCloudflareにデプロイできます。独自のエージェント活用機能を構築したり、エージェントフレームワークを構築したりする場合は、Agents SDKを対象とすることで、無料でプラットフォーム統合を利用できます。