--print
と組み合わせて使う --output-format
オプションで複数の出力フォーマットに対応してるよ。プログラムで扱うための構造化フォーマット(json
、stream-json
)に加えて、人間が読みやすい進行状況の表示向けのシンプルなテキストフォーマットもある。
デフォルトの
--output-format
は stream-json
。このオプションが有効になるのは、--print
で出力する場合、または出力が自動的に印字モードとみなされる場合(非 TTY の stdout やパイプされた stdin)だけだよ。JSON 形式
json
出力形式は、実行が正常に完了したとき、1 行の 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
の値を順番に連結する。ツール呼び出しイベント
ツール呼び出しタイプ
- 開始:
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
で終端された1行として送出される thinking
イベントはプリントモードでは抑制され、どちらの出力形式にも出力されない- フィールドの追加は後方互換性を保った形で随時行われる可能性がある(コンシューマーは未知のフィールドを無視すること)
- ストリーム形式はリアルタイムに更新され、JSON 形式は完了を待ってから結果を出力する
- 完全な応答を再構成するには、すべての
assistant
メッセージのデルタを連結する - ツール呼び出し ID は開始/完了イベントの相関付けに使用できる
- セッション ID は単一のエージェント実行の全期間で一貫して維持される