SDK d'Agents Cloudflare
Votre connaissance du SDK d'Agents peut être obsolète. Préférez la récupération à la pré-formation pour toute tâche du SDK d'Agents.
Sources de récupération
Documentation Cloudflare : https://developers.cloudflare.com/agents/
| Sujet | URL de la documentation | Utiliser pour |
|---|---|---|
| Démarrage rapide | Quick start | Premier agent, configuration du projet |
| Ajouter à un projet existant | Add to existing project | Installer dans une application Workers existante |
| Configuration | Configuration | wrangler.jsonc, bindings, assets, déploiement |
| Classe Agent | Agents API | Cycle de vie de l'agent, modèles, pièges |
| État | Store and sync state | setState, validateStateChange, persistance |
| Routage | Routing | Modèles 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, outils, persistance |
| Client SDK | Client SDK | useAgent, useAgentChat, hooks React |
| 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 flux en cas de déconnexion |
| Routage d'email, résolveur de réponse sécurisé | ||
| Client MCP | MCP client | Connexion aux serveurs MCP |
| Serveur MCP | MCP server | Construire des serveurs MCP avec McpAgent |
| Transports MCP | MCP transports | HTTP diffusable, SSE, options de transport RPC |
| Sécurisation des serveurs MCP | Securing MCP | OAuth, proxy MCP, durcissement |
| Boucle humaine | Human-in-the-loop | Flux d'approbation, needsApproval, workflows |
| Exécution durable | Durable execution | runFiber(), stash(), survie à l'éviction DO |
| File d'attente | Queue | File d'attente FIFO intégrée, queue() |
| Tentatives | Retries | this.retry(), backoff/jitter |
| Observabilité | Observability | Événements diagnostics-channel |
| Notifications push | Push notifications | Web Push + VAPID des agents |
| Webhooks | Webhooks | Réception de webhooks externes |
| Auth multi-domaines | Cross-domain auth | Auth WebSocket, jetons, CORS |
| Connexions en lecture seule | Readonly | shouldConnectionBeReadonly |
| Voix | Voice | STT/TTS expérimental, withVoice |
| Parcourir le web | Browser tools | Automatisation de navigateur CDP expérimentale |
| Réfléchir | Think | Classe d'agent de chat de niveau supérieur expérimentale |
| Migrations | AI SDK v5, AI SDK v6 | Mise à niveau de @cloudflare/ai-chat |
Capacités
Le SDK d'Agents fournit :
- État persistant — Sauvegardé par SQLite, auto-synchronisé aux clients via
setState - RPC appelable — Méthodes
@callable()invoquées sur WebSocket - Planification — Tâches uniques, récurrentes (
scheduleEvery) et cron - Workflows — Traitement de fond multi-étapes durable via
AgentWorkflow - Exécution durable —
runFiber()/stash()pour les travaux qui survivent à l'éviction DO - File d'attente — File d'attente FIFO intégrée avec tentatives via
queue() - Tentatives —
this.retry()avec backoff exponentiel et jitter - Intégration MCP — Connexion à des serveurs MCP ou construction des vôtres avec
McpAgent - Gestion d'email — Réception et réponse aux emails avec routage sécurisé
- Chat streaming —
AIChatAgentavec flux reprises, persistance de messages, outils - Messages pilotés par le serveur —
saveMessages,waitUntilStablepour les tours d'agent proactifs - Hooks React —
useAgent,useAgentChatpour les applications clientes - Observabilité — Événements
diagnostics_channelpour l'état, RPC, planification, cycle de vie - Notifications push — Livraison Web Push + VAPID depuis les agents
- Webhooks — Réception et vérification de webhooks externes
- Voix (expérimental) — STT/TTS via
@cloudflare/voice - Outils de navigation (expérimental) — Navigation alimentée par CDP via
agents/browser - Think (expérimental) — Agent de chat de niveau supérieur via
@cloudflare/think
PREMIÈRE ÉTAPE : Vérifier l'installation
npm ls agents # Should show agents package
Si pas 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 modifier les anciennes migrations — toujours ajouter de nouvelles balises
- Chaque classe d'agent a besoin de sa propre liaison DO + entrée de 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 sont routées 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é : utilisez getAgentByName(env.MyAgent, "instance-id") puis agent.fetch(request).
APIs essentielles
| 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 un workflow | await this.runWorkflow("ProcessingWorkflow", params) |
| Fibre durable | await this.runFiber("name", async (ctx) => { ... }) |
| Ajouter à la file | this.queue("handler", payload) |
| Nouvelle 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
Essentielles
- references/state-scheduling.md — Persistance d'état, planification, SQL
- references/callable.md — Méthodes RPC, streaming, timeouts
- references/routing.md — Modèles d'URL, routage personnalisé,
getAgentByName - references/configuration.md — Configuration Wrangler, bindings, configuration Vite
Chat et Streaming
- references/streaming-chat.md — AIChatAgent, flux reprises, outils
- references/client-sdk.md —
useAgent,useAgentChat,AgentClient - references/server-driven-messages.md — Modèles de déclenchement,
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, survie à l'éviction - references/queue-retries.md — File d'attente intégrée, nouvelle tentative avec backoff
Intégrations
- references/mcp.md — Client et serveur MCP, transports, sécurisation
- references/email.md — Routage et gestion d'email
- references/webhooks-push.md — Webhooks, notifications push
- references/observability.md — Événements diagnostics-channel
Expérimental
- references/think.md — Agent de chat de niveau supérieur
@cloudflare/think - references/voice.md — STT/TTS
@cloudflare/voice - references/codemode.md — Code Mode pour l'orchestration d'outils
- references/browse-the-web.md — Outils de navigation CDP