텍스트, JSON 및 stream-JSON 형식에 대한 출력 스키마
--print
와 함께 사용할 때 --output-format
옵션으로 여러 출력 형식을 제공해. 여기에는 프로그램적 사용을 위한 구조화된 형식(json
, stream-json
)과 사람이 읽기 쉬운 진행 상황 추적을 위한 단순화된 텍스트 형식이 포함돼.
--output-format
은 stream-json
이야. 이 옵션은 출력 중이거나(--print
) 출력 모드가 추론되는 경우(비 TTY stdout 또는 파이프로 연결된 stdin)에만 유효해.json
출력 형식은 실행이 성공적으로 완료되면 단일 JSON 객체를 한 줄로 출력해. 델타와 도구 이벤트는 출력되지 않고, 텍스트는 최종 결과에 집계돼.
실패하면 프로세스는 0이 아닌 코드로 종료하고 stderr에 오류 메시지를 기록해. 실패한 경우에는 올바른 JSON 객체가 출력되지 않아.
Field | Description |
---|---|
type | 터미널 결과에서는 항상 "result" |
subtype | 성공적인 완료에서는 항상 "success" |
is_error | 성공 응답에서는 항상 false |
duration_ms | 총 실행 시간(밀리초) |
duration_api_ms | API 요청 시간(밀리초) (현재는 duration_ms 와 동일) |
result | 전체 assistant 응답 텍스트(모든 텍스트 델타의 연결 결과) |
session_id | 고유한 세션 식별자 |
request_id | 선택적 요청 식별자(생략될 수 있음) |
stream-json
출력 형식은 줄바꿈으로 구분된 JSON(NDJSON)을 출력해. 각 줄에는 실행 중 실시간 이벤트를 나타내는 단일 JSON 객체가 포함되어 있어.
스트림은 성공 시 터미널 result
이벤트로 끝나. 실패 시에는 프로세스가 0이 아닌 코드로 종료되고 스트림이 터미널 이벤트 없이 일찍 끝날 수 있으며, 오류 메시지는 stderr에 기록돼.
tools
와 mcp_servers
같은 필드가 이 이벤트에 추가될 수 있어.message.content[].text
값을 순서대로 연결해야 해.tool_call.readToolCall.args
에 { "path": "file.txt" }
포함tool_call.readToolCall.result.success
에 파일 메타데이터와 내용 포함tool_call.writeToolCall.args
에 { "path": "file.txt", "fileText": "content...", "toolCallId": "id" }
포함tool_call.writeToolCall.result.success
에 { "path": "/absolute/path", "linesCreated": 19, "fileSize": 942 }
포함{ "name": "tool_name", "arguments": "..." }
와 함께 tool_call.function
구조를 사용할 수 있음text
출력 형식은 에이전트 동작을 단순화해 사람이 읽기 쉬운 스트림으로 보여줘. 자세한 JSON 이벤트 대신, 에이전트가 실시간으로 무엇을 하는지 간결한 텍스트로 설명해.
이 형식은 구조화된 데이터를 파싱하는 오버헤드 없이 에이전트의 진행 상황을 모니터링하기에 유용해서, 로깅, 디버깅, 간단한 진행 추적에 딱 좋아.
\n
으로 끝나는 한 줄로 출력됩니다thinking
이벤트는 print 모드에서 숨겨지며 두 출력 형식 모두에 표시되지 않습니다assistant
메시지 델타를 연결하세요