Skip to main content

Streamingereignisse im Copilot SDK

Die von Copilot SDK ausgegebenen Sitzungsereignisse und die zu jedem Ereignis gehörenden Datenfelder.

Wer kann dieses Feature verwenden?

GitHub Copilot SDK ist mit allen Copilot Tarifen verfügbar.

Hinweis

          Copilot SDK ist zurzeit in Technische Preview. Funktionalität und Verfügbarkeit können geändert werden.

Jede Aktion, die der Copilot Agent ausführt – Denken, Schreiben von Code, Ausführen von Tools – wird als Sitzungsereignis ausgegeben, das Sie abonnieren können. Dieser Artikel ist ein Referenz auf Feldebene für jeden Ereignistyp, sodass Sie genau wissen, welche Daten sie erwarten müssen.

Wenn streaming: true für eine Sitzung festgelegt wird, sendet das SDK kurzlebige Ereignisse in Echtzeit (Deltas, Statusaktualisierungen) neben dauerhaften Ereignissen (vollständige Nachrichten, Toolergebnisse). Alle Ereignisse teilen einen gemeinsamen Umschlag und tragen eine data Nutzlast, deren Shape vom Ereignis typeabhängt. Ein Sequenzdiagramm des vollständigen Ereignisflusses finden Sie im github/copilot-sdk Repository.

KonzeptBeschreibung
          **Ephemerales Ereignis** | Vorübergehende; in Echtzeit gestreamt, aber **nicht** im Sitzungsprotokoll gespeichert. Wird beim Fortsetzen der Sitzung nicht wiedergegeben. |

| Persistiertes Ereignis | Im Sitzungsereignisprotokoll auf dem Datenträger gespeichert. Wird wiedergegeben, wenn eine Sitzung fortgesetzt wird. | | Delta-Ereignis | Ein ephemerer Streamingabschnitt (Text oder Argumentation). Sammeln Sie Deltas, um den vollständigen Inhalt zu erstellen. | | ** parentId Kette** | Jedes Ereignis parentId verweist auf das vorherige Ereignis und bildet eine verknüpfte Liste, die Sie durchlaufen können. |

Ereignishülle

Jedes Sitzungsereignis umfasst unabhängig vom Typ die folgenden Felder:

FeldTypBeschreibung
id
          `string` (UUID v4) | Eindeutiger Ereignisbezeichner |

| timestamp | string (ISO 8601) | Wann das Ereignis erstellt wurde | | parentId | string \| null | ID des vorherigen Ereignisses in der Kette; null für das erste Ereignis | | ephemeral | boolean? | true für vorübergehende Ereignisse; nicht vorhanden oder false für beibehaltene Ereignisse | | type | string | Diskriminator des Ereignistyps (siehe Tabellen unten) | | data | object | Ereignisspezifische Nutzlast |

Abonnieren von Ereignissen

// All events
session.on((event) => {
    console.log(event.type, event.data);
});

// Specific event type — data is narrowed automatically
session.on("assistant.message_delta", (event) => {
    process.stdout.write(event.data.deltaContent);
});

Beispiele in Python, Go und .NET finden Sie im github/copilot-sdk Repository.

Tipp

          **Python / Go:** Diese SDKs verwenden eine einzelne `Data` Klasse/Struktur mit allen möglichen Feldern als optional/nullable. Nur die felder, die in den folgenden Tabellen aufgeführt sind, werden für jeden Ereignistyp aufgefüllt – der Rest lautet `None` / `nil`.
          **.NET:** Das .NET SDK verwendet separate, stark typisierte Datenklassen pro Ereignis (z. B. `AssistantMessageDeltaData`), sodass nur die relevanten Felder für jeden Datentyp vorhanden sind.
          **TypeScript:** Das TypeScript SDK verwendet eine diskriminierte Union – wenn Sie auf `event.type` prüfen, wird die `data` Nutzlast automatisch auf die richtige Typstruktur beschränkt.

Ereignisse des Assistenten

Diese Ereignisse verfolgen den Lebenszyklus der Antwort des Agents – vom Beginn über Streamingabschnitte bis zur endgültigen Nachricht.

assistant.turn_start

Wird ausgelöst, wenn der Agent mit der Verarbeitung eines Ablaufschritts beginnt.

DatenfeldTypErforderlichBeschreibung
turnIdstringTurn identifier (in der Regel eine Zeichenfolgennummer)
interactionIdstring
Interaktionsidentifikator für Telemetriekorrelation

assistant.intent

Flüchtig Kurze Beschreibung dessen, was der Agent gerade tut, aktualisiert während der Vorgang läuft.

DatenfeldTypErforderlichBeschreibung
intentstringLesbare Absicht (z. B. "Erkunden der Codebasis")

assistant.reasoning

Vollständiger erweiterter Denkenblock aus dem Modell. Wird nach Abschluss der Begründung ausgegeben.

DatenfeldTypErforderlichBeschreibung
reasoningIdstringEindeutiger Bezeichner für diesen Logikblock
contentstringDer vollständige erweiterte Denktext

assistant.reasoning_delta

Ephemere. Inkrementeller Teil des erweiterten Denkens des Modells, gestreamt in Echtzeit.

DatenfeldTypErforderlichBeschreibung
reasoningIdstringEntspricht dem entsprechenden assistant.reasoning Ereignis.
deltaContentstringTextabschnitt, der an den Inhalt von Gründen angefügt werden soll

assistant.message

Die vollständige Antwort des Assistenten für diesen LLM-Aufruf. Kann Toolaufrufanforderungen enthalten.

DatenfeldTypErforderlichBeschreibung
messageIdstringEindeutiger Bezeichner für diese Nachricht
contentstringDie Textantwort des Assistenten
toolRequestsToolRequest[]
Toolaufrufe, die der Assistent tätigen möchte (siehe unten)
reasoningOpaquestring
Verschlüsseltes erweitertes Denken (Anthropische Modelle); sitzungsgebunden
reasoningTextstring
Lesbarer Grundgedankentext aus erweitertem Denken
encryptedContentstring
Verschlüsselte Begründungsinhalte (OpenAI-Modelle); sitzungsgebunden
phasestring
Generationsphase (z. B "thinking" . vs "response")
outputTokensnumber
Tatsächliche Ausgabetokenanzahl aus der API-Antwort
interactionIdstring
Interaktionsbezeichner für Telemetrie
parentToolCallIdstring
Festlegen, wann diese Nachricht von einem Unter-Agent stammt
          **
          `ToolRequest` Felder:**
FeldTypErforderlichBeschreibung
toolCallIdstringEindeutige ID für diesen Toolaufruf
namestringToolname (z. B. "bash", "edit", "grep")
argumentsobject
Analysierte Argumente für das Tool
type"function" | "custom"
Anruftyp; Standardwert: "function" wenn nicht vorhanden

assistant.message_delta

Flüchtig Inkrementeller Teil der Textantwort des Assistenten, gestreamt in Echtzeit.

DatenfeldTypErforderlichBeschreibung
messageIdstringEntspricht dem entsprechenden assistant.message Ereignis.
deltaContentstringTextabschnitt, der an die Nachricht angefügt werden soll
parentToolCallIdstring
Festlegen, wenn sie von einem Unter-Agent stammen

assistant.turn_end

Wird ausgegeben, wenn der Agent einen Schritt beendet hat (alle Toolausführungen abgeschlossen sind, die endgültige Antwort übermittelt wurde).

DatenfeldTypErforderlichBeschreibung
turnIdstringEntspricht dem entsprechenden assistant.turn_start Ereignis.

assistant.usage

Flüchtig Tokenverwendungs- und Kosteninformationen für einen einzelnen API-Aufruf.

DatenfeldTypErforderlichBeschreibung
modelstringModellbezeichner (z. B "gpt-4.1". )
inputTokensnumber
Verbrauchte Eingabetoken
outputTokensnumber
Erzeugte Ausgabetoken
cacheReadTokensnumber
Token, die aus dem Eingabeaufforderungscache gelesen werden
cacheWriteTokensnumber
Token, die in den Aufforderungscache geschrieben wurden
costnumber
Kosten für den Modellmultiplikator bei der Abrechnung
durationnumber
API-Aufrufdauer in Millisekunden
initiatorstring
Was diesen Aufruf ausgelöst hat (z. B "sub-agent". ); fehlt für vom Benutzer initiierte
apiCallIdstring
Vervollständigungs-ID vom Anbieter (z. B. chatcmpl-abc123)
providerCallIdstring
          GitHub Anforderungsablaufverfolgungs-ID (`x-github-request-id`) |

| parentToolCallId | string | | Festlegen, wann die Verwendung von einem Unter-Agent stammt | | quotaSnapshots | Record<string, QuotaSnapshot> | | Ressourcennutzung pro Kontingent, schlüsseliert nach Kontingentbezeichner | | copilotUsage | CopilotUsage | | Aufschlüsselung der Kosten für Tokens aus der API |

assistant.streaming_delta

Flüchtig Niedrigrangige Fortschrittsanzeige – Gesamtanzahl der Bytes, die von der Streaming-API-Antwort empfangen wurden.

DatenfeldTypErforderlichBeschreibung
totalResponseSizeBytesnumberBisher empfangene kumulative Bytes

Toolausführungsereignisse

Diese Ereignisse verfolgen den vollständigen Lebenszyklus jedes Toolaufrufs, von der Anforderung durch das Modell über die Ausführung bis zur Fertigstellung.

tool.execution_start

Wird ausgegeben, wenn ein Tool mit der Ausführung beginnt.

DatenfeldTypErforderlichBeschreibung
toolCallIdstringEindeutiger Bezeichner für diesen Toolaufruf
toolNamestringName des Tools (z. B "bash". , "edit", "grep")
argumentsobject
Analysierte Argumente, die an das Tool übergeben werden
mcpServerNamestring
MCP-Servername, wenn das Tool von einem MCP-Server bereitgestellt wird
mcpToolNamestring
Ursprünglicher Toolname auf dem MCP-Server
parentToolCallIdstring
Festlegen, wann von einem Unter-Agent aufgerufen wird

tool.execution_partial_result

Ephemere. Inkrementelle Ausgabe eines laufenden Tools (z. B. Streaming von Bash-Ausgaben).

DatenfeldTypErforderlichBeschreibung
toolCallIdstringEntspricht dem entsprechenden tool.execution_start
partialOutputstringInkrementeller Ausgabeabschnitt

tool.execution_progress

Ephemere. Lesbarer Fortschrittsstatus von einem laufenden Programm (z. B. MCP-Serverfortschrittsbenachrichtigungen).

DatenfeldTypErforderlichBeschreibung
toolCallIdstringEntspricht dem entsprechenden tool.execution_start
progressMessagestringFortschrittsstatusmeldung

tool.execution_complete

Wird ausgegeben, wenn die Ausführung eines Tools abgeschlossen ist – erfolgreich oder mit einem Fehler.

DatenfeldTypErforderlichBeschreibung
toolCallIdstringEntspricht dem entsprechenden tool.execution_start
successbooleanOb die Ausführung erfolgreich war
modelstring
Modell, das diesen Toolaufruf generiert hat
interactionIdstring
Interaktionskennung
isUserRequestedboolean
          `true` wenn der Benutzer diesen Toolaufruf explizit angefordert hat |

| result | Result | | Bei Erfolg anzeigen (siehe unten) | | error | { message, code? } | | Bei Fehler präsent | | toolTelemetry | object | | Toolspezifische Telemetrie | | parentToolCallId | string | | Festgelegt, wenn ein Unteragent es aufruft |

          **
          `Result` Felder:**
FeldTypErforderlichBeschreibung
contentstringKonsistentes Ergebnis, das an das LLM gesendet wird (kann zur Tokeneffizienz gekürzt werden)
detailedContentstring
Vollständiges Ergebnis zur Anzeige, bei dem der vollständige Inhalt wie Diffs erhalten bleibt.
contentsContentBlock[]
Strukturierte Inhaltsblöcke (Text, Terminal, Bild, Audio, Ressource)

tool.user_requested

Wird ausgegeben, wenn der Benutzer explizit einen Toolaufruf anfordert (anstatt vom Modell aufgerufen zu werden).

DatenfeldTypErforderlichBeschreibung
toolCallIdstringEindeutiger Bezeichner für diesen Toolaufruf
toolNamestringName des Tools, das der Benutzer aufrufen möchte
argumentsobject
Argumente für den Aufruf

Sitzungslebenszyklusereignisse

session.idle

Ephemere. Der Agent hat die gesamte Verarbeitung abgeschlossen und ist bereit für die nächste Nachricht. Dies ist das Signal, dass eine Drehung vollständig abgeschlossen ist.

DatenfeldTypErforderlichBeschreibung
backgroundTasksBackgroundTasks
Hintergrundagenten/-Shells, die noch ausgeführt werden, wenn der Agent in den Leerlauf übergegangen ist

session.error

Ein Fehler ist während der Sitzungsverarbeitung aufgetreten.

DatenfeldTypErforderlichBeschreibung
errorTypestringFehlerkategorie (z. B. "authentication", "quota", "rate_limit")
messagestringVom Menschen lesbare Fehlermeldung
stackstring
Fehlerstapelablaufverfolgung
statusCodenumber
HTTP-Statuscode aus der upstream-Anforderung
providerCallIdstring
          GitHub Anforderungsablaufverfolgungs-ID für serverseitige Protokollkorrelation |

session.compaction_start

Die Verdichtung des Kontextfensters hat begonnen. Die Datennutzlast ist leer ({}).

session.compaction_complete

Die Verdichtung des Kontextfensters wurde abgeschlossen.

DatenfeldTypErforderlichBeschreibung
successbooleanGibt an, ob die Komprimierung erfolgreich war.
errorstring
Fehlermeldung, wenn die Komprimierung fehlgeschlagen ist
preCompactionTokensnumber
Token vor Komprimierung
postCompactionTokensnumber
Token nach Komprimierung
preCompactionMessagesLengthnumber
Nachrichtenanzahl vor Komprimierung
messagesRemovednumber
Entfernte Nachrichten
tokensRemovednumber
Token entfernt
summaryContentstring
LLM-generierte Zusammenfassung des komprimierten Verlaufs
checkpointNumbernumber
Eine Schnappschussnummer des Prüfpunkts wurde für die Wiederherstellung erstellt.
checkpointPathstring
Dateipfad, in dem der Prüfpunkt gespeichert wurde
compactionTokensUsed{ input, output, cachedInput }
Tokenverwendung für den Komprimierungsaufruf des LLM
requestIdstring
          GitHub Anforderungsablaufverfolgungs-ID für den Komprimierungsaufruf |

session.title_changed

Ephemere. Der automatisch generierte Titel der Sitzung wurde aktualisiert.

DatenfeldTypErforderlichBeschreibung
titlestringNeuer Sitzungstitel

session.context_changed

Der Arbeitsverzeichnis- oder Repositorykontext der Sitzung wurde geändert.

DatenfeldTypErforderlichBeschreibung
cwdstringAktuelles Arbeitsverzeichnis
gitRootstring
Git-Repository-Stammverzeichnis
repositorystring
Repository im "owner/name" Format
branchstring
Aktueller Git-Branch

session.usage_info

Ephemere. Momentaufnahme der Kontextfensterverwendung.

DatenfeldTypErforderlichBeschreibung
tokenLimitnumberMaximale Token für das Kontextfenster des Modells
currentTokensnumberAktuelle Token im Kontextfenster
messagesLengthnumberAktuelle Anzahl der Nachrichten in der Konversation

session.task_complete

Der Agent hat seine zugewiesene Aufgabe abgeschlossen.

DatenfeldTypErforderlichBeschreibung
summarystring
Zusammenfassung des abgeschlossenen Vorgangs

session.shutdown

Die Sitzung wurde beendet.

DatenfeldTypErforderlichBeschreibung
shutdownType"routine" | "error"Normales Herunterfahren oder Absturz
errorReasonstring
Fehlerbeschreibung, wenn shutdownType``"error"
totalPremiumRequestsnumberGesamtanzahl der verwendeten Premium-API-Anforderungen
totalApiDurationMsnumberKumulierte API-Aufrufzeit in Millisekunden
sessionStartTimenumberUnix-Zeitstempel (ms) beim Starten der Sitzung
codeChanges{ linesAdded, linesRemoved, filesModified }Aggregierte Codeänderungsmetriken
modelMetricsRecord<string, ModelMetric>Aufschlüsselung der Modellnutzung
currentModelstring
Modell zum Zeitpunkt des Herunterfahrens ausgewählt

Berechtigungs- und Benutzereingabeereignisse

Diese Ereignisse werden ausgegeben, wenn der Agent eine Genehmigung oder Eingabe des Benutzers benötigt, bevor er fortfahren kann.

permission.requested

Ephemere. Der Agent benötigt die Berechtigung zum Ausführen einer Aktion (Ausführen eines Befehls, Schreiben einer Datei usw.).

DatenfeldTypErforderlichBeschreibung
requestIdstringVerwenden Sie dies, um über session.respondToPermission() zu antworten.
permissionRequestPermissionRequestDetails der angeforderten Berechtigung

Dies permissionRequest ist eine diskriminierte Vereinigung auf kind:

kindSchlüsselfelderBeschreibung
"shell"
          `fullCommandText`
          `intention`
          `commands[]`
          `possiblePaths[]`
         | Ausführen eines Shellbefehls |

| "write" | fileName diff intention newFileContents? | Schreiben/Ändern einer Datei | | "read" | path, intention | Lesen einer Datei oder eines Verzeichnisses | | "mcp" | serverName, , toolName``toolTitle, , args?``readOnly | Aufrufen eines MCP-Tools | | "url" | url, intention | Abrufen einer URL | | "memory" | subject, fact``citations | Ein Gedächtnis speichern | | "custom-tool" | toolName, toolDescription``args? | Aufrufen eines benutzerdefinierten Tools |

Alle kind Varianten enthalten auch eine optionale toolCallId Verknüpfung mit dem Toolaufruf, der die Anforderung ausgelöst hat.

permission.completed

Ephemere. Eine Berechtigungsanfrage wurde gelöst.

DatenfeldTypErforderlichBeschreibung
requestIdstringEntspricht dem entsprechenden permission.requested
result.kindstringEiner von: "approved", , "denied-by-rules"``"denied-interactively-by-user", , "denied-no-approval-rule-and-could-not-request-from-user"``"denied-by-content-exclusion-policy"

user_input.requested

Ephemere. Der Agent stellt dem Benutzer eine Frage.

DatenfeldTypErforderlichBeschreibung
requestIdstringVerwenden Sie dies, um über session.respondToUserInput() zu antworten.
questionstringDie Frage, die dem Benutzer präsentiert werden soll
choicesstring[]
Vordefinierte Auswahlmöglichkeiten für den Benutzer
allowFreeformboolean
Gibt an, ob Freiformtexteingaben zulässig sind.

user_input.completed

Flüchtig Eine Benutzereingabeanforderung wurde aufgelöst.

DatenfeldTypErforderlichBeschreibung
requestIdstringEntspricht dem entsprechenden user_input.requested

elicitation.requested

Ephemere. Der Agent benötigt strukturierte Formulareingaben vom Benutzer (MCP-Elicitationsprotokoll).

DatenfeldTypErforderlichBeschreibung
requestIdstringVerwenden Sie dies, um über session.respondToElicitation() zu antworten.
messagestringBeschreibung der benötigten Informationen
mode"form"
Elicitationsmodus (derzeit nur "form")
requestedSchema{ type: "object", properties, required? }JSON-Schema zur Beschreibung der Formularfelder

elicitation.completed

Flüchtig Eine Elikitationsanforderung wurde aufgelöst.

DatenfeldTypErforderlichBeschreibung
requestIdstringEntspricht dem entsprechenden elicitation.requested

Sub-Agent- und Qualifikationsereignisse

subagent.started

Ein benutzerdefinierter Agent wurde als Unteragent aufgerufen.

DatenfeldTypErforderlichBeschreibung
toolCallIdstringÜbergeordneter Werkzeugaufruf, der diesen Unter-Agenten erzeugt hat
agentNamestringInterner Name des Unter-Agents
agentDisplayNamestringMenschenlesbarer Anzeigename
agentDescriptionstringBeschreibung der Funktionsweise des Unter-Agents

subagent.completed

Ein Unter-Agent wurde erfolgreich abgeschlossen.

DatenfeldTypErforderlichBeschreibung
toolCallIdstringEntspricht dem entsprechenden subagent.started
agentNamestringInterner Name
agentDisplayNamestringAnzeigename

subagent.failed

Bei einem Unter-Agent ist ein Fehler aufgetreten.

DatenfeldTypErforderlichBeschreibung
toolCallIdstringEntspricht dem entsprechenden subagent.started
agentNamestringInterner Name
agentDisplayNamestringAnzeigename
errorstringFehlermeldung

subagent.selected

Ein benutzerdefinierter Agent wurde ausgewählt (abgeleitet), um die aktuelle Anforderung zu verarbeiten.

DatenfeldTypErforderlichBeschreibung
agentNamestringInterner Name des ausgewählten Agents
agentDisplayNamestringAnzeigename
toolsstring[] | nullFür diesen Agent verfügbare Toolnamen; null für alle Tools

subagent.deselected

Ein benutzerdefinierter Agent wurde deaktiviert und kehrt zum Standard-Agent zurück. Die Antwortnutzlast ist leer ({}).

skill.invoked

Für die aktuelle Unterhaltung wurde eine Fähigkeit aktiviert.

DatenfeldTypErforderlichBeschreibung
namestringQualifikationsname
pathstringDateipfad zur definition SKILL.md
contentstringGesamter Fähigkeitsinhalt in die Unterhaltung eingefügt
allowedToolsstring[]
Werkzeuge werden automatisch genehmigt, solange diese Fähigkeit aktiv ist.
pluginNamestring
Plugin der Fähigkeit, die ursprünglich von
pluginVersionstring
Plugin-Version

Andere Ereignisse

abort

Die aktuelle Drehung wurde abgebrochen.

DatenfeldTypErforderlichBeschreibung
reasonstringWarum die Drehung abgebrochen wurde (z. B. "user initiated")

user.message

Der Benutzer hat eine Nachricht gesendet. Aufgezeichnet für den Sitzungsverlauf.

DatenfeldTypErforderlichBeschreibung
contentstringDer Nachrichtentext des Benutzers
transformedContentstring
Transformierte Version nach der Vorverarbeitung
attachmentsAttachment[]
Datei, Verzeichnis, Auswahl, Blob oder GitHub Referenzverweise
sourcestring
Nachrichtenquellenkennung
agentModestring
Agentmodus: "interactive", , "plan", "autopilot"oder "shell"
interactionIdstring
Interaktionskennung

system.message

Eine System- oder Entwickleraufforderung wurde in die Unterhaltung eingefügt.

DatenfeldTypErforderlichBeschreibung
contentstringDer Aufforderungstext
role"system" | "developer"Nachrichtenfunktion
namestring
Quellenbezeichner
metadata{ promptVersion?, variables? }
Metadaten zu Eingabeaufforderungsvorlagen

external_tool.requested

Flüchtig Der Agent möchte ein externes Tool aufrufen (eines, das vom SDK-Consumer bereitgestellt wird).

DatenfeldTypErforderlichBeschreibung
requestIdstringVerwenden Sie dies, um über session.respondToExternalTool() zu antworten
sessionIdstringSitzung, zu der diese Anforderung gehört
toolCallIdstringToolaufruf-ID für diesen Aufruf
toolNamestringName des externen Tools
argumentsobject
Argumente für das Tool

external_tool.completed

Ephemere. Eine externe Toolanforderung wurde aufgelöst.

DatenfeldTypErforderlichBeschreibung
requestIdstringEntspricht dem entsprechenden external_tool.requested

exit_plan_mode.requested

Ephemere. Der Agent hat einen Plan erstellt und möchte den Planmodus beenden.

DatenfeldTypErforderlichBeschreibung
requestIdstringVerwenden Sie dies, um über session.respondToExitPlanMode() zu antworten.
summarystringZusammenfassung des Plans
planContentstringVollständiger Inhalt der Plandatei
actionsstring[]Verfügbare Benutzeraktionen (z. B. genehmigen, bearbeiten, ablehnen)
recommendedActionstringVorgeschlagene Maßnahme

exit_plan_mode.completed

Vergänglich Eine Anforderung für den Exit-Plan-Modus wurde aufgelöst.

DatenfeldTypErforderlichBeschreibung
requestIdstringEntspricht dem entsprechenden exit_plan_mode.requested

command.queued

Ephemere. Ein Slash-Befehl wurde zur Ausführung in die Warteschlange gestellt.

DatenfeldTypErforderlichBeschreibung
requestIdstringVerwenden Sie dies, um über session.respondToQueuedCommand() zu antworten.
commandstringDer Schrägstrich-Befehlstext (z. B. /help, /clear)

command.completed

Ephemere. Ein Befehl in der Warteschlange wurde aufgelöst.

DatenfeldTypErforderlichBeschreibung
requestIdstringEntspricht dem entsprechenden command.queued

Kurzübersicht: Agentischer Handlungsfluss

Eine typische agentische Aktion emittiert Ereignisse in dieser Reihenfolge:

assistant.turn_start          → Turn begins
├── assistant.intent          → What the agent plans to do (ephemeral)
├── assistant.reasoning_delta → Streaming thinking chunks (ephemeral, repeated)
├── assistant.reasoning       → Complete thinking block
├── assistant.message_delta   → Streaming response chunks (ephemeral, repeated)
├── assistant.message         → Complete response (may include toolRequests)
├── assistant.usage           → Token usage for this API call (ephemeral)
│
├── [If tools were requested:]
│   ├── permission.requested  → Needs user approval (ephemeral)
│   ├── permission.completed  → Approval result (ephemeral)
│   ├── tool.execution_start  → Tool begins
│   ├── tool.execution_partial_result  → Streaming tool output (ephemeral, repeated)
│   ├── tool.execution_progress        → Progress updates (ephemeral, repeated)
│   ├── tool.execution_complete        → Tool finished
│   │
│   └── [Agent loops: more reasoning → message → tool calls...]
│
assistant.turn_end            → Turn complete
session.idle                  → Ready for next message (ephemeral)

Alle Ereignistypen auf einen Blick

EreignistypKurzlebigKategorieSchlüsseldatenfelder
assistant.turn_start
Assistent
          `turnId`, `interactionId?` |

| assistant.intent | ✅ | Assistent | intent | | assistant.reasoning | | Assistent | reasoningId, content | | assistant.reasoning_delta | ✅ | Assistent | reasoningId, deltaContent | | assistant.streaming_delta | ✅ | Assistent | totalResponseSizeBytes | | assistant.message | | Assistent | messageId, , content``toolRequests?, , outputTokens?``phase? | | assistant.message_delta | ✅ | Assistent | messageId, deltaContent``parentToolCallId? | | assistant.turn_end | | Assistent | turnId | | assistant.usage | ✅ | Assistent | model, , inputTokens?``outputTokens?, , cost?``duration? | | tool.user_requested | | Werkzeug | toolCallId, toolName``arguments? | | tool.execution_start | | Werkzeug | toolCallId toolName arguments? mcpServerName? | | tool.execution_partial_result | ✅ | Werkzeug | toolCallId, partialOutput | | tool.execution_progress | ✅ | Werkzeug | toolCallId, progressMessage | | tool.execution_complete | | Werkzeug | toolCallId success result? error? | | session.idle | ✅ | Sitzung | backgroundTasks? | | session.error | | Sitzung | errorType, message``statusCode? | | session.compaction_start | | Sitzung | (leer) | | session.compaction_complete | | Sitzung | success, preCompactionTokens?``summaryContent? | | session.title_changed | ✅ | Sitzung | title | | session.context_changed | | Sitzung | cwd gitRoot? repository? branch? | | session.usage_info | ✅ | Sitzung | tokenLimit, currentTokens``messagesLength | | session.task_complete | | Sitzung | summary? | | session.shutdown | | Sitzung | shutdownType, codeChanges``modelMetrics | | permission.requested | ✅ | Erlaubnis | requestId, permissionRequest | | permission.completed | ✅ | Erlaubnis | requestId, result.kind | | user_input.requested | ✅ | Benutzereingabe | requestId, question``choices? | | user_input.completed | ✅ | Benutzereingabe | requestId | | elicitation.requested | ✅ | Benutzereingabe | requestId, message``requestedSchema | | elicitation.completed | ✅ | Benutzereingabe | requestId | | subagent.started | | Unteragent | toolCallId, agentName``agentDisplayName | | subagent.completed | | Untervertreter | toolCallId, agentName``agentDisplayName | | subagent.failed | | Sub-Agent | toolCallId, agentName``error | | subagent.selected | | Unter-Agent | agentName, agentDisplayName``tools | | subagent.deselected | | Unteragent | (leer) | | skill.invoked | | Fertigkeit | name path content allowedTools? | | abort | | Steuerung | reason | | user.message | | Benutzer | content, attachments?``agentMode? | | system.message | | System | content, role | | external_tool.requested | ✅ | Externes Werkzeug | requestId, toolName``arguments? | | external_tool.completed | ✅ | Externes Werkzeug | requestId | | command.queued | ✅ | Befehl | requestId, command | | command.completed | ✅ | Befehl | requestId | | exit_plan_mode.requested | ✅ | Planmodus | requestId summary planContent actions | | exit_plan_mode.completed | ✅ | Planmodus | requestId |