扩展与规模化
Scheduling、output styles 与 Node SDK。
扩展与规模化
这一课你将能做到
- 用 headless 模式(claude -p + --output-format)把 Claude Code 嵌入脚本与自动化流程
- 在 GitHub Actions 中集成 Claude,实现 issue/PR 上的自动 triage、审查与修复
- 用 git worktrees + 多会话实现并行开发,并了解 Claude Agent SDK 的定位
为什么要学
前面的课程都在「一个人 + 一个终端」的尺度上提效。但团队的真实诉求是:PR 提交后自动来一轮初审、issue 涌入时自动打标分类、几个功能并行开发互不干扰、把内部流程封装成自研 agent 工具。这些都指向同一个方向——把 Claude Code 当基建用:headless 让它能被程序调用,CI 集成让它进协作流程,worktrees 让多份并行不冲突,SDK 让你能自己造轮子。这是从「用户」到「平台建设者」的转变,也是当前面试中 agent 工程化的核心话题。
人话:交互模式是你开车,headless 是把车钥匙交给调度系统,CI 集成是把车编进物流车队,SDK 是直接买底盘自己改装。
先建立图像
触发方式 运行形态 输出
─────────────────────────────────────────────────────
人在终端交互 → 完整 TUI 会话 → 对话界面
脚本/CI 调用 → headless:跑完即退出 → text / json / stream-json
GitHub 事件 → claude-code-action → issue/PR 评论与提交
自研应用 → Claude Agent SDK → 程序化 API
headless 的关键参数:
claude -p "提示词" \
--output-format text|json|stream-json \
--allowedTools "Read,Grep,Bash(npm test:*)" \
--max-turns 20 \
--model haiku
跟着做
步骤 1:第一个 headless 任务
# 单次问答,输出纯文本
claude -p "用三句话概括这个仓库的架构"
# 要 JSON(便于程序解析)
claude -p "列出 src 下超过 500 行的类,输出 JSON 数组" \
--output-format json
json 格式包含结果、成本、会话 ID 等元数据;stream-json 则逐条输出事件流,适合边跑边消费。
步骤 2:加安全围栏
headless 无人值守,权限必须预声明:
claude -p "跑通所有单测并总结失败原因" \
--allowedTools "Read" "Grep" "Bash(mvn test:*)" \
--max-turns 30
只放行需要的工具与命令前缀;超出白名单的操作直接被拒,模型会基于拒绝信息调整路径。--max-turns 限制最大循环轮数,防止兜圈子烧钱。
步骤 3:接入 GitHub Actions
在仓库 .github/workflows/claude.yml 中使用官方 action:
name: Claude Code
on:
issue_comment:
types: [created]
pull_request_review_comment:
types: [created]
jobs:
claude:
if: contains(github.event.comment.body, '@claude')
runs-on: ubuntu-latest
steps:
- uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
效果:在 issue 或 PR 评论里 @claude 修复这个 bug,机器人会分析上下文、提修改甚至开 PR。也可改为 push 触发做自动初审。注意:action 自己也有一层权限配置(如允许哪些工具),需按官方文档设置,且要警惕「不可信 issue 内容诱导 agent」的提示注入风险。