Zum Hauptinhalt springen

AG-UI-Protokoll

Was ist AG-UI?​

Das Agent-User Interaction Protocol (AG-UI) ist ein Ereignisstrom-Protokoll zwischen Agenten und Benutzeranwendungen. Ein Client startet mit RunAgentInput einen Lauf und empfängt über HTTP Server-Sent Events (SSE) strukturierte Ereignisse für Text, Reasoning, Werkzeugaufrufe, Schritte, Status und Unterbrechungen.

AG-UI eignet sich für Webkonsolen, Chat-Clients, IDE-Erweiterungen und andere Anwendungen, die eine Agentenausführung in Echtzeit darstellen. Statt nur den Abschlusstext zu verarbeiten, kann ein Client Modellausgaben, Werkzeugargumente und -ergebnisse, Pipeline-Schritte sowie ausstehende Bestätigungen getrennt anzeigen.

Architektur von iac-code​

iac-code verwendet einen A2A-Ausführungskern mit einem AG-UI-Protokolladapter:

AG-UI-Client
↓ RunAgentInput / SSE
iac-code agui
↓ A2A 1.0 HTTP
iac-code a2a
↓
Agentenschleife / Pipeline / LLM / Alibaba-Cloud-API

iac-code a2a ist der einzige Ausführungskern. Er verwaltet:

  • normale Unterhaltungen und Pipeline-Ausführungen;
  • iac-code-Sitzungen sowie A2A-Kontexte und -Tasks;
  • Werkzeugberechtigungen, Fragen, Optionsauswahl und Wiederaufnahme;
  • Lebenszyklus und Abbruch von Ausführungen;
  • Aufrufe von LLMs und Alibaba-Cloud-APIs.

iac-code agui erzeugt keine zweite Agent-Runtime und führt Pipelines nicht selbst aus. Der Adapter:

  • wandelt AG-UI-RunAgentInput in A2A-Anfragen um;
  • bildet A2A-Ereignisse auf standardisierte AG-UI-Ereignisse ab;
  • ordnet threadId/runId den A2A-Werten contextId/taskId zu;
  • wandelt AG-UI-resume[] in eine A2A-Eingabewiederaufnahme um;
  • persistiert Protokollzuordnungen und ausstehende Unterbrechungen;
  • leitet Abbrüche an A2A weiter.

AG-UI und A2A besitzen daher keine getrennte Ausführungssemantik. Modellauswahl, Cloud-Anmeldedaten, Berechtigungsregeln und Pipeline-Verhalten werden von derselben A2A-Runtime umgesetzt.

Standardprotokoll und iac-code-Erweiterungen​

Der externe Strom verwendet standardisierte AG-UI-Ereignisse:

  • RUN_STARTED, RUN_FINISHED und RUN_ERROR;
  • TEXT_MESSAGE_*;
  • REASONING_*;
  • TOOL_CALL_*;
  • STEP_STARTED und STEP_FINISHED;
  • ACTIVITY_SNAPSHOT.

Nur nützliche Pipeline-Informationen ohne standardisierte Entsprechung erscheinen als namensraumgebundene CUSTOM-Ereignisse. Ein allgemeiner AG-UI-Client darf sie ignorieren, ohne Text, Werkzeugaufrufe, Unterbrechungen oder den Laufzyklus zu beeinträchtigen.

Anfragen bleiben standardisierte RunAgentInput-Umschläge. iac-code nutzt forwardedProps für Arbeitsbereich, Laufmodus und weitere erforderliche Laufzeitdaten:

{
"forwardedProps": {
"iacCode": {
"schemaVersion": 1,
"rosInvocationId": "anfrage-identitaet",
"cwd": "/absoluter/arbeitsbereich/pfad",
"runMode": "normal"
}
}
}

Ein allgemeiner Client kann die standardisierten Ereignisse von iac-code direkt verarbeiten. Bei einem direkten Aufruf von iac-code agui muss er jedoch Laufzeitfelder wie cwd unter forwardedProps.iacCode bereitstellen.

Unterstützte Interaktionen​

Normale Unterhaltungen mit mehreren Dialogrunden​

Verwenden Sie für die Unterhaltung dieselbe threadId und für jede Benutzerrunde eine neue runId. Der Adapter bindet den Thread an eine iac-code-Sitzung. Nach Abschluss einer Runde startet die nächste Nachricht eine neue HTTP/SSE-Anfrage; sie setzt niemals eine bereits abgeschlossene SSE-Antwort fort.

Pipeline​

Setzen Sie forwardedProps.iacCode.runMode auf pipeline. Der A2A-Kern führt die Pipeline weiterhin aus. Hauptschritte werden zu STEP_*-Ereignissen; Text, Reasoning und Werkzeuge verwenden ihre jeweiligen Standardereignisse. Kandidateninformationen, Stack- und Bereinigungsfortschritt ohne Standardentsprechung werden über iac-code.pipeline.v1 gesendet.

Parallele Sub-Pipelines verwenden getrennte Nachrichten- und Schrittidentitäten, sodass Texte mehrerer Agentenschleifen nicht zusammengeführt werden.

Unterbrechung und Wiederaufnahme​

Wenn eine Berechtigung, Frage oder Auswahl eine Benutzereingabe benötigt, endet der aktuelle Lauf mit:

{
"type": "RUN_FINISHED",
"outcome": {
"type": "interrupt",
"interrupts": []
}
}

Die Unterbrechung wird persistiert, bevor sie für den Client sichtbar wird. Anschließend startet der Client eine neue Anfrage mit derselben threadId, einer neuen runId und resume[]. Der Wiederaufnahmestrom gehört zu dieser neuen Anfrage und verbindet sich nicht erneut mit dem alten Strom.

Adapterstatus​

Der Adapter speichert Protokollzuordnungen, Idempotenzdaten und ausstehende Unterbrechungen in einer Datei pro Thread. Das Verzeichnis enthält weder Gesprächstexte noch LLM-Schlüssel oder Cloud-Anmeldedaten und ist kein Exportverzeichnis für Unterhaltungen.

Wann sollte AG-UI verwendet werden?​

AnforderungEmpfohlener Modus
Chat-Oberfläche mit Live-Text, Reasoning, Werkzeugen und SchrittenAG-UI
Berechtigungen, Fragen und Optionsauswahl in einer OberflächeAG-UI
Direkter Aufruf von iac-code durch einen Agenten oder OrchestratorA2A
IDE-/Editor-Integration mit ACP-Sitzungen und TerminalfunktionenACP
Manuelle Bedienung von iac-codeInteraktive REPL oder Web/Desktop

AG-UI und A2A können gleichzeitig laufen. Sie stellen getrennte HTTP-Endpunkte bereit, verwenden aber dieselbe Ausführungsimplementierung von iac-code.

Aktuelle Grenzen​

  • Der AG-UI-Transport verwendet HTTP POST und SSE.
  • Der vorgelagerte A2A-Dienst muss eine Loopback-Adresse verwenden; beliebige entfernte A2A-URLs werden abgelehnt.
  • cwd ist pro Anfrage erforderlich und muss unterhalb eines erlaubten Arbeitsbereichsstamms liegen.
  • Vom Client definierte tools werden derzeit nicht akzeptiert; iac-code verwaltet den Werkzeugsatz.
  • Benutzernachrichten unterstützen Text und eingebettete Base64-Bilder, aber keine entfernten Medien-URLs.
  • Trennt sich ein Client vor einer Unterbrechung von einem aktiven SSE-Lauf, bricht der Adapter den passenden A2A-Task ab.
  • Der SSE-Strom sendet alle 15 Sekunden einen Heartbeat-Kommentar. Konforme Clients ignorieren ihn.

Nächste Schritte​

  • Erste Schritte — Installation, Start und Verbindung des ersten Clients.
  • Protokollreferenz — Anfragefelder, Ereignisse, Unterbrechung/Wiederaufnahme, Persistenz und Fehler.