
GitHub Actions 让 Claude Code 从本机助手进入团队 CI 工作流:本文拆解 @claude 触发、workflow 配置、GitHub App 权限、v1 参数迁移、云厂商认证与安全边界,帮助开发者把 Issue 和 PR 讨论变成可审查的自动化改动。
@claude 不只是一个评论触发词,它背后是一套 GitHub Actions 运行时、GitHub App 权限、Claude Code CLI 参数和仓库上下文的组合。配置对了,Issue 可以变成分支和改动;配置草率,它也可能把 CI runner 变成一个权限过大的自动执行入口。@claude,让 Claude 分析代码、回答问题、实现改动,甚至生成分支上的提交。官方文档把它描述为把 Claude Code 接进 GitHub 工作流的方式,并说明它构建在 Claude Agent SDK 之上。1| 层 | 你配置什么 | 决定什么 |
|---|---|---|
| 触发器 | issue_comment、pull_request_review_comment、issues、schedule 等事件 | Claude 在什么场景被唤起 |
| 权限 | GitHub App、GITHUB_TOKEN、workflow permissions | Claude 能读写哪些仓库资源 |
| 运行时 | prompt、claude_args、settings、CLAUDE.md | Claude 拿到什么上下文、用什么模型、能调用哪些工具 |
@claude,很容易低估它实际拿到的是一个 CI runner、仓库 checkout、GitHub API token 和 Claude Code 的工具执行环境。/install-github-app。这个命令会引导你安装 Claude GitHub App,并把 workflow 和 API key secret 配起来;文档也说明,你必须是仓库管理员,才能安装 GitHub App 和添加 secrets。1ANTHROPIC_API_KEY 放进仓库 secrets,再把示例 workflow 放到 .github/workflows/。GitHub App 需要 Contents、Issues、Pull requests 的读写权限,用来读文件、回应 issue、创建分支或处理 PR。1if 条件检查正文里是否包含 @claude。示例还给 job 配了 contents: write、pull-requests: write、issues: write、id-token: write 和 actions: read 权限,其中 actions: read 用于让 Claude 读取 PR 上的 CI 结果。2actions/checkout,再运行 anthropics/claude-code-action@v1。示例里 with 部分传入 anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }},可选项包括自定义触发词、被分配给特定用户时触发、通过 claude_args 指定模型、最大轮数和允许工具。2claude_args 是最应该认真写的地方。它不是装饰性参数,而是把本机 Claude Code 的运行边界带进 CI:with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
claude_args: |
--max-turns 10
--allowedTools "Bash(npm install),Bash(npm run build),Bash(npm run test:*)"prompt 和 claude_args@beta 改到 @v1,删除 mode,把 direct_prompt 换成 prompt,再把 max_turns、model、custom_instructions 等旧输入迁到 claude_args。1@claude 评论是一种,带固定 prompt 直接跑任务是另一种。1| 场景 | 推荐写法 | 适合任务 |
|---|---|---|
| 人触发 | 监听评论,默认响应 @claude | 修 bug、解释代码、按 PR 讨论补改动 |
| 机器触发 | 在 workflow 里写固定 prompt | 每日 commit 摘要、定期依赖巡检、文档同步 |
| 插件/技能触发 | prompt 里调用仓库或插件里的 skill | 固定代码审查清单、团队内部规范检查 |
CLAUDE.md 决定它像不像你的团队成员CLAUDE.md,写入代码风格、评审标准、项目规则和偏好模式。GitHub Actions 文档也强调,Claude 会按这个文件理解项目标准。1CLAUDE.md,Claude 只能从现有代码里猜团队习惯;有了它,你可以把「测试怎么跑」「哪些目录不能碰」「PR 说明怎么写」「迁移脚本要不要拆开」这些规则固定下来。CLAUDE.md 控制在三类信息:allowed_bots 放开。文档特别警告,不要轻易把 allowed_bots 设成 '*',因为外部 GitHub App 也可能制造触发事件。3allowed_non_write_users。安全文档明确说它会绕过写权限要求,只应在权限极窄的 workflow 里使用,例如只允许写 issue label 的自动化;同时建议使用 job 级别的 GITHUB_TOKEN,不要用个人访问令牌。3permissions 按任务最小化,不要默认给全写。--allowedTools 从只读、测试命令开始放。pull_request_target 和 workflow_run 会带着 base repository 的 secrets 运行;如果你先把不可信 PR head checkout 到 workspace 根目录,再跑 action,就把 Claude 放进了攻击者控制的工作区。官方建议默认 checkout base ref;如果必须读取 PR 文件,把 head ref checkout 到子目录,再通过 --add-dir 交给 Claude。3@claude 时不会自动创建 PR。它会把改动提交到新分支,并在回复里给出 GitHub PR 创建页链接,最后由用户点击创建 PR。3id-token: write,再用 aws-actions/configure-aws-credentials 去 assume role;Google Cloud 示例则用 google-github-actions/auth 通过 Workload Identity Provider 认证。1@claude 指令减少不必要调用,用 --max-turns 防止过度迭代,并设置 workflow 级 timeout 避免 job 失控。1packages/api 下的鉴权改动;如果发现问题,给出文件和行号;不要修改代码」。指令越像工单,成本越可控,结果也越容易 review。@claude 回答 PR 里的代码问题,不允许写文件。Bash(npm run test:*)、Bash(npm run lint:*) 和必要的编辑能力。schedule 和固定 prompt 做每日摘要、依赖巡检、文档同步。claude_args、CLAUDE.md 和仓库代码。把这几层拆清楚,你才是在用一个可审查的工程系统,而不是把一个会写代码的聊天窗口放进 CI。docs.anthropic.com
github.com
github.com
This story was produced automatically by a channel. One sentence is all it takes for Neodrop to keep producing for you.