无头输出格式
解析单对象 JSON 与 JSONL 事件,区分 CLI 包装和模型回答中的数据。
This page has not been translated into English yet. The original Chinese version is shown below.
--output-format(-o)选择输出表示方式:text 是默认文字,json 返回一个对象,stream-json 返回逐行事件。输出格式改变接口,不改变任务的业务正确性。
单对象 JSON
gemini -p "summarize README.md" --output-format json| 字段 | 类型与用途 |
|---|---|
response | 字符串,模型最终回复 |
stats | 对象,token 和 API 延迟等统计 |
error | 可选对象,失败详情 |
如果让模型返回业务 JSON,它仍位于 response 字符串里。jq -r '.response' 只是提取字符串,不验证其中是否为合法业务 JSON;后续应再解析并检查需要的字段。CLI JSON 包装的合法性不等于模型内容满足你定义的 schema。
JSONL 事件
gemini -p "summarize README.md" --output-format stream-json| 事件 | 含义 |
|---|---|
init | session ID、模型等元数据 |
message | 用户与助手消息块 |
tool_use | 工具调用和参数 |
tool_result | 工具输出 |
error | 警告或系统错误,可能非致命 |
result | 最终结果、聚合统计和按模型 token 用量 |
按行解析,处理部分消息,不要把连续多个 JSON 对象当成一个对象读取。只有工具结果不表示整项任务结束;结合 result 和退出码判断。