--output-format
in Kombination mit --print
mehrere Ausgabeformate bereit. Dazu gehören strukturierte Formate für die programmgesteuerte Nutzung (json
, stream-json
) sowie ein vereinfachtes Textformat zur menschlich lesbaren Fortschrittsverfolgung.
Das Standard-
--output-format
ist stream-json
. Diese Option ist nur gültig beim Ausgeben (--print
) oder wenn der Print-Modus abgeleitet wird (nicht-TTY-stdout oder per Pipe weitergeleitetes stdin).JSON-Format
json
-Ausgabeformat gibt ein einzelnes JSON-Objekt (gefolgt von einem Newline) aus, wenn der Run erfolgreich abgeschlossen wird. Deltas und Tool-Events werden nicht ausgegeben; Text wird zum Endergebnis zusammengeführt.
Bei einem Fehler beendet sich der Prozess mit einem von null verschiedenen Exit-Code und schreibt eine Fehlermeldung nach stderr. In Fehlerfällen wird kein wohldefiniertes JSON-Objekt ausgegeben.
Erfolgsantwort
Field | Description |
---|---|
type | Immer "result" für finale Ergebnisse |
subtype | Immer "success" für erfolgreiche Completions |
is_error | Immer false für erfolgreiche Antworten |
duration_ms | Gesamte Ausführungszeit in Millisekunden |
duration_api_ms | API-Laufzeit in Millisekunden (derzeit gleich duration_ms ) |
result | Vollständiger Assistant-Antworttext (Konkatenation aller Text-Deltas) |
session_id | Eindeutiger Sitzungsbezeichner |
request_id | Optionaler Anfragebezeichner (kann weggelassen werden) |
Stream-JSON-Format
stream-json
erzeugt zeilengetrenntes JSON (NDJSON). Jede Zeile enthält ein einzelnes JSON-Objekt, das ein Echtzeit-Ereignis während der Ausführung darstellt.
Der Stream endet bei Erfolg mit einem abschließenden result
-Event. Bei einem Fehler beendet sich der Prozess mit einem von Null verschiedenen Exit-Code und der Stream kann ohne abschließendes Event vorzeitig enden; eine Fehlermeldung wird auf stderr geschrieben.
Ereignistypen
Systeminitialisierung
Zukünftige Felder wie
tools
und mcp_servers
können zu diesem Event hinzugefügt werden.Nutzer-Nachricht
Assistant-Text-Delta
Hänge alle
message.content[].text
-Werte der Reihe nach aneinander, um die vollständige Assistant-Antwort zu rekonstruieren.Tool-Call-Events
Tool-Call-Typen
- Started:
tool_call.readToolCall.args
enthält{ "path": "file.txt" }
- Completed:
tool_call.readToolCall.result.success
enthält Dateimetadaten und Inhalt
- Started:
tool_call.writeToolCall.args
enthält{ "path": "file.txt", "fileText": "content...", "toolCallId": "id" }
- Completed:
tool_call.writeToolCall.result.success
enthält{ "path": "/absolute/path", "linesCreated": 19, "fileSize": 942 }
- Können die Struktur
tool_call.function
mit{ "name": "tool_name", "arguments": "..." }
verwenden
Terminales Ergebnis
Beispielsequenz
Textformat
text
-Ausgabeformat liefert einen vereinfachten, gut lesbaren Stream der Aktionen des Agents. Statt detaillierter JSON-Events gibt es prägnante Textbeschreibungen dessen aus, was der Agent in Echtzeit macht.
Dieses Format ist hilfreich, um den Fortschritt des Agents zu verfolgen, ohne den Overhead beim Parsen strukturierter Daten – ideal für Logging, Debugging oder einfaches Fortschritts-Tracking.
Beispielausgabe
Implementierungsnotizen
- Jedes Event wird als einzelne Zeile ausgegeben, die mit
\n
endet thinking
-Events werden im Print-Modus unterdrückt und erscheinen in keinem der Ausgabeformate- Felder können im Laufe der Zeit rückwärtskompatibel ergänzt werden (Consumers sollten unbekannte Felder ignorieren)
- Das Stream-Format liefert Echtzeit-Updates, während das JSON-Format auf die Fertigstellung wartet, bevor Ergebnisse ausgegeben werden
- Konkateniere alle
assistant
-Message-Deltas, um die vollständige Antwort zu rekonstruieren - Tool-Call-IDs können verwendet werden, um Start-/Abschluss-Events zu korrelieren
- Session-IDs bleiben während einer einzelnen Agent-Ausführung konsistent