命令字典
Slash 命令、CLI 子命令、Hook 事件、启动参数的字典与演进史。
Slash 命令、CLI 子命令、Hook 事件、启动参数的字典与演进史。
为打印模式指定输入格式
--input-format <format>claude -p --output-format json --input-format stream-json--input-format 用于为打印模式(-p / --print)指定 stdin 输入的解析格式。
| 属性 | 说明 |
|---|---|
| 语法 | --input-format <format> |
| 可选值 | text、stream-json |
| 默认值 | text |
| 生效范围 | 仅在打印模式下生效,官方文档明确说明该 flag 必须与 -p/--print 配合使用 |
text 是普通的纯文本 stdin(即平时 cat file | claude -p "..." 那种管道输入);stream-json 则让 CLI 把 stdin 当作换行分隔的 JSON 对象流(jsonl)来解析,从而支持程序化输入。
官方给出的示例:
claude -p --output-format json --input-format stream-json
不带 -p/--print 时,--input-format 不会生效。
-p/--print:这是官方文档给出的硬性要求,离开打印模式该 flag 没有意义。--output-format 搭配:输入和输出格式是两个独立的开关,可以自由组合,例如 --input-format stream-json --output-format json 或两端都用 stream-json。--include-partial-messages、--include-hook-events:这两个 flag 控制的是 --output-format stream-json 输出端的事件粒度,和 --input-format 本身没有直接依赖关系,但在构建全双工流式管道时经常同框出现。| 约束 | 原因 |
|---|---|
仅在打印模式(-p/--print)下生效 | 交互模式走终端 UI,不通过 stdin 解析结构化输入消息 |
| 通过 stdin 管道传入的内容存在 10MB 上限,超出会导致 CLI 报错并以非零状态退出 | 官方 headless 文档在“管道输入”场景下注明此限制;更大的输入应改为写入文件后在 prompt 中引用路径 |
stream-json 输入格式的说明非常简略:CLI flags 表里只有一行描述,headless(非交互模式)页面在编写本文时并未详细展开 stdin 端 stream-json 的具体消息结构、多轮对话怎么通过 stdin 追加消息、以及和权限提示交互的方式。这一文档缺口在 GitHub issue #24594 中被明确提出,内容涉及缺少消息类型说明、缺少双向流工作方式说明等。若要依赖 --input-format stream-json 做程序化对接,建议优先参考 Agent SDK 而非自行拼装 stdin 协议。-p/--print:只写 --input-format stream-json 而不带打印模式,该 flag 不会生效。修复 stream-json 输入中作为内容块发送的排队 prompt 被合并进同一 turn 时没有换行、粘连在一起的问题。
修复了 stream-json 格式会话的每转失败问题
改进 `--input-format stream-json` 会话启动时的 MCP 服务器连接等待行为
修复 stream-json 格式下客户端注入的助手工具调用在恢复旧会话时结果丢失的问题
修复了 stream-json 模式下纯空白消息触发 400 错误的问题