Kosten und Sicherheit bei der Integration von AI-Agenten in Next.js-Apps ohne dediziertes Infrastrukturteam
19 Juni 2026
0
Computing/SoftwareRelated Video
53:42Ship 26 London – Keynote
Vercel
Comments (0)
Log in to leave a comment
No posts yet
53:42Vercel
Log in to leave a comment
No posts yet
Autonome Agenten denken und rufen Werkzeuge auf, bis sie ihr Ziel erreicht haben. Diese Schleifenstruktur ist das Problem. Wenn ein bestimmter Tool-Aufruf fehlschlägt oder das System-Prompt in einen Zustand gerät, in dem es sich endlos wiederholt, kann dies innerhalb weniger Minuten API-Kosten in Höhe von Tausenden von Dollar verursachen. Laut Daten der Vercel-Plattform aus dem Jahr 2026 machten Commits, die von Coding-Agenten erstellt wurden, mehr als die Hälfte des gesamten Deployment-Traffics aus, und das Volumen der Tokens, die das AI Gateway passierten, stieg im Vergleich zum Vorjahr um das Zehnfache. Dies ist der Grund, warum ein Design erforderlich ist, das Token-Missbrauch bereits auf der Gateway-Ebene proaktiv blockiert. Einfache IP-basierte Beschränkungen reichen nicht aus, um semantische Endlosschleifen innerhalb eines Agenten zu erkennen. Sie müssen eine Filterebene aufbauen, die Next.js Edge Middleware mit Upstash Redis kombiniert, um die Kosinus-Ähnlichkeit zwischen zwei Prompt-Vektoren und in Echtzeit zu berechnen.
ext{Cosine Similarity} = rac{mathbf{A} cdot mathbf{B}}{|mathbf{A}| |mathbf{B}|}Das Echtzeit-Middleware-Abwehrsystem zur Blockierung von Endlosschleifen wird in drei Schritten implementiert. Erstellen Sie eine middleware.ts-Datei im Projektstammverzeichnis und definieren Sie mithilfe von @upstash/ratelimit einen Sliding-Window-Rate-Limiter, der maximal 5 Ausführungsanfragen pro Sitzung innerhalb von 30 Sekunden zulässt. Rufen Sie anschließend die embed-Funktion des AI SDK und das Modell text-embedding-3-small auf, um die Vektoreinbettungen der eingehenden Prompts in Echtzeit zu extrahieren, und schreiben Sie die Logik zur Berechnung der Kosinus-Ähnlichkeit mit dem in Upstash Redis gespeicherten Vektor des vorherigen Prompts. Wenn die berechnete Ähnlichkeit 0,95 übersteigt, wird ein Endlosschleifen-Zustand erkannt, der LLM-Backend-Aufruf sofort gestoppt und eine Bedingungsanweisung konfiguriert, um die in Redis gespeicherten vorherigen erfolgreichen Antwortdaten agent:response:${sessionId} erzwungen zurückzugeben. Sobald dieser Schritt abgeschlossen ist, wird anomaler Ressourcenverbrauch in Echtzeit blockiert, wodurch die Betriebskosten für die LLM-API um bis zu 40 % gesenkt werden können.
Wenn ein Agent benutzergenerierte Skripte verarbeitet, etwa für Web-Recherchen oder Datenanalysen, ist er anfällig für Prompt-Injection-Angriffe. Wenn ein Angreifer aus der Sandbox ausbricht und Host-Shell-Befehle ausführt, können Umgebungsvariablen mit Anmeldedaten für die Datenbank entwendet werden. Um die Rechenebene physisch vor böswilligen Angriffen zu schützen, kommt die Vercel Sandbox-Technologie zum Einsatz – ein auf AWS Firecracker basierendes MicroVM, das leichtgewichtig ist und eine sofortige Boot-Performance im Millisekundenbereich bietet. Vercel Sandbox isoliert neue Node.js 26-Laufzeitinstanzen und skaliert automatisch auf 4 GB RAM bei einem Verhältnis von 2 GB pro 2 vCPUs. Dies verhindert den Diebstahl von Anmeldedaten und reduziert die Zeit für manuelle Sicherheitsaudits um mehr als 5 Stunden pro Woche.
Die isolierte und sichere Code-Ausführungsumgebung wird durch eine Sandbox-Runner-Komponente gesteuert, die auf einer Whitelist basiert. Erstellen Sie eine sandbox.config.ts-Datei im Projektstammverzeichnis und setzen Sie die networkPolicy-Eigenschaft auf deny-all, um Prompt-Injection durch externe Ausbrüche sowie das Abfließen privater Datenbank-Umgebungsvariablen grundlegend zu unterbinden. Registrieren Sie in der envWhitelist, der Liste der erlaubten Umgebungsvariablen für die interne Weitergabe, nur NODE_ENV, TZ und AGENT_RUN_MODE. Erstellen Sie anschließend ein sandbox-runner.ts-Skript, schreiben Sie die extern eingegebene, unverarbeitete Codedatei runner_entry.js über die sandbox.writeFiles-Struktur in das isolierte Verzeichnis und rufen Sie sandbox.runCommand auf, um die Laufzeit zu starten, während der Zugriff auf sensible Informationen des Hosts blockiert bleibt. Fügen Sie innerhalb der for await-Schleife, die die Ausgabelogs der Sandbox im Streaming-Verfahren überwacht, eine Bedingungsanweisung hinzu, die die kumulierte Byte-Größe verfolgt. Sollte die Summe aus stdout und stderr 50 KB überschreiten, wird sofort sandbox.stop() ausgeführt, um die virtuelle Maschine zu bereinigen und eine Fehlergrenze (Error Boundary) aufzubauen. Durch diese Sicherheitsisolierung werden DoS-Angriffe, die das System lahmlegen könnten, abgewehrt und Ressourcenlecks sowie unnötige Rechenkosten vermieden.
Web-Agenten arbeiten als langlebige Prozesse, die von einigen Minuten bis zu mehreren Stunden bis zum Abschluss benötigen. Tritt eine Ausnahme wie eine Netzwerkunterbrechung oder ein Timeout auf, besteht das Risiko, dass alle bisher erzielten Fortschritte der Zwischenschritte verloren gehen, was dazu führt, dass Tokens erneut verbraucht werden und Kosten doppelt anfallen. Um das Problem des Verlusts des verteilten Zustands zu lösen, führen wir das Vercel Workflows SDK und das Framework Eve mit seinen Mustern für dauerhafte Ausführung (Durable Execution) ein. Durch die Verwendung der Compiler-Direktiven use workflow und use step werden Snapshots des letzten erfolgreich abgeschlossenen Schrittes in einer persistenten Speicher-Log-Queue abgelegt, selbst wenn die Lebensdauer des Serverless-Containers abläuft. Dies ermöglicht es, die Aufgabe ab dem Punkt des Fehlers ohne redundante Ausführungen fortzusetzen.
Ein ausfallsicheres System mit dauerhaftem Checkpointing wird implementiert, indem ein Status-Tracking-Interceptor eingefügt wird, der Upsert-Abfragen an die mit Vercel Connect verbundene Speicherinfrastruktur sendet. Definieren Sie den zentralen Status-Struct DurableStateContext, der den Lebenszyklus der Agenten-Aufgabe verwaltet, und unterteilen Sie den aktuellen Ausführungsschritt in Task_Start, API_Called, Data_Parsed und Task_Complete. Erstellen Sie eine upsertCheckpointState-Interceptor-Funktion, die den aktuellen Kontextstatus bei jedem Erfolgsschritt über Vercel Connect sofort in den Upstash Redis-Speicher connectStateStore schreibt, der mittels OIDC ohne separate Zertifikate gebunden ist. Implementieren Sie abschließend einen executeOrResumeAgent-Handler, der Wiederholungsanfragen der Agenten-Kommunikation verarbeitet, den letzten Status basierend auf der Sitzungs-ID aus der Datenbank abruft und den Kontrollfluss so steuert, dass bei einer Sitzung, deren Status nicht Task_Complete ist, nicht von vorne begonnen, sondern der Workflow ab dem zuletzt gespeicherten Snapshot-Punkt erzwungen wiederhergestellt wird. Die Aktivierung dieses Status-Sicherungs-Handlers beseitigt die Ineffizienz von Neustarts bei Serverless-Timeouts oder Fehlern und erhöht die Erfolgsrate von Agenten-Aufgaben.
Um die monolithischen API-Pfade eines bestehenden Webdienstes auf eine AI SDK-basierte Agenten-Architektur zu migrieren, ohne die Produktionsumgebung zu unterbrechen, sind Feature-Flag-Steuerung und Echtzeit-Edge-Routing erforderlich. Eine unterbrechungsfreie, schrittweise Migration erfolgt durch ein Canary-Deployment, bei dem die neue Agenten-Infrastruktur parallel zur bestehenden, stabilen API eingeführt wird. In Kombination mit Vercel Edge Config, das Edge-Lesevorgänge mit extrem geringer Latenz garantiert, kann die Middleware-Ebene Rollout-Flags in Echtzeit ohne den Overhead von Remote-Datenbankzugriffen abrufen und den Traffic sicher steuern.
Um eine unterbrechungsfreie Migration der Legacy-Codebasis zu erreichen, führen Sie einen dreistufigen, schrittweisen Produktions-Rollout durch. Behalten Sie den bestehenden Legacy-Pfad /api/v1/generate bei und richten Sie einen neuen dedizierten Datei-Endpunkt /api/v1/agent/generate für die AI SDK-Agentenfunktionen ein. Implementieren Sie in der middleware.ts von Next.js eine Logik, die den dynamischen Schwellenwert-Indikator agent_canary_rate von Vercel Edge Config mittels einer get-Funktion ausliest. Richten Sie eine Canary-Umgebung ein, in der nur 10 % des Benutzertraffics – basierend auf der Hash-ID des Browsers – per NextResponse.rewrite auf den neuen Agenten-System-Endpunkt umgeleitet werden. Konzipieren Sie einen hybriden Fetch-Wrapper-Client, den unifiedAgentRequest, der das Kommunikationsprotokoll basierend auf dem Accept-Header in Echtzeit zwischen dem alten, kurzlebigen JSON-Antwortmodell und dem neuen asynchronen SSE-Token-Streaming des Agenten umschaltet. Durch Anwendung dieses Migrations-Frameworks können Sie das System vollständig umbauen, ohne den Betrieb zu unterbrechen, während Sie Risiken durch Systemlast oder unerwartetes Verhalten auf unter 10 % des Verkehrsaufkommens isolieren.