--output-format
при использовании вместе с --print
. Доступны структурированные форматы для программного использования (json
, stream-json
) и упрощённый текстовый формат для удобочитаемого отслеживания прогресса.
Значение по умолчанию для
--output-format
— stream-json
. Эта опция работает только при печати (--print
) или когда режим печати определяется неявно (stdout без TTY или переданный по конвейеру stdin).Формат JSON
json
возвращает один JSON-объект (за которым следует перевод строки) при успешном завершении запуска. Дельты и события инструментов не выводятся; текст объединяется в итоговый результат.
При ошибке процесс завершается с ненулевым кодом и пишет сообщение об ошибке в stderr. В случае ошибки корректный JSON-объект не выводится.
Успешный ответ
Field | Description |
---|---|
type | Всегда "result" для конечных результатов |
subtype | Всегда "success" для успешных завершений |
is_error | Всегда false для успешных ответов |
duration_ms | Общее время выполнения в миллисекундах |
duration_api_ms | Время запроса к API в миллисекундах (сейчас равно duration_ms ) |
result | Полный текст ответа ассистента (объединение всех текстовых дельт) |
session_id | Уникальный идентификатор сессии |
request_id | Необязательный идентификатор запроса (может быть опущен) |
Формат потокового JSON
stream-json
генерирует JSON, разделённый переводами строк (NDJSON). Каждая строка содержит один объект JSON, представляющий событие в реальном времени во время выполнения.
Поток заканчивается финальным событием result
при успешном завершении. В случае ошибки процесс завершится с ненулевым кодом, и поток может оборваться раньше без финального события; сообщение об ошибке будет записано в stderr.
Типы событий
Инициализация системы
В это событие могут быть добавлены новые поля, например
tools
и mcp_servers
.Сообщение пользователя
Дельта текста ассистента
Сконкатенируй все значения
message.content[].text
по порядку, чтобы восстановить полный ответ ассистента.События вызова инструмента
Типы вызовов инструментов
- Started:
tool_call.readToolCall.args
содержит{ "path": "file.txt" }
- Completed:
tool_call.readToolCall.result.success
содержит метаданные и содержимое файла
- Started:
tool_call.writeToolCall.args
содержит{ "path": "file.txt", "fileText": "content...", "toolCallId": "id" }
- Completed:
tool_call.writeToolCall.result.success
содержит{ "path": "/absolute/path", "linesCreated": 19, "fileSize": 942 }
- Могут использовать структуру
tool_call.function
с{ "name": "tool_name", "arguments": "..." }
Финальный результат
Пример последовательности
Текстовый формат
text
— это упрощённый, человекочитаемый поток действий агента. Вместо подробных JSON-событий он даёт краткие текстовые описания того, что агент делает в реальном времени.
Этот формат удобен для наблюдения за прогрессом агента без необходимости парсить структурированные данные — идеально для логирования, отладки или простого трекинга прогресса.
Пример вывода
Примечания по реализации
- Каждое событие выводится одной строкой, оканчивающейся на
\n
- События
thinking
подавляются в режиме печати и не отображаются ни в одном из форматов вывода - Со временем могут добавляться новые поля с сохранением обратной совместимости (клиентам следует игнорировать неизвестные поля)
- Потоковый формат предоставляет обновления в реальном времени, тогда как формат JSON ожидает завершения перед выводом результатов
- Сконкатенируй все дельты сообщений
assistant
, чтобы восстановить полный ответ - Идентификаторы вызовов инструментов можно использовать для сопоставления событий начала и завершения
- Идентификаторы сессий остаются неизменными на протяжении одного запуска агента