--output-format
cuando se usa junto con --print
. Estos formatos incluyen formatos estructurados para uso programático (json
, stream-json
) y un formato de texto simplificado para hacer seguimiento del progreso en un formato legible.
El
--output-format
predeterminado es stream-json
. Esta opción solo es válida al imprimir (--print
) o cuando se infiere el modo de impresión (stdout no TTY o stdin por tubería).Formato JSON
json
emite un único objeto JSON (seguido de un salto de línea) cuando la ejecución se completa correctamente. No se emiten deltas ni eventos de herramientas; el texto se agrega en el resultado final.
En caso de error, el proceso termina con un código distinto de cero y escribe un mensaje de error en stderr. No se emite ningún objeto JSON bien formado en caso de error.
Respuesta exitosa
Campo | Descripción |
---|---|
type | Siempre "result" para resultados finales |
subtype | Siempre "success" para ejecuciones exitosas |
is_error | Siempre false para respuestas exitosas |
duration_ms | Tiempo total de ejecución en milisegundos |
duration_api_ms | Tiempo de la solicitud a la API en milisegundos (actualmente igual a duration_ms ) |
result | Texto completo de la respuesta del asistente (concatenación de todos los deltas de texto) |
session_id | Identificador único de la sesión |
request_id | Identificador opcional de la solicitud (puede omitirse) |
Formato JSON de streaming
stream-json
emite JSON delimitado por saltos de línea (NDJSON). Cada línea contiene un único objeto JSON que representa un evento en tiempo real durante la ejecución.
El streaming termina con un evento terminal result
en caso de éxito. En caso de error, el proceso finaliza con un código distinto de cero y el streaming puede terminar antes sin un evento terminal; se escribe un mensaje de error en stderr.
Tipos de eventos
Inicialización del sistema
En el futuro, podrían añadirse campos como
tools
y mcp_servers
a este evento.Mensaje del usuario
Delta de texto del asistente
Concatena todos los valores de
message.content[].text
en orden para reconstruir la respuesta completa del asistente.Eventos de llamadas a herramientas
Tipos de llamadas a herramientas
- Iniciada:
tool_call.readToolCall.args
contiene{ "path": "file.txt" }
- Completada:
tool_call.readToolCall.result.success
contiene metadatos y contenido del archivo
- Iniciada:
tool_call.writeToolCall.args
contiene{ "path": "file.txt", "fileText": "content...", "toolCallId": "id" }
- Completada:
tool_call.writeToolCall.result.success
contiene{ "path": "/absolute/path", "linesCreated": 19, "fileSize": 942 }
- Pueden usar la estructura
tool_call.function
con{ "name": "tool_name", "arguments": "..." }
Resultado terminal
Secuencia de ejemplo
Formato de texto
text
ofrece un flujo simplificado y legible para personas con las acciones del agente. En lugar de eventos JSON detallados, muestra descripciones de texto concisas de lo que el agente hace en tiempo real.
Este formato es útil para monitorear el progreso del agente sin la carga de parsear datos estructurados, lo que lo hace ideal para logging, depuración o un seguimiento simple del progreso.
Ejemplo de salida
Notas de implementación
- Cada evento se emite como una sola línea terminada en
\n
- Los eventos
thinking
se suprimen en modo print y no aparecerán en ningún formato de salida - Pueden añadirse campos con el tiempo de forma retrocompatible (los consumidores deben ignorar los campos desconocidos)
- El formato streaming ofrece actualizaciones en tiempo real, mientras que el formato JSON espera a la finalización antes de mostrar resultados
- Concatená todos los deltas del mensaje de
assistant
para reconstruir la respuesta completa - Los IDs de llamadas a herramientas pueden usarse para correlacionar los eventos de inicio y finalización
- Los IDs de sesión se mantienen consistentes durante una única ejecución del agente