Cloudflare Agents
「動き続ける」AI を作る

記憶を持ち、自律的に考え、ツールを使うエージェントを、エッジで。

Agents SDK 入門 / 仕様・ユースケース・拡張性・Workers AI との違い

Part 01

そもそも Agent とは何か

Worker は「応答して消える」。Agent は「覚えて・考えて・動き続ける」。

「応答する関数」から「自律する存在」へ

従来の Worker

  • リクエスト → レスポンスで 消える
  • 状態を持たない(ステートレス)
  • 呼ばれない限り動かない
  • 1回の処理が完結したら終わり

Agent

  • 長命・固有のID(インスタンス)を持つ
  • 記憶を保持する(状態・会話履歴)
  • 自分で起きる(予約・メール・Webhook)
  • 多段の処理を 耐障害で進める
Agent = 状態 × 自律 × ツール を一つにまとめ、Cloudflare エッジに 常駐して動き続けるアプリケーション

キーは Durable Object =「1ユーザー1インスタンス」

インスタンス = 実体

1エージェント=1 Durable Object。ユーザーごと・部屋ごとに 独立して存在する。

SQLite を内蔵

各インスタンスに 専用ストレージ。状態も会話履歴もその場に永続化。

グローバルに分散

330+ 都市のエッジで動き、利用者の近くで 無限にスケール

アドレス指定でルーティング

/agents/{種類}/{インスタンス名} に届く。名前を指定すれば、その実体に必ずつながる。

クライアントは React フックで接続

useAgent({ agent, name }) で WebSocket 接続。状態は自動同期。

最小の Agent — 状態と RPC が標準装備

src/index.ts
import { Agent, callable, routeAgentRequest } from "agents";

export class Counter extends Agent<Env, { count: number }> {
  initialState = { count: 0 };          // 永続化される状態

  @callable()                             // クライアントから直接呼べる
  increment() {
    this.setState({ count: this.state.count + 1 }); // 即、全端末へ同期
    return this.state.count;
  }
}

export default {
  fetch: (req, env) => routeAgentRequest(req, env)
};
状態の永続化・クライアント同期・RPC・WebSocket が 最初から組み込み。インフラの作り込みはゼロ。

主要機能 — エージェントに必要なものが一式

状態 & 同期

setState / 自動クライアント同期 / 内蔵 SQL(this.sql)

RPC(@callable)

クライアントから型安全に呼び出し / ストリーミング対応

スケジューリング

遅延・繰り返し・cron で 自分を起こす

Workflows / 耐久実行

多段処理を再試行つきで / DO 退避を越えて継続

Queue / Retries

内蔵 FIFO キュー / 指数バックオフ再試行

チャット / MCP / 入出力

AIChatAgent・MCP・Email・Webhook・Push・音声(実験)

「記憶」「自律(予約)」「多段の耐久処理」「ツール接続」「リアルタイム」を 1フレームワークで
Part 02

Developer Platform + Workers AI
と何が違う?

部品は前からあった。Agents はそれを「実体」として一体化する上位レイヤー。

レイヤーの違いを一枚で

Workers AI Developer Platform Agents SDK
役割 モデル推論(頭脳) 計算・保存の部品 部品を統合した実体
状態 なし(1回の入出力) DO/KV/D1/R2 で個別に 標準で永続+同期
自律性 呼ばれたら答える Cron/Queue を自分で用意 予約・メール等で自走
位置づけ 手足・記憶 神経系(統合)
Workers AI / Workers / DO / Queues / Workflows は 部品。Agents はそれらを「記憶を持ち自律的に動く1つの存在」として ひとまとめに提供

本質:自分で組み合わせるか、最初から一体になっているか

これまで(部品を自分で組む)

  • 状態は Durable Object を自前で実装
  • 定期実行は Cron Trigger を別途設定
  • 会話履歴の保存・再開を自作
  • WebSocket・再接続・同期を自前で実装

Agents(一体になっている)

  • 状態・同期・履歴・再開が 標準装備
  • schedule() 一行で自走
  • AIChatAgent でストリーミング&永続化
  • MCP・ツール・Workflow も同じ流儀で
同じ Cloudflare 網の上で、Workers AI(推論)・ストレージ・計算が 隣り合って動くから、統合しても速くて安い。
Part 03

ユースケースと拡張性

「記憶 × 自律 × ツール」が効く場所と、Cloudflare 完結か外部連携かの見極め。

ユースケース

記憶を持つアシスタント

家庭教師・カスタマーサポート・パーソナルコーチ

自律タスク

リサーチ・監視・要約・定期レポート生成

スケジュール駆動

定期ポーリング → 判断 → 通知 / アクション

MCP サーバー/クライアント

外部ツール群と接続、または自分をツールとして公開

耐久ワークフロー

多段・長時間・再試行が必要な業務処理

リアルタイム協調 / 音声

共同編集・マルチプレイ・音声エージェント

拡張性 — 小さく始めて、無限に伸ばす

能力を足す

  • ツール(function calling)で行動を追加
  • MCPで外部ツールに接続/自分を公開
  • Workflow で長時間処理、HITL で人の承認

規模を伸ばす

  • インスタンス単位で 世界中に自動分散
  • 従量課金 — 使わなければほぼ無料
  • マルチエージェント(エージェント同士が連携)
プロファイルや設定を データとして差し替えるだけで、用途・世代・言語を横展開できる。

Cloudflare で完結か、外部と連携か — 見極め

Cloudflare 完結が向く

  • 低レイテンシ・即応が最優先(エッジで処理)
  • 状態・会話・軽量データで足りる(DO/KV/D1/R2)
  • 新規・PoC・小さく始めてグローバル配信

外部(ハイパースケーラー / オンプレ)と連携

  • 基幹DB・業務システムが既に外にある
    データ重力あり
  • 大規模学習・GPU 専用処理・特殊な基盤
  • データ所在・規制(データレジデンシー)

Hyperdrive

既存 Postgres 等へ低レイテンシ接続

Tunnel

オンプレを穴を開けず安全に接続(単一方向)

Mesh

バックエンド同士を 相互にメッシュ接続

AI Gateway / MCP

外部LLM・外部ツールを集約して呼ぶ

基本形:Cloudflare を 「判断と即応の頭」に置き、重い処理や既存データは外部へ委譲。R2 は下り無料でクラウド間のデータ移動コストも抑えられる。

実例:今回作った「AI 家庭教師」も Agent

1生徒ごとに 1インスタンス(学習状態を記憶)
2AIChatAgent で会話を永続化&ストリーミング
3Workers AI(Llama / Whisper)で指導・音声認識
4@callable で学年・キャラ設定を切替
5Hono で保護者API(認証つき)

Agents だから簡単だったこと

  • 生徒ごとの記憶=DOが標準提供
  • 会話の保存・再開を 書かずに実現
  • 設定変更は RPC 一行で即同期
  • 世代別への拡張は 設定追加だけ

構成:Agents SDK(Durable Object)+ Workers AI + Hono + React。部品を統合する手間をSDKが引き受ける

まとめ

Agent とは

記憶 × 自律 × ツールを一体化した、エッジで動く「実体」。

違いは「統合」

部品(Workers AI/DO/…)を 自分で組み合わせず、SDKが一体で提供。

強みは Cloudflare 網

推論・記憶・計算が 同じ網で隣接。速く・安く・無限に。

小さく始めて、ツール・MCP・ワークフローで無限に伸ばせる。「動き続ける AI」を作るための最短距離。

Thank you

Cloudflare Agents = 記憶を持ち、自律的に動く AI を、エッジで組み立てる。