AIエージェントに必要なのはコンテナではなくコンピューター —「@cloudflare/computer」のご紹介
この記事は以下でも利用可能です English、Deutsch、Español、Español (Latinoamérica)、Français、한국어、繁體中文、简体中文.

最も高性能なAIエージェントが持つ共通点は、エージェント専用のコンピューター環境が与えられていることです。
コーディングを担当するエージェントは、まさにこの仕組みで動作し、ファイルシステム、シェル、各種ツール、パッケージ、そしてコードを実行する権限を持ち、その環境を調査し、変更を加え、動作をテストしながら、作業を継続できるだけの機能を備えています。コンピューター環境が与えられていることで、AIモデルは現実世界に対して行動するための、馴染みのある方法を得ることができます。Cloudflareでは、高性能なAIエージェントを構築するために必要となる基本機能(プリミティブ)の提供に取り組んでいます。
本日、私たちは@cloudflare/computerの初期プレビュー版を公開します。@cloudflare/computer パッケージは、AIエージェント向けの実行環境(エージェントランタイム)を提供します。このプラットフォームでは、コードが分離環境(アイソレート)、コンテナ型サンドボックス、Webブラウザーのどこで実行されるかといった細かな仕組みを、プラットフォーム側が管理します。各AIエージェントには専用のコンピューター環境が割り当てられ、ランタイムは処理効率と大規模な拡張性を最適化します。
私たちは、AIエージェントを活用したシステムに必要なコンピューティング能力への需要が今後さらに高まると考えています。そのためには、従来のコンテナ技術だけに頼るのではなく、新しい解決策を検討する必要があります。
AIエージェントの構築方法が変化している
直近6か月の間に、AIエージェントの構築方法には少しずつ変化しています。今年の初め頃は、コンテナを起動し、その中でAIエージェントを動作させる方法が一般的でした。しかし最近では、AIエージェントの実行基盤(エージェントハーネス)が、ツールを通じて隔離されたコード実行環境(サンドボックス)を提供する方式へ急速に移行しています。これにより、作業を実際に行う「手」(コードを実行するサンドボックス環境)と、判断や指示を行う「頭脳」(AIエージェントの処理ループ)を分離できるようになります。

エージェントを動かす仕組み(ハーネス)がどこで実行されるかに関係なく、すべてのAIエージェントに専用コンテナを割り当てる方法には大きな課題があります。あらゆるクラウドサービスや大規模クラウド事業者(ハイパースケーラー)を合わせても、世界中のすべての企業が、自社ユーザーのAIエージェント1つひとつに専用のコンテナ型コンピューティング環境を提供できるほどの計算資源は存在しません。この方法では、同時に数億、さらには数十億ものAIエージェントを稼働させる規模には対応できません。そのため現在、業界ではGPUだけでなく、CPUコンピューティング能力に対する強い、切迫した需要が生まれています。
Cloudflareでは、この問題に長年取り組んできました。そして、より効率的なコンピューティング基盤となる「アイソレート」を開発してきました。私たちは約10年前、Cloudflare Workersを発表した際に、この当時としては一般的な考え方とは異なるこの技術に大きく投資しました。さらに約6年前、Durable Objectsを発表した際にも、同じ考え方を採用しました。なぜこの選択をしたのか。それは、アイソレートが無限に近い水平方向のスケール拡張に対応できるからです。アイソレートは非常に高速に起動・終了できます。また、AIエージェントが待機中の場合は休止状態(ハイバネーション)に入り、エージェント自身の状態を保持することもできます。さらに、信頼できないコードを安全に実行するために、エージェント自身が専用のアイソレートを起動することも可能です。アイソレートは、大規模な水平スケールを実現するための最適な方法です。そして、AIエージェントが求めているのは、まさにその水平スケールなのです。

昨年、私たちはアイソレートから独自にコンテナサンドボックスを起動できる機能を追加しました。Cloudflareのアーキテクチャは、最初からアイソレート(具体的にはDurable Object)の中でAIエージェントの実行基盤(エージェントハーネス)を動かし、必要なときだけ接続されたコンテナをツールとして呼び出す設計になっています。この方式により、より大きな計算能力が必要な場合にだけ、高負荷なコンピューティング環境を利用できます。その結果、処理性能を維持しながら、コストも最適化できます。Durable Objectsは水平方向に無限にスケールでき、さらに接続されたコンテナによって必要に応じて処理能力を垂直方向にも拡張できます。これはCloudflare自身がAIエージェントを構築する際にも採用している方法であり、顧客も同じ仕組みを使って、非常に高度なサービスを開発しています。

しかし、AIエージェントを構築するには、複数の基盤となるコンピューティング環境(アイソレートやコンテナ)が必要であり、さらに開発者やお客様自身がそれらを組み合わせて利用する必要があります。私たちは、この仕組みをもっと改善できると考えています。よりシンプルな抽象化(使いやすい統一的な仕組み)を提供できるはずです。
そこで、この実験的な取り組みの第一弾として、@cloudflare/computerをオープンソースライブラリとして提供します。AIエージェントの大規模運用に挑戦しているお客様と協力しながら、最適な形を探っていきます。
アイソレートとコンテナで共有できるファイルシステム
@cloudflare/computerは、AIエージェントに、あらかじめ必要なファイルがそろったファイルシステムと、そのファイルを扱うための複数の実行環境を提供したらどうなるだろうかという、シンプルな考え方から生まれました。
実際には、現在のAIエージェントは、そのときの作業内容に応じて適切な実行環境を選ぶ能力をすでに備えています。例えば、ファイルの編集、データ処理、Gitリポジトリの管理といった比較的軽い作業であれば、アイソレートで実行できます。一方、Linux環境やnpm、ネイティブバイナリを必要とする処理は、コンテナで実行できます。どちらの実行環境を使用する場合でも、同じファイルシステムを共有して作業を行います。また、各環境で変更された内容は、元となるファイルシステムと常に同期されます。

@cloudflare/computerは、永続的に利用できるファイルシステムを提供します。このファイルシステムは、Gitリポジトリやストレージバケット、その他の任意のファイルと組み合わせて利用できます。また、Code Modeやbashコマンドを使用して、ファイルの読み取り、書き込み、編集を行うためのツールも提供します。すべての操作はゲート制御、監査、監視され、エージェントが実行できる変更をきめ細かく制御できるだけでなく、エージェントが実行した内容を示す監査ログも確認できます。
使用方法
@cloudflare/computerのワークスペースは、任意のDurable Object上に作成でき、仮想ファイルシステムと実行環境を提供します。
インストールは、npmから行います。
npm install @cloudflare/computer主な用途は、このファイルシステムと各種ツールをAIエージェントに提供することです。たとえば、バグ報告をトリアージする目的で、@cloudflare/think を利用したエージェント上でワークスペースをインスタンス化する方法は次のとおりです。
import { Think } from "@cloudflare/think";
import { Workspace, type DurableObjectStorageLike } from "@cloudflare/computer";
import { createWorkersAI } from "workers-ai-provider";
export class Agent extends Think {
override workspaceBash = false;
override workspace = new Workspace({
storage: this.ctx.storage,
useThink: true, // soon will not be needed
});
override getModel() {
return createWorkersAI({ binding: this.env.AI })("@cf/zai-org/glm-5.2");
}
override getSystemPrompt() {
return `
You are a bug triage agent.
Use the project in /workspace/repo to reproduce the bug, inspect the
code, make a focused fix when it is safe, and run verification. In your
final answer, include what you changed, which commands you ran, and
whether verification passed.`;
}
}@cloudflare/computerには、複数の実行バックエンドがあらかじめ用意されています。また、独自の実行バックエンドを作成して利用することもできます。ここでは、Cloudflare Containerを実行バックエンドとして設定します。
import { Think } from "@cloudflare/think";
import { Workspace, WorkspaceProxy } from "@cloudflare/computer";
import {
CloudflareContainerBackend,
withWorkspaceContainer,
} from "@cloudflare/computer/backends/container";
export { WorkspaceProxy };
export class Agent extends withWorkspaceContainer(Think) {
override workspaceBash = false;
override workspace = new Workspace({
storage: this.ctx.storage,
useThink: true, // soon will not be needed
backends: [
new CloudflareContainerBackend({
container: () => this,
workspace: {
binding: "Agent",
id: this.ctx.id.toString(),
},
}),
],
});
/* Example code truncated for readability... */
}報告された問題への対応に利用できるよう、ファイル、Git、シェル関連のツールに加え、製品固有のツールも公開します。
import { createAITools } from "@cloudflare/computer/tools";
import type { ToolSet } from "ai";
import { replyToIssue } from "./tools/github";
export class Agent extends withWorkspaceContainer(Think) {
override workspaceBash = false;
/* Example code truncated for readability... */
override getTools(): ToolSet {
return {
...createAITools({
workspace: this.workspace,
shell: {
defaultBackend: "container",
backends: {
container: {
description:
"Cloudflare Container with a full Linux userland: " +
"npm, node, package managers, test runners, and real " +
"binaries on $PATH. Use it when a task needs more than " +
"file manipulation.",
},
},
},
}),
replyToIssue,
};
}
}AIエージェントは処理の実行中にツールを利用できます。また、エージェントへプロンプトを送る前に実行環境を準備する場合などには、ワークスペースAPIを直接利用することも可能です。
export class Agent extends withWorkspaceContainer(Think) {
override workspaceBash = false;
/* Example code truncated for readability... */
async startTriage(report: { title: string; body: string; repoUrl: string }) {
await this.workspace.fs.mkdir("/workspace", { recursive: true });
await this.workspace.fs.writeFile(
"/workspace/BUG_REPORT.md",
`# ${report.title}\n\n${report.body}\n`,
);
await this.workspace.git.clone({
url: report.repoUrl,
dir: "/workspace/repo",
});
return this.submitMessages([
{
id: crypto.randomUUID(),
role: "user",
parts: [
{
type: "text",
text: [
`Triage this bug: ${report.title}`,
"The bug report is in /workspace/BUG_REPORT.md.",
"The repository is checked out at /workspace/repo.",
].join("\n"),
},
],
},
]);
}
}ワークスペースのリポジトリには、各種バックエンドやツールの利用例のほか、AIエージェントを一から構築する方法を順を追って解説したチュートリアルも用意されていますのであわせてお読みください。
仕組み
@cloudflare/computerの中核となるのがワークスペースです。ワークスペースは、SQLiteをバックエンドに使用した仮想ファイルシステムで、クラウドストレージやソースコード管理システムなど、さまざまなソースから内容を取り込むことができます。

ワークスペースは、ファイルシステム上でコードを実行するためのオプションの実行ランタイムをサポートしています。すべてのランタイムは共通のインターフェース exec(string, options) をサポートしており、現在は次の2種類が標準で提供されています(独自のランタイムを作成することも可能です):
- アイソレートベースの実行環境:just-bashを使用してシェルコードをJavaScriptへ変換し、動的なWorker上で実行します。この環境では、ファイルシステムはWorkerバインディングを介して直接利用できます。
- コンテナランタイム:Cloudflare Containersを使用して、完全なLinux環境を提供します。この環境では、ファイルシステムは Filesystem in Userspace(FUSE) としてマウントされます。これにより、コンテナからファイルシステムへアクセスでき、加えられた変更は元のファイルシステムへ同期されます。
Workspaceクラスは、ファイルシステムを直接操作するためのAPIに加え、Node.jsのnode:fsと互換性のあるラッパーも提供しています。そのため、サードパーティ製のJavaScriptライブラリとも容易に組み合わせて利用できます。

AIエージェント向けには、AI SDKと互換性のあるツールキットを提供しています。このツールキットには、read、write、edit、ls、execといった、よく使用される基本的なツールが含まれています。このうち exec ツールは少し特殊で、backend 引数を指定することで、複数の実行ランタイムをまたいで動作します。ツールの説明には、現在のタスクに適した実行ランタイムをAIエージェントが選択できるような情報が含まれています。例えば、高速かつ低コストなWorkerバックエンドを使用するか、より多くの機能を備えたコンテナを使用するかを判断できます。私たちのテストでは、最先端のAIモデルはこの判断を非常に高い精度で行い、本当に必要な場合にのみコンテナを利用することが確認されています。
今後の展開
Cloudflareではすでに、AIエージェントがアイソレートだけを使用して、最新の開発ツールを利用したJavaScriptアプリケーションの構築・テスト・デプロイを行ったり、各顧客向けに最適化されたドキュメントを作成したり、Webブラウザーを使って複雑な作業を実行したりする事例が見られています。
@cloudflare/computerの目標は、AIエージェントの作業のうち、コンテナが必要になる割合を10%未満に抑え、コード作成、音声・動画の編集、ドキュメント作成といった処理を、すべてアイソレート上で実行できる実行環境を提供することです。
ぜひ本日から早期プレビュー版をお試しください。皆さまからのご意見を楽しみにしています。

