这篇适合谁
适合把代码托管在 GitHub、希望 Claude Code 直接在仓库里工作的开发者和维护者。典型用法包括:在 issue 和 PR 里回应 @claude 的提及,定时运行一项任务,或者自动发出代码审查。读完你能接入一个仓库,写出第一个工作流,在交互模式和自动化模式之间做出选择,并弄清楚谁能触发 Claude,以及每次运行花在哪里。
这个 Action 是什么
Claude Code GitHub Actions 是一个 GitHub Action,即 anthropics/claude-code-action,它在仓库的工作流里运行 Claude Code。在 PR 或 issue 评论中提及 @claude,Claude 就能分析代码、实现功能、修复 bug,并把 issue 变成 PR[1]。
对团队来说,它的好处是让 Claude 加入已有的 PR 和 issue 流程。请求写在评论里,结果以 PR 评论或工作流运行日志的形式返回,不需要在仓库之外另建一个入口。
同名产品不止一个,要先确认你需要哪一个。本文讲的是通过仓库里的工作流文件配置的集成。Code Review 不同,它不需要工作流文件,自动审查每一个 PR。Agent SDK 则是 GitHub Actions 之外自定义自动化的基础[1]。
准备
无论走哪条配置路径,都需要仓库的管理员权限[1]。快速配置还需要 GitHub CLI,用 gh auth login 安装并登录;缺少时 Claude Code 会发出警告[1]。快速配置只支持 github.com 仓库。如果远程仓库在 gitlab.com 或 bitbucket.org,命令会打印提示并停止[1]。
凭据有两种。从 Claude Console 获取的 API 密钥保存为 ANTHROPIC_API_KEY 密钥;用 claude setup-token 生成的订阅令牌保存为 CLAUDE_CODE_OAUTH_TOKEN,适用于 Pro、Max、Ultra、Team 和 Enterprise 套餐[1]。
快速配置
在仓库目录里运行 claude,然后执行 /install-github-app。Claude Code 会安装 Claude GitHub App,设置认证密钥,推送一个包含你所选工作流文件的分支,并在浏览器里打开 GitHub,让你直接创建 PR。合并这个 PR 后,仓库里就可以使用 @claude 了[1]。
手动配置
手动配置分三步。第一步,安装 Claude GitHub App,它需要 Contents、Issues 和 Pull requests 的读写权限[1]。第二步,添加密钥。第三步,把示例工作流文件复制到 .github/workflows/[1]。
在工作流里,把密钥传给对应的输入:API 密钥用 anthropic_api_key,OAuth 令牌用 claude_code_oauth_token[1]。下面这个工作流负责回应 @claude 的提及:
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
permissions:
contents: write
pull-requests: write
issues: write
id-token: write
actions: read
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 1
- uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}工作流就位后,在评论里写下类似 @claude fix the TypeError in the user dashboard component 的请求,就能让 Claude 修复这个问题[1]。
读懂工作流文件
工作流就是一份普通的 GitHub Actions 文件。on 列出触发它的事件,示例里是 issue 评论和 PR 审查评论。jobs 下面是要运行的任务,任务里的 steps 每一步要么运行命令,要么使用一个 Action。permissions 决定这个任务的令牌能做哪些操作,示例开放了内容、PR 和 issue 的写权限;只保留你的用例真正需要的权限。
交互模式还是自动化模式
Action 根据工作流配置决定运行模式。没有 prompt 输入时,它是交互模式,等待触发词,默认是 @claude。触发词可以出现在 issue 或 PR 评论、PR 审查,或新开 issue 的标题和正文里[1]。有 prompt 输入时,它是自动化模式:不等待提及,默认把结果写进工作流运行日志[1]。
prompt 也可以是一个 skill。如果 skill 放在仓库的 .claude/skills/ 目录,要在 Action 步骤之前运行 actions/checkout,让 skill 文件存在于 runner 上[1]。审查类工作流会加上 --comment 参数,让 Claude 把结论发到 PR 上;没有这个参数,Claude 什么也不会发布[1]。基于 prompt 的工作流还可以定时运行,比如每天生成一份报告,写进运行日志[1]。
谁能触发 Claude
Claude 启动前,Action 会检查触发运行的人。对 issue 和 PR 事件,这个人需要仓库的写权限。想允许没有写权限的特定用户,可以设置 allowed_non_write_users,同时传入你自己的 github_token[1]。另外,除非 bot 账号列在 allowed_bots 里,Action 都会拒绝它[1]。
上一节的两项检查决定的是谁能启动运行,而不是 Claude 启动后能做什么。要和工作流自身的触发条件一起理解:工作流只监听 issue 评论,就不会因为其他事件而运行。
控制费用和风险
每次运行消耗两样东西:GitHub Actions 分钟数,因为 Action 运行在 GitHub 托管的 runner 上;还有 API 令牌[1]。claude_args 里的 --max-turns 可以限制迭代次数,工作流超时和并发控制可以避免任务失控[1]。
API 密钥和 OAuth 令牌不要放进仓库,要保存为 GitHub Secrets。仓库根目录的 CLAUDE.md 可以写下代码风格和审查标准,Claude 在创建 PR 时会遵循这些规则[1]。
常用参数
参数写在工作流文件里,就能和代码一起纳入版本管理,并经过同样的代码审查。
prompt 输入放指令,claude_args 接受 CLI 参数,例如 --max-turns、--model、--mcp-config、用逗号分隔的 --allowedTools 和 --debug[1]。trigger_phrase 可以更改 Claude 响应的触发词,默认值是 @claude[1]。
云服务商
想经过自己的云账号调用,需要设置:Amazon Bedrock 用 use_bedrock: "true",Google Cloud 的 Agent Platform 用 use_vertex: "true",Microsoft Foundry 用 use_foundry: "true"。这三种方式都通过 OIDC 身份联合认证,仓库里不需要保存静态的云凭据[1]。这样一来,凭据不落在仓库里。每次只需设置一个 use_* 输入,就选定了请求发往的云平台。
常见问题
GitHub 不会为使用默认 GITHUB_TOKEN 提交的 commit 触发工作流。如果你把 github_token: ${{ secrets.GITHUB_TOKEN }} 传给了 Action,应把它删掉,这样 Claude 推送的提交才能触发 CI[1]。@claude 没有回应时,依次检查:GitHub App 是否已安装,工作流是否启用,密钥是否已设置,提及是否是完整的单词(不是 /claude 或 @claude-bot),以及评论者是否有写权限[1]。
排查时从离你最近的一环开始:仓库设置、密钥、触发词、权限,依次核对,比反复改动工作流更快[1]。
运行失败时,先看工作流运行日志。自动化模式默认把结果写在那里,查看这次运行做了什么,也要从日志入手[1]。
从 beta 版升级时,把 @beta 改为 @v1,删除 mode 输入,并把 direct_prompt 换成 prompt[1]。
下一步
在组织范围内推广时,先在组织级别安装一次 Claude GitHub App,把密钥存为组织级的 Actions 密钥,再把工作流添加到每个仓库,或者定义成一个可复用的工作流[1]。更多输入和云服务商细节,以官方页面为准[1]。
来源
- 1Claude Code GitHub ActionsAnthropic Claude Code docs
引用本页: 用 Claude Code GitHub Actions 自动审 PR、修 issue. TellWorld, https://www.tellworld.net/zh/practice/practice-claude-code-github-actions. 更新于 2026-11-14