教程

Claude Code 无头模式与 Agent SDK:非交互式脚本、CI/CD 集成完全指南

Claude Code 无头模式与 Agent SDK 完全指南:-p 参数基础用法、三种输出格式(text/json/stream-json)、JSON Schema 结构化输出、精细工具权限控制、多轮对话 Session 管理,以及 GitHub Actions PR 安全审查和批量处理的 CI/CD 实战场景。

2026/3/24分钟 阅读ClaudeEagle

Claude Code 不仅是交互式 CLI,还支持「无头模式」(Headless Mode)——通过 -p 参数以编程方式运行,适合脚本自动化、CI/CD 流水线和批量任务。

什么是无头模式?

无头模式通过 -p--print)参数运行,Claude Code 执行任务后直接输出结果,不需要用户交互:

bash
claude -p "查找 auth.py 中的 Bug 并修复" --allowedTools "Read,Edit,Bash"

背后的 Agent SDK 提供与 Claude Code 相同的工具、Agent 循环和上下文管理,也可作为 Python 和 TypeScript 包使用。

基础用法

bash
# 问一个关于代码库的问题,直接输出答案
claude -p "auth 模块做了什么?"

# 带工具权限
claude -p "运行测试套件并修复失败" --allowedTools "Bash,Read,Edit"

# 查看项目结构
claude -p "列出这个项目的主要组件" --allowedTools "Read,Bash"

获取结构化输出

JSON 输出

bash
claude -p "总结这个项目" --output-format json

响应格式:

json
{
  "result": "项目摘要文本...",
  "session_id": "sess_xxx",
  "usage": { "input_tokens": 1234, "output_tokens": 567 }
}

按指定 Schema 结构化输出

bash
claude -p "提取 auth.py 中的主要函数名" \
  --output-format json \
  --json-schema '{"type":"object","properties":{"functions":{"type":"array","items":{"type":"string"}}},"required":["functions"]}'

结果在响应的 structured_output 字段中。

流式输出(实时 Token 流)

bash
claude -p "解释递归" \
  --output-format stream-json \
  --verbose \
  --include-partial-messages

配合 jq 实时显示文本:

bash
claude -p "写一首诗" \
  --output-format stream-json --verbose --include-partial-messages | \
  jq -rj 'select(.type == "stream_event" and .event.delta.type? == "text_delta") | .event.delta.text'

精细控制工具权限

bash
# 只允许特定 Git 操作
claude -p "查看暂存区变更并创建合适的提交" \
  --allowedTools "Bash(git diff *),Bash(git log *),Bash(git status *),Bash(git commit *)"

Bash(git diff *) 的末尾 * 启用前缀匹配,允许所有以 git diff 开头的命令。注意 * 前有空格——Bash(git diff*) 不加空格会匹配 git diff-index 等不相关命令。

自定义系统提示

bash
# 将 PR diff 管道给 Claude 做安全审查
gh pr diff "$1" | claude -p \
  --append-system-prompt "你是安全工程师,专注于检查漏洞。" \
  --output-format json

--append-system-prompt:在默认系统提示后追加(保留 Claude Code 的编码能力) --system-prompt:完全替换默认系统提示

多轮对话(继续会话)

继续最近的对话

bash
# 第一轮
claude -p "审查这个代码库的性能问题"

# 继续最近的对话
claude -p "现在聚焦在数据库查询上" --continue
claude -p "生成所有问题的总结报告" --continue

通过 Session ID 恢复特定对话

bash
# 保存 Session ID
session_id=$(claude -p "开始审查" --output-format json | jq -r '.session_id')

# 恢复特定对话
claude -p "继续那次审查" --resume "$session_id"

CI/CD 实战场景

GitHub Actions:PR 安全审查

yaml
jobs:
  security-review:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: 安全审查
        run: |
          gh pr diff ${{ github.event.number }} | claude -p \
            --append-system-prompt "你是安全工程师,专注检查漏洞。" \
            --output-format json > review.json

自动修复 Lint 错误

bash
#!/bin/bash
claude -p "运行 ruff 检查,修复所有 lint 错误,然后提交" \
  --allowedTools "Bash,Read,Edit" \
  --continue

批量处理多个文件

bash
for file in src/**/*.py; do
  claude -p "为 $file 添加类型注解" \
    --allowedTools "Read,Edit" \
    --output-format json
done

输出格式对比

格式说明适用场景
text(默认)纯文本简单脚本、终端显示
json结构化 JSON(含 session_id、usage)CI/CD、需要元数据
stream-json换行分隔的实时 JSON流式处理、实时监控

Agent SDK(Python/TypeScript)

对于需要结构化输出、工具审批回调和原生消息对象的场景,使用 Agent SDK 包:

python
# Python Agent SDK
from anthropic.agents import AgentSDK

sdk = AgentSDK()
result = sdk.run(
    prompt="分析代码库并生成报告",
    allowed_tools=["Read", "Bash"],
    output_format="json"
)

详细文档见:Agent SDK 文档


原文:Run Claude Code programmatically | 来源:Anthropic 官方文档

相关文章推荐

教程Claude Code 程序化调用完全指南:-p 标志、结构化输出、流式响应与会话续接Claude Code 程序化调用完全指南:-p/--print 非交互模式基础用法、三种输出格式(text/json/stream-json)、按 JSON Schema 提取结构化数据(structured_output 字段)、jq 解析响应、流式响应(stream-json + --verbose + --include-partial-messages + jq -rj 过滤 text_delta)、--allowedTools 自动批准工具(权限规则语法/末尾空格注意事项)、自动创建 Commit 示例、--append-system-prompt/--system-prompt 系统提示词、--continue/--resume 会话续接(Session ID 捕获)、GitHub Actions CI/CD 集成,以及 Python/TypeScript Agent SDK 高级用法入口。2026/3/8教程Claude Code + GitHub Actions:自动化代码审查与 CI/CD 集成完全指南Claude Code GitHub Actions 完整配置指南:5 分钟快速安装(GitHub App + API Key Secret + Workflow 文件)、四大使用场景(按需 PR 审查/Issue 自动实现/快速修复/自动 Changelog)、每 PR 自动触发审查配置、高级参数(模型/轮数/工具限制/AWS Bedrock)与安全最佳实践。2026/3/13教程Claude Code GitHub Actions 集成指南:让 AI 自动化你的 CI/CD 流水线Claude Code GitHub Actions 让 AI 融入 GitHub 工作流,支持通过 @claude 提及触发代码审查、自动创建 PR 和修复 Bug。本文涵盖快速安装、手动配置、Beta 到 v1.0 升级指南、实用工作流示例(PR 审查、Issue 自动修复)以及 AWS Bedrock/Google Vertex AI 集成方案。2026/2/27教程Claude Code 权限管理完全指南:精确控制 AI 能执行哪些操作Claude Code 权限系统完整解析:四种权限模式(default/acceptEdits/bypassPermissions/plan)、--allowedTools 和 --disallowedTools 精确工具控制、Bash 命令白名单语法(通配符匹配)、settings.json 持久化权限配置、CLAUDE.md 中的权限规则声明、CI/CD 自动化场景的权限配置、以及如何在效率和安全之间找到平衡点。2026/3/18教程Claude Code Hooks 实战指南:5 大自动化场景、三种 Hook 类型与故障排查Claude Code Hooks 实战指南:/hooks 交互菜单四步创建桌面通知 Hook、5 大常用自动化场景(等待通知/编辑后 Prettier 格式化/退出码 2 阻止受保护文件/PostCompact 重注入上下文/ConfigChange 审计日志)、四种 Hook 类型(command/prompt-based/agent-based/HTTP Webhook)、输入/输出机制(stdin JSON/stdout 注入上下文/退出码 0 继续/2 阻止/非零警告)、结构化 JSON 输出、Matcher 过滤器语法(Edit|Write/Bash(git *)/*/空字符串)、四级存储位置,以及五大故障排查方法和调试技巧。2026/3/8教程Claude Code 定时任务(Scheduled Tasks)完全指南:/loop 命令、Cron 表达式与三日自动过期Claude Code 定时任务完整指南:/loop Bundled Skill(三种间隔写法:前置 token/trailing every/默认 10 分钟;对 Skill 命令循环执行)、一次性自然语言提醒(自动删除)、CronCreate/CronList/CronDelete 三个底层工具、运行机制(低优先级/两轮之间触发/本地时区)、随机延迟机制(重复任务 0~10% 偏移/单次任务 90 秒)、三日自动过期、Cron 表达式参考表、CLAUDE_CODE_DISABLE_CRON 禁用,以及会话级局限性(退出消失/无补偿/无持久化)和持久化替代方案(Desktop/GitHub Actions)。2026/3/8