所属教程:Claude Code 从入门到大师级完整教程 预计阅读:28 分钟
交互式会话适合需要来回澄清的复杂工作;非交互模式(headless)则适合一次性查询、脚本调用、流水线集成与批量任务。本节讲清调用方式、输出格式、权限参数与会话恢复,避免在无人值守场景误用交互逻辑。
# 一次性纯文本查询
claude -p "说明这个项目的主要职责"
# 结构化 JSON 输出,便于程序解析
claude -p "列出所有对外接口" --output-format json
# 逐行流式 JSON 事件
claude -p "分析这份日志" --output-format stream-json --verbose
-p(等同 --print)以非交互方式运行:不进入提示循环,执行完毕即输出并结束。--no-session-persistence 关闭会话落盘。| 格式 | 形态 | 适用场景 |
|---|---|---|
| 默认纯文本 | 结果直接输出到 stdout | 人工查看、简单文本管道、说明性任务 |
--output-format json | 单个 JSON 对象,结果在 result 字段 | 脚本读取、下游程序消费、需要结构化判定 |
--output-format stream-json --verbose | 每行一个 JSON 事件,init 事件开头 | 实时处理、长任务进度观测、流式流水线 |
| 参数 | 行为 | 建议用途 |
|---|---|---|
--permission-mode plan | 以计划方式只读调研,不落改动 | 自动收集方案、影响分析、代码库扫描 |
--permission-mode dontAsk | 拒绝一切需要交互批准的动作 | 无人值守批处理,遇到越界动作即收敛,而非卡住等待 |
--permission-mode auto | 由安全分类模型预审常规动作、拦截高风险动作 | 授权清晰、常规类型的自动执行 |
--allowedTools | 预先批准明确工具集合,例如 Edit,Bash(git commit *) | 把可执行范围收窄到任务必需,其余不开放 |
自动化调用应只批准完成任务必需的工具;不要为了减少报错而放开全部权限。写操作、网络发布、外部系统变更在无人值守时尤其要收紧,高风险动作留给人工确认(与第 8 章提交边界一致)。
/rename 给工作流命名,便于追溯;会话按项目本地保存。claude --continue 直接接续最近一次会话;claude --resume 列出历史会话供选择。适合跨多次落座完成同一主题。本节掌握了非交互调用、输出格式、权限收紧与会话恢复。下一节讲如何把 headless 稳定接入 CI、pre-commit 与定时脚本,并守住安全与可重放边界。
← 上一节:规范维护、漂移治理与版本管理 下一节:接入 CI、脚本与定时自动化任务 →