Streaming-Ereignisse
Wenn Sie inSessionConfig streaming: true setzen, wird der Verlauf einer Session als Ereignisstrom ausgeliefert.
Diese Seite ist eine für Laravel aufbereitete deutsche Fassung der offiziellen streaming-events.md.
Die Seite SessionEvent beschreibt die für Laravel erweiterte SessionEvent-Klasse selbst.
Diese Seite ist eine Referenz, „welche Daten bei welchem Ereignistyp ankommen”.
Überblick
Alle Verarbeitungsschritte des Copilot-Agenten (Reasoning, Nachrichtengenerierung, Tool-Ausführung, Berechtigungsprüfungen usw.) werden als Session-Events übertragen.- Ephemeral event: Nur Echtzeit-Auslieferung. Wird nicht im Session-Log persistiert (beim Fortsetzen nicht erneut abgespielt)
- Persisted event: Wird im Session-Log gespeichert (beim Fortsetzen erneut abgespielt)
- Delta event: Ereignisse, die in Teilstücken ankommen (z. B.
deltaContent). Werden zum Gesamtinhalt zusammengefügt parentIdchain: Verkettung, in der jedes Event die ID des vorangegangenen Events referenziert
Event-Envelope (gemeinsame Felder)
Alle Ereignisse haben die folgende gemeinsame Struktur.Abonnement-Beispiel in Laravel
Hauptkategorien
Assistant events
assistant.turn_start
Turn-Start.
turnId(erforderlich)interactionId(optional)
assistant.intent (ephemeral)
Aktuelle Ausführungsabsicht (z. B. Exploring codebase).
intent(erforderlich)
assistant.reasoning
Vollständiger Reasoning-Block.
reasoningId(erforderlich)content(erforderlich)
assistant.reasoning_delta (ephemeral)
Delta des Reasoning-Textes.
reasoningId(erforderlich)deltaContent(erforderlich)
assistant.message
Vollständige Nachricht des Assistenten.
Wichtige Felder:
messageId(erforderlich)content(erforderlich)toolRequests(optional)reasoningOpaque/reasoningText/encryptedContent(optional)phase/outputTokens/interactionId(optional)parentToolCallId(optional, wenn aus einem Sub-Agenten stammend)
assistant.message_delta (ephemeral)
Delta des Nachrichteninhalts.
messageId(erforderlich)deltaContent(erforderlich)parentToolCallId(optional)
assistant.turn_end
Turn-Ende.
turnId(erforderlich)
assistant.usage (ephemeral)
Verbrauchsinformationen pro API-Aufruf.
Wichtige Felder:
model(erforderlich)inputTokens/outputTokens/cost/duration(optional)apiCallId/providerCallId(optional)quotaSnapshots/copilotUsage(optional)
assistant.streaming_delta (ephemeral)
Low-Level-Empfangsfortschritt.
totalResponseSizeBytes(erforderlich)
Tool execution events
tool.execution_start
Beginn der Tool-Ausführung.
toolCallId(erforderlich)toolName(erforderlich)arguments/mcpServerName/mcpToolName/parentToolCallId(optional)
tool.execution_partial_result (ephemeral)
Teilweise Ausgabe während der Tool-Ausführung.
toolCallId(erforderlich)partialOutput(erforderlich)
tool.execution_progress (ephemeral)
Fortschrittsnachricht.
toolCallId(erforderlich)progressMessage(erforderlich)
tool.execution_complete
Abschluss der Tool-Ausführung (Erfolg/Misserfolg).
toolCallId(erforderlich)success(erforderlich)result(bei Erfolg)error(bei Fehlschlag)toolTelemetry/parentToolCallId(optional)
tool.user_requested
Tool-Aufruf auf explizite Nutzeranforderung.
toolCallId(erforderlich)toolName(erforderlich)arguments(optional)
Session lifecycle events
session.start
Session-Start. Bei Cloud Sessions ist es sicher, den ersten Prompt erst zu senden, nachdem producer das session.start des copilot-agent bestätigt hat.
producer(optional)
session.idle (ephemeral)
Aktuelle Verarbeitung abgeschlossen, System wartet auf nächste Eingabe.
backgroundTasks(optional)
session.error
Fehler während der Session-Verarbeitung.
errorType(erforderlich)message(erforderlich)stack/statusCode/providerCallId(optional)
session.compaction_start
Beginn der Kontextkompaktierung (data ist ein leeres Objekt).
session.compaction_complete
Kontextkompaktierung abgeschlossen.
Wichtige Felder:
success(erforderlich)error(optional)preCompactionTokens/postCompactionTokens(optional)summaryContent/checkpointPath(optional)
session.title_changed (ephemeral)
Automatische Titelaktualisierung.
title(erforderlich)
session.context_changed
Wechsel des Arbeitskontexts.
cwd(erforderlich)gitRoot/repository/branch(optional)
session.info
Session-Informationen, z. B. eine Remote-URL.
infoType(erforderlich)url(optional, z. B. wenninfoTyperemoteist)
session.remote_steerable_changed
Ereignis, das eine Änderung der Fernsteuerbarkeit aus Mission Control anzeigt.
remoteSteerable(optional)
session.usage_info (ephemeral)
Nutzung des Context-Windows.
tokenLimit(erforderlich)currentTokens(erforderlich)messagesLength(erforderlich)
session.task_complete
Benachrichtigung über Aufgabenabschluss.
summary(optional)
session.shutdown
Session-Ende.
Wichtige Felder:
shutdownType(erforderlich)errorReason(optional)totalPremiumRequests/totalApiDurationMs(erforderlich)codeChanges/modelMetrics(erforderlich)
Permission / user input events
permission.requested (ephemeral)
Berechtigungsabfrage.
requestId(erforderlich)permissionRequest(erforderlich)
permissionRequest.kind:
shellwritereadmcpurlmemorycustom-tool
permission.completed (ephemeral)
Ergebnis der Berechtigungsanfrage.
requestId(erforderlich)result.kind(erforderlich)
user_input.requested (ephemeral)
Frage an den Nutzer.
requestId(erforderlich)question(erforderlich)choices/allowFreeform(optional)
user_input.completed (ephemeral)
Abschluss der Benutzereingabe.
requestId(erforderlich)
elicitation.requested (ephemeral)
Anfrage nach strukturierter Eingabe (Formular).
requestId(erforderlich)message(erforderlich)requestedSchema(erforderlich)
elicitation.completed (ephemeral)
Abschluss der strukturierten Eingabe.
requestId(erforderlich)
Sub-agent / skill events
subagent.started
toolCallId(erforderlich)agentName/agentDisplayName/agentDescription(erforderlich)
subagent.completed
toolCallId(erforderlich)agentName/agentDisplayName(erforderlich)
subagent.failed
toolCallId(erforderlich)agentName/agentDisplayName(erforderlich)error(erforderlich)
subagent.selected
agentName(erforderlich)agentDisplayName(erforderlich)tools(erforderlich,nullzulässig)
subagent.deselected
Rückkehr zum Standard-Agenten (data ist ein leeres Objekt).
skill.invoked
name/path/content(erforderlich)allowedTools/pluginName/pluginVersion(optional)
Other events
abort
reason(erforderlich)
user.message
content(erforderlich)transformedContent/attachments/source/agentMode/interactionId(optional)
system.message
content(erforderlich)role(erforderlich)name/metadata(optional)
external_tool.requested (ephemeral)
requestId/sessionId/toolCallId/toolName(erforderlich)arguments(optional)
external_tool.completed (ephemeral)
requestId(erforderlich)
exit_plan_mode.requested (ephemeral)
requestId/summary/planContent/actions/recommendedAction(erforderlich)
exit_plan_mode.completed (ephemeral)
requestId(erforderlich)
command.queued (ephemeral)
requestId(erforderlich)command(erforderlich)
command.completed (ephemeral)
requestId(erforderlich)
Typische Reihenfolge der Events
Übersicht aller Events (Quickreferenz)
Verwandte Dokumentation
- Offizielle Streaming Events-Referenz
- Erläuterung der Event-Klasse in der Laravel-Version: SessionEvent
- Implementierungsmuster für Streaming: Streaming