--print
搭配使用时,Cursor Agent CLI 通过 --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 | 可选请求标识符(可能省略) |
流式 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 将开始/完成事件关联起来
- 会话 ID 在一次代理执行过程中保持不变