--print
時,可透過 --output-format
指定多種輸出格式。這些格式包含供程式化使用的結構化格式(json
、stream-json
),以及一種簡化的文字格式,方便人類閱讀以追蹤進度。
預設的
--output-format
為 stream-json
。僅在列印(--print
)時或推斷為列印模式(非 TTY 的 stdout 或經由管線輸入的 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 | 選用的請求識別碼(可能省略) |
Stream 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 }
- 可能使用
tool_call.function
結構,格式為{ "name": "tool_name", "arguments": "..." }
終結結果
範例序列
文字格式
text
輸出格式提供一種簡化、易讀的代理動作串流。它不會輸出詳細的 JSON 事件,而是即時輸出代理正在執行動作的精簡文字描述。
這種格式適合在無需解析結構化資料的額外負擔下監控代理進度,非常適合用於記錄、除錯,或簡單的進度追蹤。
範例輸出
實作注意事項
- 每個事件以單行輸出,並以
\n
結尾 thinking
事件在列印模式下會被隱藏,且不會出現在任一輸出格式中- 欄位可能隨時間以向後相容的方式新增(消費端應忽略未知欄位)
- 串流格式提供即時更新,而 JSON 格式會在完成後才輸出結果
- 將所有
assistant
訊息增量串接以重建完整回應 - 工具呼叫 ID 可用來對應開始/完成事件
- Session ID 在單次代理執行期間保持一致