该资料是一份关于 claude CLI 无头模式的使用指南,核心是用 claude -p(或 --print)在脚本、CI 和自动化中非交互执行任务。
用途与主要能力:基本调用如 claude -p "Summarize this repo",也可用文件输入(claude -p "Review this code" < file.py)或将输出通过管道交给其他命令(claude -p "List all functions" | grep "def ")。输出格式由 --output-format 控制:text 为默认人读格式;json 返回单个 JSON 结果;stream-json 需配合 --verbose 实时流式输出,每行一个 JSON,最后一行包含结果。
JSON 输出外层带元数据,字段包括 type、subtype、result、duration_ms、total_cost_usd、session_id、structured_output 等;可用 jq -r '.result' 提取纯文本结果,流式输出可用 tail -1 与 jq 提取最终结果。
结构化输出:通过 --json-schema 传入 JSON Schema,强制返回符合该 schema 的数据,结果落在 structured_output 字段;可定义对象、枚举、数组等,例如提取函数名或返回 status、summary、files_changed 等字段,再用 jq 读取。
常用选项:-p/--print(必需)、--output-format、--json-schema、--verbose、--model(sonnet、opus、haiku)、--max-turns、--permission-mode、--allowedTools。权限模式如 bypassPermissions(仅限可信环境跳过权限提示)和 plan(只读探索)。
适用场景:CI/CD 集成(按结构化结果判断测试是否通过并决定退出码)、批量处理文件、以独立上下文依次执行任务,以及通过环境变量 CLAUDE_CODE_TASK_LIST_ID 共享 TaskList,配合 TaskCreate、TaskList、TaskUpdate、TaskGet 实现编排者与工作者的任务协调,任务持久化到 ~/.claude/tasks/。
限制与注意:每次 -p 调用都是全新上下文,不保留前次会话历史;stream-json 必须加 --verbose;成本信息见 JSON 输出的 total_cost_usd。资料未提供具体定价、平台支持范围或效果保证等信息。