--output-format
quando combinada com --print
. Esses formatos incluem formatos estruturados para uso programático (json
, stream-json
) e um formato de texto simplificado para acompanhar o progresso de forma legível.
O
--output-format
padrão é stream-json
. Essa opção só é válida ao usar impressão (--print
) ou quando o modo de impressão é inferido (stdout não interativo/T TY ou stdin em pipe).Formato JSON
json
emite um único objeto JSON (seguido por uma quebra de linha) quando a execução é concluída com sucesso. Deltas e eventos de ferramentas não são emitidos; o texto é agregado no resultado final.
Em caso de falha, o processo encerra com um código diferente de zero e escreve uma mensagem de erro em stderr. Nenhum objeto JSON bem formado é emitido em casos de falha.
Resposta de sucesso
Field | Description |
---|---|
type | Sempre "result" para resultados finais |
subtype | Sempre "success" para conclusões bem-sucedidas |
is_error | Sempre false para respostas bem-sucedidas |
duration_ms | Tempo total de execução em milissegundos |
duration_api_ms | Tempo da requisição à API em milissegundos (atualmente igual a duration_ms ) |
result | Texto completo da resposta do assistente (concatenação de todos os deltas de texto) |
session_id | Identificador exclusivo da sessão |
request_id | Identificador opcional da requisição (pode ser omitido) |
Formato JSON de streaming
stream-json
emite JSON delimitado por quebras de linha (NDJSON). Cada linha contém um único objeto JSON que representa um evento em tempo real durante a execução.
O streaming termina com um evento terminal result
em caso de sucesso. Em caso de falha, o processo encerra com um código diferente de zero e o streaming pode terminar antes sem um evento terminal; uma mensagem de erro é escrita em stderr.
Tipos de evento
Inicialização do sistema
Campos futuros como
tools
e mcp_servers
podem ser adicionados a este evento.Mensagem do usuário
Delta de texto do assistente
Concatena todos os valores de
message.content[].text
na ordem para reconstruir a resposta completa do assistente.Eventos de chamada de ferramenta
Tipos de chamadas de ferramenta
- Iniciada:
tool_call.readToolCall.args
contém{ "path": "file.txt" }
- Concluída:
tool_call.readToolCall.result.success
contém metadados e conteúdo do arquivo
- Iniciada:
tool_call.writeToolCall.args
contém{ "path": "file.txt", "fileText": "content...", "toolCallId": "id" }
- Concluída:
tool_call.writeToolCall.result.success
contém{ "path": "/absolute/path", "linesCreated": 19, "fileSize": 942 }
- Podem usar a estrutura
tool_call.function
com{ "name": "tool_name", "arguments": "..." }
Resultado final
Sequência de exemplo
Formato de texto
text
fornece um fluxo simplificado e legível das ações do agente. Em vez de eventos JSON detalhados, ele gera descrições de texto concisas do que o agente está fazendo em tempo real.
Esse formato é útil para monitorar o progresso do agente sem a sobrecarga de fazer parsing de dados estruturados, tornando‑o ideal para logging, depuração ou acompanhamento simples de progresso.
Exemplo de saída
Notas de implementação
- Cada evento é emitido como uma única linha terminada por
\n
- Eventos
thinking
são suprimidos no modo de impressão e não aparecem em nenhum dos formatos de saída - Campos podem ser adicionados ao longo do tempo de forma retrocompatível (consumidores devem ignorar campos desconhecidos)
- O formato de streaming fornece atualizações em tempo real, enquanto o formato JSON aguarda a conclusão antes de gerar os resultados
- Concatena todos os deltas de mensagens do
assistant
para reconstruir a resposta completa - IDs de chamadas de ferramentas podem ser usados para correlacionar eventos de início/conclusão
- IDs de sessão permanecem consistentes durante toda a execução de um único agente