SDK Agents Cloudflare
Votre connaissance du SDK Agents peut être obsolète. Préférez la récupération à la pré-formation pour toute tâche liée au SDK Agents.
Sources de récupération
Docs Cloudflare : https://developers.cloudflare.com/agents/
| Sujet | URL Docs | Utiliser pour |
|---|---|---|
| Démarrage | Quick start | Premier agent, configuration du projet |
| Ajouter à un projet existant | Add to existing project | Installer dans une app Workers existante |
| Configuration | Configuration | wrangler.jsonc, bindings, assets, déploiement |
| Classe Agent | Agents API | Cycle de vie agent, patterns, pièges |
| État | Store and sync state | setState, validateStateChange, persistance |
| Routage | Routing | Patterns d'URL, routeAgentRequest |
| Méthodes appelables | Callable methods | @callable, RPC, streaming, timeouts |
| Planification | Schedule tasks | schedule(), scheduleEvery(), cron |
| Workflows | Run workflows | AgentWorkflow, tâches multi-étapes durables |
| HTTP/WebSockets | WebSockets | Hooks de cycle de vie, hibernation |
| Agents de chat | Chat agents | AIChatAgent, streaming, tools, persistance |
| Client SDK | Client SDK | useAgent, useAgentChat, React hooks |
| Outils client | Client tools | Outils côté client, autoContinueAfterToolResult |
| Messages pilotés par le serveur | Trigger patterns | saveMessages, waitUntilStable, tours initiés par le serveur |
| Streaming reprise | Resumable streaming | Récupération de stream à la déconnexion |
| Routage email, secure reply resolver | ||
| Client MCP | MCP client | Connexion aux serveurs MCP |
| Serveur MCP | MCP server | Construire des serveurs MCP avec McpAgent |
| Transports MCP | MCP transports | HTTP streamable, SSE, options de transport RPC |
| Sécuriser les serveurs MCP | Securing MCP | OAuth, proxy MCP, renforcement |
| Boucle humaine | Human-in-the-loop | Flux d'approbation, needsApproval, workflows |
| Exécution durable | Durable execution | runFiber(), stash(), survivant à l'éviction DO |
| Queue | Queue | Queue FIFO intégrée, queue() |
| Tentatives | Retries | this.retry(), backoff/jitter |
| Observabilité | Observability | Événements diagnostics-channel |
| Notifications push | Push notifications | Web Push + VAPID depuis les agents |
| Webhooks | Webhooks | Recevoir des webhooks externes |
| Auth multi-domaines | Cross-domain auth | Auth WebSocket, tokens, CORS |
| Connexions en lecture seule | Readonly | shouldConnectionBeReadonly |
| Voix | Voice | STT/TTS expérimental, withVoice |
| Naviguer sur le web | Browser tools | Automatisation navigateur CDP expérimentale |
| Think | Think | Classe agent de chat expérimentale haut niveau |
| Migrations | AI SDK v5, AI SDK v6 | Upgrade @cloudflare/ai-chat |
Capacités
Le SDK Agents fournit :
- État persistant — Soutenu par SQLite, auto-synchronisé aux clients via
setState - RPC appelable — Méthodes
@callable()invoquées via WebSocket - Planification — Tâches uniques, récurrentes (
scheduleEvery), et cron - Workflows — Traitement multi-étapes durable via
AgentWorkflow - Exécution durable —
runFiber()/stash()pour le travail survivant à l'éviction DO - Queue — Queue FIFO intégrée avec tentatives via
queue() - Tentatives —
this.retry()avec backoff exponentiel et jitter - Intégration MCP — Se connecter à des serveurs MCP ou construire les vôtres avec
McpAgent - Gestion des emails — Recevoir et répondre aux emails avec routage sécurisé
- Chat streaming —
AIChatAgentavec streams reprenables, persistance des messages, tools - Messages pilotés par le serveur —
saveMessages,waitUntilStablepour les tours agents proactifs - React hooks —
useAgent,useAgentChatpour les apps clients - Observabilité — Événements
diagnostics_channelpour l'état, RPC, planification, cycle de vie - Notifications push — Livraison Web Push + VAPID depuis les agents
- Webhooks — Recevoir et vérifier les webhooks externes
- Voix (expérimental) — STT/TTS via
@cloudflare/voice - Outils navigateur (expérimental) — Navigation alimentée par CDP via
agents/browser - Think (expérimental) — Agent de chat haut niveau via
@cloudflare/think
D'ABORD : Vérifier l'installation
npm ls agents # Devrait afficher le package agents
Si non installé :
npm install agents
Pour les agents de chat :
npm install agents @cloudflare/ai-chat ai @ai-sdk/react
Configuration Wrangler
{
"compatibility_flags": ["nodejs_compat"],
"durable_objects": {
"bindings": [{ "name": "MyAgent", "class_name": "MyAgent" }]
},
"migrations": [{ "tag": "v1", "new_sqlite_classes": ["MyAgent"] }]
}
Pièges :
- Ne PAS activer
experimentalDecoratorsdans tsconfig (casse@callable) - Ne jamais éditer les anciennes migrations — ajouter toujours de nouvelles balises
- Chaque classe agent a besoin de son propre binding DO + entrée migration
- Ajouter
"ai": { "binding": "AI" }pour Workers AI
Classe Agent
import { Agent, routeAgentRequest, callable } from "agents";
type State = { count: number };
export class Counter extends Agent<Env, State> {
initialState = { count: 0 };
validateStateChange(nextState: State, source: Connection | "server") {
if (nextState.count < 0) throw new Error("Count cannot be negative");
}
onStateUpdate(state: State, source: Connection | "server") {
console.log("State updated:", state);
}
@callable()
increment() {
this.setState({ count: this.state.count + 1 });
return this.state.count;
}
}
export default {
fetch: (req, env) => routeAgentRequest(req, env) ?? new Response("Not found", { status: 404 })
};
Routage
Les requêtes s'acheminent vers /agents/{agent-name}/{instance-name} :
| Classe | URL |
|---|---|
Counter |
/agents/counter/user-123 |
ChatRoom |
/agents/chat-room/lobby |
Client : useAgent({ agent: "Counter", name: "user-123" })
Routage personnalisé : utiliser getAgentByName(env.MyAgent, "instance-id") puis agent.fetch(request).
APIs principales
| Tâche | API |
|---|---|
| Lire l'état | this.state.count |
| Écrire l'état | this.setState({ count: 1 }) |
| Requête SQL | this.sql`SELECT * FROM users WHERE id = ${id}` |
| Planifier (délai) | await this.schedule(60, "task", payload) |
| Planifier (cron) | await this.schedule("0 * * * *", "task", payload) |
| Planifier (intervalle) | await this.scheduleEvery(30, "poll") |
| Méthode RPC | @callable() myMethod() { ... } |
| RPC streaming | @callable({ streaming: true }) stream(res) { ... } |
| Démarrer workflow | await this.runWorkflow("ProcessingWorkflow", params) |
| Fiber durable | await this.runFiber("name", async (ctx) => { ... }) |
| Ajouter en queue | this.queue("handler", payload) |
| Tentative avec backoff | await this.retry(fn, { maxAttempts: 5 }) |
| Diffuser aux clients | this.broadcast(message) |
| Obtenir les connexions | this.getConnections(tag?) |
Client React
import { useAgent } from "agents/react";
function App() {
const [state, setLocalState] = useState({ count: 0 });
const agent = useAgent({
agent: "Counter",
name: "my-instance",
onStateUpdate: (newState) => setLocalState(newState),
onIdentity: (name, agentType) => console.log(`Connected to ${name}`)
});
return (
<button onClick={() => agent.setState({ count: state.count + 1 })}>
Count: {state.count}
</button>
);
}
Références
Cœur
- references/state-scheduling.md — Persistance d'état, planification, SQL
- references/callable.md — Méthodes RPC, streaming, timeouts
- references/routing.md — Patterns d'URL, routage personnalisé,
getAgentByName - references/configuration.md — Config Wrangler, bindings, setup Vite
Chat & Streaming
- references/streaming-chat.md — AIChatAgent, streams reprenables, tools
- references/client-sdk.md —
useAgent,useAgentChat,AgentClient - references/server-driven-messages.md — Trigger patterns,
saveMessages - references/human-in-the-loop.md — Flux d'approbation,
needsApproval
Traitement en arrière-plan
- references/workflows.md — Intégration Durable Workflows
- references/durable-execution.md —
runFiber,stash, survivant à l'éviction - references/queue-retries.md — Queue intégrée, tentative avec backoff
Intégrations
- references/mcp.md — Client et serveur MCP, transports, sécurisation
- references/email.md — Routage et gestion des emails
- references/webhooks-push.md — Webhooks, notifications push
- references/observability.md — Événements diagnostics-channel
Expérimental
- references/think.md — Agent de chat haut niveau
@cloudflare/think - references/voice.md — STT/TTS
@cloudflare/voice - references/codemode.md — Code Mode pour l'orchestration de tools
- references/browse-the-web.md — Outils navigateur CDP