4 4
5# Claude Code GitHub Actions5# Claude Code GitHub Actions
6 6
7> 了解如何将 Claude Code 集成到您的开发工作流中,使用 Claude Code GitHub Actions7> 在 GitHub Actions 工作流中运行 Claude Code,响应 @claude 提及、自动化任务并将 issue 转换为拉取请求
8 8
9Claude Code GitHub Actions 为您的 GitHub 工作流带来了 AI 驱动的自动化。只需在任何 PR 或 issue 中简单地提及 `@claude`,Claude 就可以分析您的代码、创建拉取请求、实现功能和修复错误 - 所有这些都遵循您项目的标准。如需在每个 PR 上自动发布评论而无需触发器,请参阅 [GitHub Code Review](/zh-CN/code-review)。9[Claude Code GitHub Actions](https://github.com/anthropics/claude-code-action) 是一个 GitHub Action,在您的仓库工作流中运行 Claude Code。在拉取请求或 issue 评论中提及 `@claude`,让 Claude 分析代码、实现更改并推送提交。您也可以给 Claude Code GitHub Action 一个提示,让它在任何 GitHub 事件上自动运行。使用它将 issue 转换为拉取请求、从评论中修复错误或自动化重复任务。
10 10
11<Note>11多个产品共享 Claude Code 名称。本页涵盖 `claude-code-action` 工作流集成,您可以使用仓库中的工作流文件进行配置。对于相关产品,请参阅:
12 Claude Code GitHub Actions 建立在 [Claude Agent SDK](/zh-CN/agent-sdk/overview) 之上,该 SDK 支持将 Claude Code 以编程方式集成到您的应用程序中。您可以使用该 SDK 构建超越 GitHub Actions 的自定义自动化工作流。
13</Note>
14 12
15<h2 id="why-use-claude-code-github-actions">13* [Code Review](/docs/zh-CN/code-review):在每个拉取请求上自动审查,无需编写工作流
16 为什么使用 Claude Code GitHub Actions?14* [Claude Code on the web](/docs/zh-CN/claude-code-on-the-web):从您的浏览器或手机进行 Claude Code 会话
15* [Claude Agent SDK](/docs/zh-CN/agent-sdk/overview):GitHub Actions 之外的自定义自动化。Claude Code GitHub Action 建立在 SDK 之上
16* [GitHub Enterprise Server](/docs/zh-CN/github-enterprise-server):带有自托管 GitHub 的 Claude Code
17
18<h2 id="setup">
19 设置
17</h2>20</h2>
18 21
19* **即时 PR 创建**:描述您需要什么,Claude 会创建一个包含所有必要更改的完整 PR22您可以通过以下两种方式之一设置 Claude Code GitHub Action:
20* **自动化代码实现**:通过单个命令将 issue 转换为可工作的代码
21* **遵循您的标准**:Claude 尊重您的 `CLAUDE.md` 指南和现有代码模式
22* **简单设置**:通过我们的安装程序和 API 密钥在几分钟内开始使用
23* **默认安全**:您的代码保留在 Github 的运行器上
24 23
25<h2 id="what-can-claude-do">24* **快速设置**:从 Claude Code 运行 `/install-github-app`。Claude Code 安装 GitHub App、添加您的身份验证密钥并为您准备工作流拉取请求
26 Claude 可以做什么?25* **手动设置**:安装应用、添加密钥并自己将工作流文件复制到您的仓库。当您不在本地运行 Claude Code、命令失败或您想完全控制工作流文件时,请使用此路径
27</h2>
28 26
29Claude Code 提供了一个强大的 GitHub Action,改变了您处理代码的方式:27对于任一路径,您需要对仓库具有管理员访问权限。
30 28
31<h3 id="claude-code-action">29<h3 id="quick-setup">
32 Claude Code Action30 快速设置
33</h3>31</h3>
34 32
35这个 GitHub Action 允许您在 GitHub Actions 工作流中运行 Claude Code。您可以使用它在 Claude Code 之上构建任何自定义工作流。33`/install-github-app` 仅适用于 github.com 仓库。如果您的仓库的 git 远程在 gitlab.com 或 bitbucket.org 上,该命令会打印通知并退出,而不是开始设置。要从 GitLab 管道运行 Claude Code,请参阅 [Claude Code GitLab CI/CD](/docs/zh-CN/gitlab-ci-cd)。
36 34
37[查看仓库 →](https://github.com/anthropics/claude-code-action)35在开始之前,安装 [GitHub CLI](https://cli.github.com) 并使用 `gh auth login` 进行身份验证。Claude Code 会检查它并在缺少时警告您。
38 36
39<h2 id="setup">37在您想要连接的仓库中打开 `claude`,运行 `/install-github-app`,然后按照提示操作。Claude Code 安装 Claude GitHub App,然后为工作流设置身份验证密钥:
40 设置
41</h2>
42 38
43<h2 id="quick-setup">39* 如果 Claude Code 已经有 API 密钥,它会重用该密钥,并提供保留仓库现有 `ANTHROPIC_API_KEY` 密钥的选项(如果已设置)
44 快速设置40* 否则,选择使用您的 Claude 订阅创建长期令牌或粘贴 API 密钥
45</h2>41
42Claude Code 将凭证保存为仓库密钥,对于 API 密钥命名为 `ANTHROPIC_API_KEY`,对于订阅令牌命名为 `CLAUDE_CODE_OAUTH_TOKEN`。
43
44Claude Code 然后推送一个包含您选择的工作流文件的分支,已设置为使用该密钥,并在您的浏览器中打开 GitHub,准备创建拉取请求。创建并合并该拉取请求,`@claude` 就可以在仓库中工作。
46 45
47在 Claude Code 终端中运行 `/install-github-app` 以交互方式设置集成。该命令在您的仓库上安装 Claude GitHub App,然后引导您添加 GitHub Actions 工作流和 API 密钥密钥。46如果您选择审查工作流,Claude 会在拉取请求本身上发布每个审查,作为它发现的每个问题的内联评论或在它没有发现任何问题时作为一个摘要评论。Claude 会跳过一些拉取请求,例如草稿。[审查工作流示例](#run-a-skill)使用相同的 skill 并列出它们。在 v2.1.229 之前,Claude 仅将其审查写入工作流运行日志。
48 47
49安装 GitHub App 后,该命令会询问是否继续进行 GitHub Actions 设置。在 Claude Code v2.1.187 及更高版本中,您可以选择**暂时跳过**以仅安装 App,然后通过再次运行 `/install-github-app` 返回工作流和密钥步骤。早期版本直接进行工作流选择。48要更新早期版本生成的审查工作流,请执行以下操作之一:
49
50* 再次运行 `/install-github-app`。当仓库已经有 `claude.yml` 时,选择**使用最新版本更新工作流文件**。Claude Code 将新的工作流文件副本推送到新分支并打开拉取请求,与首次安装相同。
51* 自己将 `--comment` 参数和 `claude_args` 行从[审查工作流示例](#run-a-skill)添加到已检入的文件,这会保留您对其所做的任何其他编辑。
52
53安装 GitHub App 后,Claude Code 会询问是否继续进行 GitHub Actions 设置。选择**暂时跳过**以仅安装 GitHub App。稍后再次运行 `/install-github-app` 以完成工作流和密钥步骤。在 v2.1.187 之前,Claude Code 直接进行工作流选择。
50 54
51<Note>55<Note>
52 * 您必须是仓库管理员才能安装 GitHub 应用并添加密钥56 * 安装 GitHub App 时,您授予它多个权限。有关完整集合,请参阅 [GitHub App 权限](#github-app-permissions)
53 * GitHub 应用将请求对内容、Issue 和拉取请求的读写权限57 * 快速设置适用于 Claude API 和 Claude 订阅。如果您使用 Amazon Bedrock、Google Cloud 的 Agent Platform 或 Microsoft Foundry,请参阅[将 Claude Code GitHub Actions 与云提供商一起使用](/docs/zh-CN/github-actions-cloud-providers)
54 * 此快速启动方法仅适用于直接 Claude API 用户。如果您使用 Amazon Bedrock 或 Google Cloud 的 Agent Platform,请参阅 [使用 Amazon Bedrock 和 Google Cloud](#using-with-amazon-bedrock-and-google-cloud) 部分。
55</Note>58</Note>
56 59
57<h2 id="manual-setup">60<h3 id="manual-setup">
58 手动设置61 手动设置
59</h2>62</h3>
63
64要在不运行 `/install-github-app` 的情况下配置 Claude Code GitHub Action,请安装应用、添加密钥并自己复制工作流文件:
65
66<Steps>
67 <Step title="安装 Claude GitHub App">
68 将 [Claude GitHub App](https://github.com/apps/claude) 安装到您的仓库。Claude Code GitHub Action 依赖于应用的三个权限:
60 69
61如果 `/install-github-app` 命令失败或您更喜欢手动设置,请按照以下手动设置说明进行操作:70 * **Contents**:读写,以便 Claude 可以修改仓库文件
71 * **Issues**:读写,以便 Claude 可以响应 issue
72 * **Pull requests**:读写,以便 Claude 可以创建 PR 并推送更改
62 73
631. **安装 Claude GitHub 应用**到您的仓库:[https://github.com/apps/claude](https://github.com/apps/claude)74 在安装期间,您还授予其他 Claude 功能使用的权限。有关完整集合,请参阅 [GitHub App 权限](#github-app-permissions)。
75 </Step>
64 76
65 Claude GitHub 应用需要以下仓库权限:77 <Step title="添加身份验证密钥">
78 根据您的身份验证方式,将以下密钥之一添加到您的仓库。请参阅 GitHub 的[在 GitHub Actions 中使用密钥](https://docs.github.com/en/actions/security-guides/using-secrets-in-github-actions)指南。
66 79
67 * **Contents**:读写(用于修改仓库文件)80 * `ANTHROPIC_API_KEY`:来自 [Claude Console](https://platform.claude.com) 的 Claude API 密钥
68 * **Issues**:读写(用于响应 issue)81 * `CLAUDE_CODE_OAUTH_TOKEN`:使用您的 Claude 订阅进行身份验证的 OAuth 令牌,在 Pro、Max、Team 和 Enterprise 计划上可用。通过在本地运行 `claude setup-token` 生成一个。请参阅[生成长期令牌](/docs/zh-CN/authentication#generate-a-long-lived-token)
69 * **Pull requests**:读写(用于创建 PR 和推送更改)
70 82
71 有关安全和权限的更多详情,请参阅 [安全文档](https://github.com/anthropics/claude-code-action/blob/main/docs/security.md)。83 在工作流文件中,将密钥传递给匹配的输入:`anthropic_api_key` 用于 API 密钥,或 `claude_code_oauth_token` 用于 OAuth 令牌。
722. **添加 ANTHROPIC\_API\_KEY** 到您的仓库密钥([了解如何在 GitHub Actions 中使用密钥](https://docs.github.com/en/actions/security-guides/using-secrets-in-github-actions))84 </Step>
733. **复制工作流文件**从 [examples/claude.yml](https://github.com/anthropics/claude-code-action/blob/main/examples/claude.yml) 到您的仓库的 `.github/workflows/`85
86 <Step title="复制工作流文件">
87 将 [examples/claude.yml](https://github.com/anthropics/claude-code-action/blob/main/examples/claude.yml) 复制到您的仓库的 `.github/workflows/` 目录。该文件是一个工作的工作流,不仅仅是一个示例。按照提交的方式,Claude 在任何人在 issue 或拉取请求中提及 `@claude` 时响应,使用 `ANTHROPIC_API_KEY` 密钥进行身份验证。如果您改为添加了 `CLAUDE_CODE_OAUTH_TOKEN`,请将工作流的 `anthropic_api_key` 行更改为 `claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}`。
88 </Step>
89</Steps>
74 90
75<Tip>91<Tip>
76 完成快速启动或手动设置后,通过在 issue 或 PR 评论中标记 `@claude` 来测试该 action。92 设置后,通过在 issue 或 PR 评论中标记 `@claude` 来测试 Claude Code GitHub Action。
77</Tip>93</Tip>
78 94
79<h2 id="upgrading-from-beta">95<h3 id="set-up-for-an-organization">
80 从 Beta 升级96 为组织设置
81</h2>97</h3>
82 98
83<Warning>99使用快速设置或手动设置,您一次配置一个仓库。要在整个组织中推出 Claude Code GitHub Action:
84 Claude Code GitHub Actions v1.0 引入了重大更改,需要更新您的工作流文件才能从 beta 版本升级到 v1.0。
85</Warning>
86 100
87如果您当前使用 Claude Code GitHub Actions 的 beta 版本,我们建议您更新工作流以使用 GA 版本。新版本简化了配置,同时添加了强大的新功能,如自动模式检测。101* 在组织级别安装一次 [Claude GitHub App](https://github.com/apps/claude),选择所有仓库或选定列表
102* 将身份验证密钥存储为组织级别的 Actions 密钥,以便每个仓库不需要自己的副本
103* 将工作流文件添加到应该运行 Claude Code GitHub Action 的每个仓库,或将作业定义一次作为[可重用工作流](https://docs.github.com/en/actions/using-workflows/reusing-workflows),每个仓库都调用它
88 104
89<h3 id="essential-changes">105对于跨仓库共享的密钥,使用来自 [Claude Console](https://platform.claude.com) 的 API 密钥进行身份验证,而不是 OAuth 令牌,因为 OAuth 令牌与运行 `claude setup-token` 的人的订阅相关联。
90 基本更改106
91</h3>107要完全避免存储长期密钥,通过工作负载身份联合进行身份验证,其中 Claude Code GitHub Action 将工作流的 GitHub OpenID Connect (OIDC) 令牌交换为通过 Claude Console 服务账户的 Claude API 访问。设置这些输入:
92 108
93所有 beta 用户必须对其工作流文件进行这些更改才能升级:109* `anthropic_federation_rule_id`:联合规则 ID,`fdrl_...`
110* `anthropic_organization_id`:您的 Anthropic 组织 ID
111* `anthropic_service_account_id`:服务账户 ID,`svac_...`。可选,因为您在 Console 中创建的联合规则已经针对服务账户
112* `anthropic_workspace_id`:工作区 ID,`wrkspc_...`。当联合规则针对单个工作区时可选
94 113
951. **更新 action 版本**:将 `@beta` 更改为 `@v1`114授予工作流 `id-token: write` 权限,Claude Code GitHub Action 需要它来进行联合交换,即使您传递自己的 `github_token`。有关 Console 端配置,请参阅 [Claude Code GitHub Action 的设置指南](https://github.com/anthropics/claude-code-action/blob/main/docs/setup.md)。
962. **删除模式配置**:删除 `mode: "tag"` 或 `mode: "agent"`(现在自动检测)
973. **更新提示输入**:将 `direct_prompt` 替换为 `prompt`
984. **移动 CLI 选项**:将 `max_turns`、`model`、`custom_instructions` 等转换为 `claude_args`
99 115
100<h3 id="breaking-changes-reference">116有关安全审查中的数据处理和保留问题,请参阅[数据使用](/docs/zh-CN/data-usage)和[安全](/docs/zh-CN/security)。
101 重大更改参考117
118<h3 id="uninstall">
119 卸载
102</h3>120</h3>
103 121
104| 旧 Beta 输入 | 新 v1.0 输入 |122要删除 Claude Code GitHub Action,请撤销适用于您的安装的每个设置部分:
105| --------------------- | ------------------------------------- |123
106| `mode` | *(已删除 - 自动检测)* |124* **工作流文件**:从 `.github/workflows/` 中删除使用 `anthropics/claude-code-action` 的工作流。如果您使用了快速设置,请查找 `claude.yml`,如果您选择了审查工作流,请查找 `claude-code-review.yml`。删除工作流后,Claude Code GitHub Action 不再运行
107| `direct_prompt` | `prompt` |125* **密钥**:从仓库中删除 `ANTHROPIC_API_KEY` 或 `CLAUDE_CODE_OAUTH_TOKEN` 密钥,如果您[跨仓库共享它](#set-up-for-an-organization),也从组织级别的 Actions 密钥中删除。如果您删除密钥,它持有的凭证保持有效。要完全停用 API 密钥,也在 [Claude Console](https://platform.claude.com) 中删除密钥
108| `override_prompt` | `prompt` 带 GitHub 变量 |126* **GitHub App**:在您的仓库或组织设置中的 GitHub Apps 下卸载 Claude GitHub App,但仅当您不将其用于另一个 Claude 功能(如 Code Review 或 web auto-fix)时
109| `custom_instructions` | `claude_args: --append-system-prompt` |127
110| `max_turns` | `claude_args: --max-turns` |128如果您配置了[云提供商](/docs/zh-CN/github-actions-cloud-providers),也删除提供商密钥,例如 `AWS_ROLE_TO_ASSUME`、`GCP_*` 密钥或 `AZURE_*` 密钥,并卸载自定义 GitHub App 及其 `APP_ID` 和 `APP_PRIVATE_KEY` 密钥。
111| `model` | `claude_args: --model` |129
112| `allowed_tools` | `claude_args: --allowedTools` |130<h3 id="github-app-permissions">
113| `disallowed_tools` | `claude_args: --disallowedTools` |131 GitHub App 权限
114| `claude_env` | `settings` JSON 格式 |
115
116<h3 id="before-and-after-example">
117 前后示例
118</h3>132</h3>
119 133
120**Beta 版本:**134[Claude GitHub App](https://github.com/apps/claude) 由与 GitHub 集成的每个 Claude 功能共享,包括 Claude Code GitHub Action、[Code Review](/docs/zh-CN/code-review) 和 [Claude Code on the web](/docs/zh-CN/claude-code-on-the-web#auto-fix-pull-requests) 上的 auto-fix。GitHub App 有一个覆盖其所有功能的单一权限集,因此该集包括 Claude Code GitHub Action 不使用的一些权限。
121 135
122```yaml theme={null}136安装应用时,您授予以下权限:
123- uses: anthropics/claude-code-action@beta
124 with:
125 mode: "tag"
126 direct_prompt: "Review this PR for security issues"
127 anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
128 custom_instructions: "Follow our coding standards"
129 max_turns: "10"
130 model: "claude-sonnet-5"
131```
132 137
133**GA 版本 (v1.0):**138| 权限 | 访问 |
139| ---------------- | -- |
140| Actions | 读写 |
141| Checks | 读写 |
142| Contents | 读写 |
143| Discussions | 读写 |
144| Issues | 读写 |
145| Members | 读 |
146| Metadata | 读 |
147| Pull requests | 读写 |
148| Repository hooks | 读写 |
149| Statuses | 读 |
150| Workflows | 读写 |
134 151
135```yaml theme={null}152权限集也可以在使用它的功能之前更改。当应用请求它之前没有的权限时,GitHub 会提示账户所有者批准它,对于组织安装则提示组织所有者,安装保持其旧权限直到他们这样做。例如,当 Actions 访问从读更改为写时,应用可以重新运行工作流而不仅仅查看运行和日志,因此 GitHub 要求所有者批准更改。
136- uses: anthropics/claude-code-action@v1
137 with:
138 prompt: "Review this PR for security issues"
139 anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
140 claude_args: |
141 --append-system-prompt "Follow our coding standards"
142 --max-turns 10
143 --model claude-sonnet-5
144```
145 153
146<Tip>154安装应用时,您接受其完整权限集。GitHub 不允许您接受子集。如果您的组织仅需要 Claude Code GitHub Action 使用的权限,请按照 [Claude Code GitHub Action 的设置指南](https://github.com/anthropics/claude-code-action/blob/main/docs/setup.md)创建一个具有 Contents、Issues 和 Pull requests 的自定义 GitHub App。自定义应用仅覆盖 Claude Code GitHub Action。Code Review 和 web auto-fix 仍然需要官方应用。
147 该 action 现在根据您的配置自动检测是在交互模式(响应 `@claude` 提及)还是自动化模式(立即使用提示运行)下运行。155
148</Tip>156有关 Claude Code GitHub Action 如何限制 Claude 对这些权限的操作的详细信息,请参阅[安全文档](https://github.com/anthropics/claude-code-action/blob/main/docs/security.md)。
157
158<h2 id="interactive-and-automation-modes">
159 交互和自动化模式
160</h2>
161
162Claude Code GitHub Action 从您的工作流配置中检测如何运行:
163
164* **交互模式**:当工作流不提供 `prompt` 输入时,Claude 等待触发短语 `@claude`(默认),在 issue 或拉取请求评论、拉取请求审查或新打开的 issue 的正文或标题中,然后响应该请求。进度和结果显示为触发 issue 或 PR 上的评论。
165* **自动化模式**:当工作流提供 `prompt` 输入时,Claude 运行而不等待提及,仅受[谁可以触发运行](#who-can-trigger-runs)的检查约束。默认情况下,结果显示在工作流运行日志中而不是评论中。Claude 可以在提示指导它并且它有可以发布的工具时发布到 issue 或拉取请求,如[代码审查示例](#run-a-skill)中所示。
166
167<h3 id="who-can-trigger-runs">
168 谁可以触发运行
169</h3>
170
171在两种模式中,Claude Code GitHub Action 在 Claude 开始之前对触发参与者运行两个检查,当任一检查拒绝它时运行失败:
172
173* **写入访问**:在 issue 和拉取请求事件上,触发用户必须对仓库具有写入访问权限。要允许没有写入访问权限的特定用户,请设置 `allowed_non_write_users` 并传递您自己的 `github_token` 输入。没有用户创建的事件,例如 `schedule` 触发器,会跳过此检查。
174* **人类参与者**:在每个事件上,Claude Code GitHub Action 拒绝机器人参与者,除非您在 `allowed_bots` 中列出它,这可以防止机器人在循环中触发 Claude。此检查也适用于计划运行,GitHub 将其归因于仓库用户,通常是最后更改工作流 `cron` 计划的用户。如果该用户是机器人,请在 `allowed_bots` 中列出它。
149 175
150<h2 id="example-use-cases">176<h2 id="example-use-cases">
151 示例用例177 示例用例
152</h2>178</h2>
153 179
154Claude Code GitHub Actions 可以帮助您完成各种任务。[examples 目录](https://github.com/anthropics/claude-code-action/tree/main/examples)包含针对不同场景的现成工作流。180[examples 目录](https://github.com/anthropics/claude-code-action/tree/main/examples)包含针对不同场景的现成工作流。
155 181
156<h3 id="basic-workflow">182本页上的示例显示 API 密钥身份验证。如果您使用 Claude 订阅进行身份验证,请将任何示例中的 `anthropic_api_key` 行替换为 `claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}`。
157 基本工作流183
184<h3 id="respond-to-claude-mentions">
185 响应 @claude 提及
158</h3>186</h3>
159 187
188此工作流在交互模式下运行 Claude Code GitHub Action,因此每当有人在 issue 或 PR 评论中提及 `@claude` 时,Claude 都会响应。
189
160```yaml theme={null}190```yaml theme={null}
161name: Claude Code191name: Claude Code
162on:192on:
166 types: [created]196 types: [created]
167jobs:197jobs:
168 claude:198 claude:
199 if: contains(github.event.comment.body, '@claude')
169 runs-on: ubuntu-latest200 runs-on: ubuntu-latest
201 permissions:
202 contents: write
203 pull-requests: write
204 issues: write
205 id-token: write
206 actions: read
170 steps:207 steps:
208 - uses: actions/checkout@v6
209 with:
210 fetch-depth: 1
171 - uses: anthropics/claude-code-action@v1211 - uses: anthropics/claude-code-action@v1
172 with:212 with:
173 anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}213 anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
174 # Responds to @claude mentions in comments
175```214```
176 215
177<h3 id="using-skills">216此工作流中不是样板的部分:
178 使用 skills217
218* `id-token: write`:Claude Code GitHub Action 的默认 GitHub App 身份验证所需
219* `actions: read`:让 Claude 读取 PR 上的 CI 结果
220* `actions/checkout`:给 Claude 一个本地仓库副本来工作
221* `if`:防止运行器在不提及 `@claude` 的评论上启动。Claude Code GitHub Action 也在响应之前检查触发短语本身
222
223工作流就位后,在任何 issue 或 PR 评论中提及 `@claude` 并提出请求:
224
225```text wrap theme={null}
226@claude implement this feature based on the issue description
227@claude how should I implement user authentication for this endpoint?
228@claude fix the TypeError in the user dashboard component
229```
230
231Claude 在同一 issue 或 PR 上的评论中回复并在工作时更新它。
232
233<h3 id="run-a-skill">
234 运行 skill
179</h3>235</h3>
180 236
181`prompt` 输入接受 [skill](/zh-CN/skills) 调用以及纯文本:237`prompt` 输入接受 [skill](/docs/zh-CN/skills) 调用以及纯文本:
182 238
183* 对于存储库的 `.claude/skills/` 目录中的 skill,在操作步骤之前运行 `actions/checkout`,然后传递 `/skill-name`。239* 对于仓库的 `.claude/skills/` 目录中的 skill,在 `anthropics/claude-code-action` 步骤之前运行 `actions/checkout`,以便 skill 文件在运行器上可用,然后将 `/skill-name` 作为 `prompt` 传递。
184* 对于打包在插件中的 skill,使用 `plugin_marketplaces` 和 `plugins` 输入安装插件,然后传递命名空间的 `/plugin-name:skill-name`。240* 对于打包在[插件](/docs/zh-CN/plugins)中的 skill,使用 `plugin_marketplaces` 和 `plugins` 输入安装插件,然后将命名空间的 `/plugin-name:skill-name` 作为 `prompt` 传递。`plugins` 输入采用 `plugin-name@marketplace-name`,其中市场名称来自市场自己的清单而不是其仓库 URL。
185 241
186以下工作流安装 `code-review` 插件并在每个新的或更新的拉取请求上运行其 skill:242以下工作流安装 `code-review` 插件并在拉取请求打开、更新、重新打开或标记为准备审查时运行其 skill。它运行与快速设置中的审查工作流相同的插件。当您想自己控制提示、模型和触发器时,请使用这样的工作流。对于无需维护工作流文件的自动审查,请参阅 [Code Review](/docs/zh-CN/code-review)。在公共仓库上,GitHub 从 fork 拉取请求触发的运行中扣留密钥,因此审查仅在来自同一仓库中分支的拉取请求上运行。
187 243
188```yaml theme={null}244```yaml theme={null}
189name: Code Review245name: Code Review
190on:246on:
191 pull_request:247 pull_request:
192 types: [opened, synchronize]248 types: [opened, synchronize, ready_for_review, reopened]
193jobs:249jobs:
194 review:250 review:
195 runs-on: ubuntu-latest251 runs-on: ubuntu-latest
252 permissions:
253 contents: read
254 pull-requests: read
255 issues: read
256 id-token: write
196 steps:257 steps:
258 - uses: actions/checkout@v6
259 with:
260 fetch-depth: 1
197 - uses: anthropics/claude-code-action@v1261 - uses: anthropics/claude-code-action@v1
198 with:262 with:
199 anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}263 anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
200 plugin_marketplaces: "https://github.com/anthropics/claude-code.git"264 plugin_marketplaces: "https://github.com/anthropics/claude-code.git"
201 plugins: "code-review@claude-code-plugins"265 plugins: "code-review@claude-code-plugins"
202 prompt: "/code-review:code-review ${{ github.repository }}/pull/${{ github.event.pull_request.number }}"266 prompt: "/code-review:code-review --comment ${{ github.repository }}/pull/${{ github.event.pull_request.number }}"
267 claude_args: '--allowedTools "mcp__github_inline_comment__create_inline_comment"'
203```268```
204 269
205<h3 id="custom-automation-with-prompts">270此工作流中的两行控制审查的去向:
206 使用提示的自定义自动化271
272* **`--comment`**:Claude 在拉取请求上发布其审查,作为它发现的每个问题的内联评论或在它没有发现任何问题时作为一个摘要评论。没有它,Claude 不发布任何内容,您在工作流运行日志中读取发现。
273* **`claude_args`**:即使 skill 自己的 `allowed-tools` frontmatter 命名相同的工具,也要保留此行,因为 Claude Code GitHub Action 仅在 `claude_args` 中的 `--allowedTools` 命名它时才启动发布内联评论的 MCP 服务器。
274
275Claude 跳过草稿和已关闭的拉取请求、它判断不需要审查的拉取请求(例如自动化或琐碎的拉取请求)以及已经有来自 Claude 的评论的拉取请求。
276
277<h3 id="run-on-a-schedule">
278 按计划运行
207</h3>279</h3>
208 280
281使用 `prompt` 输入,Claude Code GitHub Action 在任何 GitHub 事件上以自动化模式运行,包括 cron 计划。对于纯文本提示,Claude 没有 shell 或 GitHub API 访问权限,直到您授予提示需要的工具,使用 `claude_args` 中的 `--allowedTools` 或 `settings` 输入中的 [`permissions.allow` 规则](/docs/zh-CN/permissions#permission-rule-syntax)。如果您改为调用 skill,Claude 可以使用其 [`allowed-tools` frontmatter](/docs/zh-CN/skills#pre-approve-tools-for-a-skill) 授予的工具。GitHub 仅从默认分支运行计划工作流,在公共仓库中,在 60 天没有仓库活动后禁用计划。
282
283此工作流在每天 09:00 UTC 在工作流运行日志中生成报告。其 `claude_args` 行[传递 CLI 参数](#pass-cli-arguments),选择模型并允许两个 GitHub MCP 工具。Claude 通过这些工具使用 GitHub API 读取提交和 issue,因此您可以省略 checkout 步骤:
284
209```yaml theme={null}285```yaml theme={null}
210name: Daily Report286name: Daily Report
211on:287on:
214jobs:290jobs:
215 report:291 report:
216 runs-on: ubuntu-latest292 runs-on: ubuntu-latest
293 permissions:
294 contents: read
295 issues: read
296 id-token: write
217 steps:297 steps:
218 - uses: anthropics/claude-code-action@v1298 - uses: anthropics/claude-code-action@v1
219 with:299 with:
220 anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}300 anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
221 prompt: "Generate a summary of yesterday's commits and open issues"301 prompt: "Generate a summary of yesterday's commits and open issues"
222 claude_args: "--model opus"302 claude_args: |
223```303 --model claude-opus-4-8
224 304 --allowedTools "mcp__github__list_commits,mcp__github__list_issues"
225<h3 id="common-use-cases">
226 常见用例
227</h3>
228
229在 issue 或 PR 评论中:
230
231```text wrap theme={null}
232@claude implement this feature based on the issue description
233@claude how should I implement user authentication for this endpoint?
234@claude fix the TypeError in the user dashboard component
235```305```
236 306
237Claude 将自动分析上下文并做出适当的响应。
238
239<h2 id="best-practices">307<h2 id="best-practices">
240 最佳实践308 最佳实践
241</h2>309</h2>
242 310
243<h3 id="claude-md-configuration">311<h3 id="define-project-standards-in-claude-md">
244 CLAUDE.md 配置312 在 CLAUDE.md 中定义项目标准
245</h3>313</h3>
246 314
247在您的仓库根目录创建一个 `CLAUDE.md` 文件来定义代码风格指南、审查标准、项目特定规则和首选模式。此文件指导 Claude 对您的项目标准的理解。315在您的仓库根目录创建一个 `CLAUDE.md` 文件来定义代码风格指南、审查标准、项目特定规则和首选模式。Claude 在创建 PR 和响应请求时遵循这些指南。有关详细信息,请参阅[内存文档](/docs/zh-CN/memory)。
248 316
249<h3 id="security-considerations">317<h3 id="protect-your-credentials">
250 安全考虑318 保护您的凭证
251</h3>319</h3>
252 320
253<Warning>永远不要直接将 API 密钥提交到您的仓库。</Warning>321<Warning>
254 322 永远不要直接将 API 密钥或 OAuth 令牌提交到您的仓库。始终将它们存储为 GitHub Secrets 并在工作流中引用它们,例如 `anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}`。
255有关全面的安全指导,包括权限、身份验证和最佳实践,请参阅 [Claude Code Action 安全文档](https://github.com/anthropics/claude-code-action/blob/main/docs/security.md)。323</Warning>
256
257始终为 API 密钥使用 GitHub Secrets:
258
259* 将您的 API 密钥添加为名为 `ANTHROPIC_API_KEY` 的仓库密钥
260* 在工作流中引用它:`anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}`
261* 将 action 权限限制为仅必要的权限
262* 在合并前审查 Claude 的建议
263
264始终使用 GitHub Secrets(例如,`${{ secrets.ANTHROPIC_API_KEY }}`)而不是直接在工作流文件中硬编码 API 密钥。
265 324
266<h3 id="optimizing-performance">325仅授予工作流所需的权限,并在合并前审查 Claude 的更改。
267 优化性能
268</h3>
269 326
270使用 issue 模板提供上下文,保持您的 `CLAUDE.md` 简洁和专注,并为您的工作流配置适当的超时。327有关全面的安全指导,包括权限和身份验证,请参阅 [Claude Code Action 安全文档](https://github.com/anthropics/claude-code-action/blob/main/docs/security.md)。
271 328
272<h3 id="ci-costs">329<h3 id="manage-costs">
273 CI 成本330 管理成本
274</h3>331</h3>
275 332
276使用 Claude Code GitHub Actions 时,请注意相关成本:333每次运行消耗两种资源:
277
278**GitHub Actions 成本:**
279
280* Claude Code 在 GitHub 托管的运行器上运行,这会消耗您的 GitHub Actions 分钟数
281* 有关详细的定价和分钟限制,请参阅 [GitHub 的计费文档](https://docs.github.com/en/billing/managing-billing-for-your-products/managing-billing-for-github-actions/about-billing-for-github-actions)
282
283**API 成本:**
284 334
285* 每次 Claude 交互都会根据提示和响应的长度消耗 API 令牌335* **GitHub Actions 分钟**:Claude Code GitHub Action 在 GitHub 托管的运行器上运行,这会消耗您的 GitHub Actions 分钟。有关定价和分钟限制,请参阅 [GitHub 的计费文档](https://docs.github.com/en/billing/managing-billing-for-your-products/managing-billing-for-github-actions/about-billing-for-github-actions)。
286* 令牌使用量因任务复杂性和代码库大小而异336* **API 令牌**:每次交互根据提示和响应的长度、任务复杂性和代码库大小消耗令牌。有关当前令牌费率,请参阅 [Claude 的定价页面](https://claude.com/platform/api)。如果您使用 OAuth 令牌进行身份验证,运行使用您的 Claude 订阅而不是 API 计费。
287* 有关当前令牌费率,请参阅 [Claude 的定价页面](https://claude.com/platform/api)
288 337
289**成本优化提示:**338您可以通过给 Claude 更清晰的上下文和限制每次运行可以做多少工作来降低两种成本:
290 339
291* 使用特定的 `@claude` 命令来减少不必要的 API 调用340* 编写特定的 `@claude` 请求,以便 Claude 需要更少的轮次来完成
292* 在 `claude_args` 中配置适当的 `--max-turns` 以防止过度迭代341* 使用 issue 模板提前提供上下文
342* 保持您的 `CLAUDE.md` 简洁,因为 Claude 在每次运行时都会读取它
343* 在 `claude_args` 中设置 `--max-turns` 以限制迭代
293* 设置工作流级别的超时以避免失控的作业344* 设置工作流级别的超时以避免失控的作业
294* 考虑使用 GitHub 的并发控制来限制并行运行345* 使用 GitHub 的并发控制来限制并行运行
295
296<h2 id="configuration-examples">
297 配置示例
298</h2>
299
300Claude Code Action v1 使用统一参数简化了配置:
301
302```yaml theme={null}
303- uses: anthropics/claude-code-action@v1
304 with:
305 anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
306 prompt: "Your instructions here" # Optional
307 claude_args: "--max-turns 5" # Optional CLI arguments
308```
309
310关键功能:
311 346
312* **统一提示界面** - 对所有说明使用 `prompt`347有关跨组织的使用跟踪,请参阅[分析仪表板](/docs/zh-CN/analytics)和[监控](/docs/zh-CN/monitoring-usage)。有关如何测量和计费使用情况,请参阅[成本](/docs/zh-CN/costs)。
313* **Skills** - 直接从提示调用已安装的 [skills](/zh-CN/skills)
314* **CLI 传递** - 通过 `claude_args` 的任何 Claude Code CLI 参数
315* **灵活的触发器** - 适用于任何 GitHub 事件
316 348
317访问 [examples 目录](https://github.com/anthropics/claude-code-action/tree/main/examples)获取完整的工作流文件。349<h2 id="use-a-cloud-provider">
318 350 使用云提供商
319<Tip>
320 当响应 issue 或 PR 评论时,Claude 会自动响应 @claude 提及。对于其他事件,使用 `prompt` 参数提供说明。
321</Tip>
322
323<h2 id="using-with-amazon-bedrock-and-google-cloud">
324 使用 Amazon Bedrock 和 Google Cloud
325</h2>351</h2>
326 352
327对于企业环境,您可以将 Claude Code GitHub Actions 与您自己的云基础设施一起使用。这种方法让您可以控制数据驻留和计费,同时保持相同的功能。353默认情况下,Claude Code GitHub Action 使用您的 API 密钥或 OAuth 令牌直接调用 Claude API。要通过您自己的云账户路由推理,请设置您的提供商的输入并按照[将 Claude Code GitHub Actions 与云提供商一起使用](/docs/zh-CN/github-actions-cloud-providers):
328
329<h3 id="prerequisites">
330 前置条件
331</h3>
332
333在使用云提供商设置 Claude Code GitHub Actions 之前,您需要:
334
335<h4 id="for-google-cloud’s-agent-platform">
336 对于 Google Cloud 的 Agent Platform:
337</h4>
338
3391. 启用了 Google Cloud 的 Agent Platform 的 Google Cloud 项目
3402. 为 GitHub Actions 配置的工作负载身份联合
3413. 具有所需权限的服务账户
3424. GitHub 应用(推荐)或使用默认 GITHUB\_TOKEN
343
344<h4 id="for-amazon-bedrock">
345 对于 Amazon Bedrock:
346</h4>
347
3481. 启用了 Amazon Bedrock 的 AWS 账户
3492. 在 AWS 中配置的 GitHub OIDC 身份提供商
3503. 具有 Amazon Bedrock 权限的 IAM 角色
3514. GitHub 应用(推荐)或使用默认 GITHUB\_TOKEN
352
353<Steps>
354 <Step title="创建自定义 GitHub 应用(推荐用于第三方提供商)">
355 为了在使用 Google Cloud 的 Agent Platform 或 Amazon Bedrock 等第三方提供商时获得最佳控制和安全性,我们建议创建您自己的 GitHub 应用:
356
357 1. 转到 [https://github.com/settings/apps/new](https://github.com/settings/apps/new)
358 2. 填写基本信息:
359 * **GitHub App 名称**:选择唯一的名称(例如,"YourOrg Claude Assistant")
360 * **主页 URL**:您的组织网站或仓库 URL
361 3. 配置应用设置:
362 * **Webhooks**:取消选中"Active"(此集成不需要)
363 4. 设置所需的权限:
364 * **仓库权限**:
365 * Contents:读写
366 * Issues:读写
367 * Pull requests:读写
368 5. 点击"Create GitHub App"
369 6. 创建后,点击"Generate a private key"并保存下载的 `.pem` 文件
370 7. 从应用设置页面记下您的应用 ID
371 8. 将应用安装到您的仓库:
372 * 从您的应用设置页面,点击左侧边栏中的"Install App"
373 * 选择您的账户或组织
374 * 选择"Only select repositories"并选择特定仓库
375 * 点击"Install"
376 9. 将私钥添加为仓库密钥:
377 * 转到您的仓库的 Settings → Secrets and variables → Actions
378 * 创建一个名为 `APP_PRIVATE_KEY` 的新密钥,内容为 `.pem` 文件的内容
379 10. 将应用 ID 添加为密钥:
380
381 * 创建一个名为 `APP_ID` 的新密钥,值为您的 GitHub 应用的 ID
382
383 <Note>
384 此应用将与 [actions/create-github-app-token](https://github.com/actions/create-github-app-token) action 一起使用,以在您的工作流中生成身份验证令牌。
385 </Note>
386
387 **Claude API 的替代方案或如果您不想设置自己的 Github 应用**:使用官方 Anthropic 应用:
388
389 1. 从以下位置安装:[https://github.com/apps/claude](https://github.com/apps/claude)
390 2. 无需额外的身份验证配置
391 </Step>
392
393 <Step title="配置云提供商身份验证">
394 选择您的云提供商并设置安全身份验证:
395
396 <AccordionGroup>
397 <Accordion title="Amazon Bedrock">
398 **配置 AWS 以允许 GitHub Actions 安全地进行身份验证,而无需存储凭证。**
399
400 > **安全说明**:使用特定于仓库的配置并仅授予最少所需的权限。
401
402 **所需设置**:
403
404 1. **启用 Amazon Bedrock**:
405 * 请求在 Amazon Bedrock 中访问 Claude 模型
406 * 对于跨区域模型,请在所有必需的区域中请求访问
407
408 2. **设置 GitHub OIDC 身份提供商**:
409 * 提供商 URL:`https://token.actions.githubusercontent.com`
410 * 受众:`sts.amazonaws.com`
411
412 3. **为 GitHub Actions 创建 IAM 角色**:
413 * 受信任的实体类型:Web 身份
414 * 身份提供商:`token.actions.githubusercontent.com`
415 * 权限:`AmazonBedrockFullAccess` 策略
416 * 为您的特定仓库配置信任策略
417
418 **所需值**:
419
420 设置后,您需要:
421
422 * **AWS\_ROLE\_TO\_ASSUME**:您创建的 IAM 角色的 ARN
423
424 <Tip>
425 OIDC 比使用静态 AWS 访问密钥更安全,因为凭证是临时的并自动轮换。
426 </Tip>
427
428 有关详细的 OIDC 设置说明,请参阅 [AWS 文档](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_oidc.html)。
429 </Accordion>
430
431 <Accordion title="Google Cloud 的 Agent Platform">
432 **配置 Google Cloud 以允许 GitHub Actions 安全地进行身份验证,而无需存储凭证。**
433
434 > **安全说明**:使用特定于仓库的配置并仅授予最少所需的权限。
435
436 **所需设置**:
437
438 1. **在您的 Google Cloud 项目中启用 API**:
439 * IAM Credentials API
440 * Security Token Service (STS) API
441 * Google Cloud 的 Agent Platform API
442
443 2. **创建工作负载身份联合资源**:
444 * 创建工作负载身份池
445 * 添加 GitHub OIDC 提供商,具有:
446 * 发行者:`https://token.actions.githubusercontent.com`
447 * 仓库和所有者的属性映射
448 * **安全建议**:使用特定于仓库的属性条件
449
450 3. **创建服务账户**:
451 * 仅授予 `Vertex AI User` 角色
452 * **安全建议**:为每个仓库创建专用服务账户
453
454 4. **配置 IAM 绑定**:
455 * 允许工作负载身份池模拟服务账户
456 * **安全建议**:使用特定于仓库的主体集
457
458 **所需值**:
459
460 设置后,您需要:
461
462 * **GCP\_WORKLOAD\_IDENTITY\_PROVIDER**:完整的提供商资源名称
463 * **GCP\_SERVICE\_ACCOUNT**:服务账户电子邮件地址
464
465 <Tip>
466 工作负载身份联合消除了对可下载服务账户密钥的需求,提高了安全性。
467 </Tip>
468
469 有关详细的设置说明,请参阅 [Google Cloud 工作负载身份联合文档](https://cloud.google.com/iam/docs/workload-identity-federation)。
470 </Accordion>
471 </AccordionGroup>
472 </Step>
473
474 <Step title="添加所需的密钥">
475 将以下密钥添加到您的仓库(Settings → Secrets and variables → Actions):
476
477 #### 对于 Claude API(直接):
478
479 1. **对于 API 身份验证**:
480 * `ANTHROPIC_API_KEY`:您的 Claude API 密钥,来自 [console.anthropic.com](https://console.anthropic.com)
481
482 2. **对于 GitHub 应用(如果使用您自己的应用)**:
483 * `APP_ID`:您的 GitHub 应用的 ID
484 * `APP_PRIVATE_KEY`:私钥 (.pem) 内容
485
486 #### 对于 Google Cloud 的 Agent Platform
487
488 1. **对于 GCP 身份验证**:
489 * `GCP_WORKLOAD_IDENTITY_PROVIDER`
490 * `GCP_SERVICE_ACCOUNT`
491
492 2. **对于 GitHub 应用(如果使用您自己的应用)**:
493 * `APP_ID`:您的 GitHub 应用的 ID
494 * `APP_PRIVATE_KEY`:私钥 (.pem) 内容
495
496 #### 对于 Amazon Bedrock
497
498 1. **对于 AWS 身份验证**:
499 * `AWS_ROLE_TO_ASSUME`
500
501 2. **对于 GitHub 应用(如果使用您自己的应用)**:
502 * `APP_ID`:您的 GitHub 应用的 ID
503 * `APP_PRIVATE_KEY`:私钥 (.pem) 内容
504 </Step>
505
506 <Step title="创建工作流文件">
507 创建与您的云提供商集成的 GitHub Actions 工作流文件。下面的示例显示了 Amazon Bedrock 和 Google Cloud 的 Agent Platform 的完整配置:
508
509 <AccordionGroup>
510 <Accordion title="Amazon Bedrock 工作流">
511 **前置条件:**
512
513 * 启用了 Amazon Bedrock 访问权限,具有 Claude 模型权限
514 * GitHub 在 AWS 中配置为 OIDC 身份提供商
515 * 具有 Amazon Bedrock 权限的 IAM 角色,信任 GitHub Actions
516
517 **所需的 GitHub 密钥:**
518 354
519 | 密钥名称 | 描述 |355* **Amazon Bedrock**:`use_bedrock: "true"`
520 | -------------------- | ------------------------------ |356* **Google Cloud 的 Agent Platform**:`use_vertex: "true"`
521 | `AWS_ROLE_TO_ASSUME` | Amazon Bedrock 访问的 IAM 角色的 ARN |357* **Microsoft Foundry**:`use_foundry: "true"`
522 | `APP_ID` | 您的 GitHub 应用 ID(来自应用设置) |
523 | `APP_PRIVATE_KEY` | 您为 GitHub 应用生成的私钥 |
524 358
525 ```yaml theme={null}359对于所有三个提供商,您通过 OIDC 身份联合进行身份验证,而不是 Claude API 密钥,因此您不在仓库中存储静态云凭证。
526 name: Claude PR Action
527
528 permissions:
529 contents: write
530 pull-requests: write
531 issues: write
532 id-token: write
533
534 on:
535 issue_comment:
536 types: [created]
537 pull_request_review_comment:
538 types: [created]
539 issues:
540 types: [opened, assigned]
541
542 jobs:
543 claude-pr:
544 if: |
545 (github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) ||
546 (github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) ||
547 (github.event_name == 'issues' && contains(github.event.issue.body, '@claude'))
548 runs-on: ubuntu-latest
549 env:
550 AWS_REGION: us-west-2
551 steps:
552 - name: Checkout repository
553 uses: actions/checkout@v4
554
555 - name: Generate GitHub App token
556 id: app-token
557 uses: actions/create-github-app-token@v2
558 with:
559 app-id: ${{ secrets.APP_ID }}
560 private-key: ${{ secrets.APP_PRIVATE_KEY }}
561
562 - name: Configure AWS Credentials (OIDC)
563 uses: aws-actions/configure-aws-credentials@v4
564 with:
565 role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }}
566 aws-region: us-west-2
567
568 - uses: anthropics/claude-code-action@v1
569 with:
570 github_token: ${{ steps.app-token.outputs.token }}
571 use_bedrock: "true"
572 claude_args: '--model us.anthropic.claude-sonnet-4-6 --max-turns 10'
573 ```
574
575 <Tip>
576 Amazon Bedrock 的模型 ID 格式包括区域前缀(例如,`us.anthropic.claude-sonnet-4-6`)。
577 </Tip>
578 </Accordion>
579
580 <Accordion title="Google Cloud 的 Agent Platform 工作流">
581 **前置条件:**
582
583 * 在您的 GCP 项目中启用了 Google Cloud 的 Agent Platform API
584 * 为 GitHub 配置了工作负载身份联合
585 * 具有 Google Cloud 的 Agent Platform 权限的服务账户
586
587 **所需的 GitHub 密钥:**
588
589 | 密钥名称 | 描述 |
590 | -------------------------------- | ---------------------------------------------- |
591 | `GCP_WORKLOAD_IDENTITY_PROVIDER` | 工作负载身份提供商资源名称 |
592 | `GCP_SERVICE_ACCOUNT` | 具有 Google Cloud 的 Agent Platform 访问权限的服务账户电子邮件 |
593 | `APP_ID` | 您的 GitHub 应用 ID(来自应用设置) |
594 | `APP_PRIVATE_KEY` | 您为 GitHub 应用生成的私钥 |
595
596 ```yaml theme={null}
597 name: Claude PR Action
598
599 permissions:
600 contents: write
601 pull-requests: write
602 issues: write
603 id-token: write
604
605 on:
606 issue_comment:
607 types: [created]
608 pull_request_review_comment:
609 types: [created]
610 issues:
611 types: [opened, assigned]
612
613 jobs:
614 claude-pr:
615 if: |
616 (github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) ||
617 (github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) ||
618 (github.event_name == 'issues' && contains(github.event.issue.body, '@claude'))
619 runs-on: ubuntu-latest
620 steps:
621 - name: Checkout repository
622 uses: actions/checkout@v4
623
624 - name: Generate GitHub App token
625 id: app-token
626 uses: actions/create-github-app-token@v2
627 with:
628 app-id: ${{ secrets.APP_ID }}
629 private-key: ${{ secrets.APP_PRIVATE_KEY }}
630
631 - name: Authenticate to Google Cloud
632 id: auth
633 uses: google-github-actions/auth@v2
634 with:
635 workload_identity_provider: ${{ secrets.GCP_WORKLOAD_IDENTITY_PROVIDER }}
636 service_account: ${{ secrets.GCP_SERVICE_ACCOUNT }}
637
638 - uses: anthropics/claude-code-action@v1
639 with:
640 github_token: ${{ steps.app-token.outputs.token }}
641 trigger_phrase: "@claude"
642 use_vertex: "true"
643 claude_args: '--model claude-sonnet-4-5@20250929 --max-turns 10'
644 env:
645 ANTHROPIC_VERTEX_PROJECT_ID: ${{ steps.auth.outputs.project_id }}
646 CLOUD_ML_REGION: us-east5
647 VERTEX_REGION_CLAUDE_4_5_SONNET: us-east5
648 ```
649
650 <Tip>
651 项目 ID 从 Google Cloud 身份验证步骤自动检索,因此您无需对其进行硬编码。
652 </Tip>
653 </Accordion>
654 </AccordionGroup>
655 </Step>
656</Steps>
657 360
658<h2 id="troubleshooting">361<h2 id="troubleshooting">
659 故障排除362 故障排除
663 Claude 不响应 @claude 命令366 Claude 不响应 @claude 命令
664</h3>367</h3>
665 368
666验证 GitHub 应用是否正确安装,检查工作流是否已启用,确保 API 密钥在仓库密钥中设置,并确认评论包含 `@claude`(不是 `/claude`)。369* 验证 GitHub App 是否安装在仓库上
370* 检查工作流是否为仓库启用
371* 确保您的 API 密钥或 OAuth 令牌在仓库密钥中设置
372* 确认评论包含 `@claude` 作为完整单词,而不是 `/claude` 或 `@claude-bot`
373* 确认评论用户对仓库具有写入访问权限。有关例外,请参阅[谁可以触发运行](#who-can-trigger-runs)
667 374
668<h3 id="ci-not-running-on-claude’s-commits">375<h3 id="ci-not-running-on-claude’s-commits">
669 CI 不在 Claude 的提交上运行376 CI 不在 Claude 的提交上运行
670</h3>377</h3>
671 378
672确保您使用的是 GitHub 应用或自定义应用(不是 Actions 用户),检查工作流触发器是否包含必要的事件,并验证应用权限是否包括 CI 触发器。379* GitHub 不会在使用默认 `GITHUB_TOKEN` 进行的提交上触发工作流。如果您将 `github_token: ${{ secrets.GITHUB_TOKEN }}` 传递给 Claude Code GitHub Action,请删除它以便它作为 Claude GitHub App 进行身份验证,或改为传递自定义应用令牌
380* 检查您的 CI 工作流的触发器是否包括 Claude 的推送产生的事件,例如 `push` 或 `pull_request`
673 381
674<h3 id="authentication-errors">382<h3 id="authentication-errors">
675 身份验证错误383 身份验证错误
676</h3>384</h3>
677 385
678确认 API 密钥有效且具有足够的权限。对于 Amazon Bedrock 或 Google Cloud 的 Agent Platform,检查凭证配置并确保密钥在工作流中正确命名。386* 通过在本地使用 `claude` 测试 API 密钥或 OAuth 令牌来确认它有效,然后再调试工作流
387* 对于 Bedrock、Agent Platform 和 Foundry,请参阅云提供商页面的[故障排除部分](/docs/zh-CN/github-actions-cloud-providers#troubleshooting)
388
389有关更多解决方案,请参阅 Claude Code GitHub Action 的 [FAQ](https://github.com/anthropics/claude-code-action/blob/main/docs/faq.md)。
679 390
680<h2 id="advanced-configuration">391<h2 id="advanced-configuration">
681 高级配置392 高级配置
685 Action 参数396 Action 参数
686</h3>397</h3>
687 398
688Claude Code Action v1 使用简化的配置:399这些是最常用的输入。每个都映射到 `anthropics/claude-code-action` 步骤中的 `with:` 键。
689 400
690| 参数 | 描述 | 必需 |401| 参数 | 描述 | 必需 |
691| --------------------- | ----------------------------------------------- | ----- |402| ------------------------- | ---------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- |
692| `prompt` | Claude 的说明(纯文本或 [skill](/zh-CN/skills) 名称) | 否\* |403| `prompt` | Claude 的说明,作为纯文本或 [skill](/docs/zh-CN/skills) 调用。省略时,Claude 改为响应[触发短语](#interactive-and-automation-modes) | 否 |
693| `claude_args` | 传递给 Claude Code 的 CLI 参数 | 否 |404| `claude_args` | 传递给 Claude Code 的 CLI 参数 | 否 |
405| `anthropic_api_key` | Claude API 密钥 | 对于 Claude API,除非您使用 `claude_code_oauth_token` 或[工作负载身份联合](#set-up-for-an-organization)。不用于 Bedrock、Agent Platform 或 Foundry |
406| `claude_code_oauth_token` | 用于使用 Claude 订阅进行身份验证的 OAuth 令牌,使用 `claude setup-token` 生成 | 否 |
407| `github_token` | 用于 GitHub 操作的令牌。省略时,Claude Code GitHub Action 作为 Claude GitHub App 进行身份验证 | 否 |
694| `plugin_marketplaces` | 插件市场 Git URL 的换行符分隔列表 | 否 |408| `plugin_marketplaces` | 插件市场 Git URL 的换行符分隔列表 | 否 |
695| `plugins` | 执行前要安装的插件名称的换行符分隔列表 | 否 |409| `plugins` | 执行前要安装的插件名称的换行符分隔列表 | 否 |
696| `anthropic_api_key` | Claude API 密钥 | 是\*\* |410| `settings` | Claude Code 设置,作为 JSON 字符串或设置 JSON 文件的路径 | 否 |
697| `github_token` | 用于 API 访问的 GitHub 令牌 | 否 |411| `trigger_phrase` | Claude 响应的触发短语。默认:`@claude` | 否 |
698| `trigger_phrase` | 自定义触发短语(默认:"@claude") | 否 |
699| `use_bedrock` | 使用 Amazon Bedrock 而不是 Claude API | 否 |412| `use_bedrock` | 使用 Amazon Bedrock 而不是 Claude API | 否 |
700| `use_vertex` | 使用 Google Cloud 的 Agent Platform 而不是 Claude API | 否 |413| `use_vertex` | 使用 Google Cloud 的 Agent Platform 而不是 Claude API | 否 |
414| `use_foundry` | 使用 Microsoft Foundry 而不是 Claude API | 否 |
701 415
702\*提示是可选的 - 当对 issue/PR 评论省略时,Claude 响应触发短语\416有关完整的输入列表,请参阅 Claude Code GitHub Action 的[配置参考](https://github.com/anthropics/claude-code-action/blob/main/docs/usage.md#inputs)。
703\*\*对于直接 Claude API 是必需的,对于 Amazon Bedrock 或 Google Cloud 的 Agent Platform 不是必需的
704 417
705<h4 id="pass-cli-arguments">418<h3 id="pass-cli-arguments">
706 传递 CLI 参数419 传递 CLI 参数
707</h4>420</h3>
708 421
709`claude_args` 参数接受任何 Claude Code CLI 参数:422`claude_args` 参数接受任何 [Claude Code CLI 参数](/docs/zh-CN/cli-reference):
710 423
711```yaml theme={null}424```yaml theme={null}
712claude_args: "--max-turns 5 --model claude-sonnet-5 --mcp-config /path/to/config.json"425claude_args: "--max-turns 5 --model claude-sonnet-5 --mcp-config /path/to/config.json"
714 427
715常见参数:428常见参数:
716 429
717* `--max-turns`:最大对话轮数(默认:10)430* `--max-turns`:限制对话轮数
718* `--model`:要使用的模型(例如,`claude-sonnet-5`)431* `--model`:要使用的模型,例如 `claude-sonnet-5`。没有此参数,Claude Code GitHub Action 使用 Claude Code [默认模型](/docs/zh-CN/model-config)
719* `--mcp-config`:MCP 配置的路径432* `--mcp-config`:[MCP 配置](/docs/zh-CN/mcp)的路径
720* `--allowedTools`:允许的工具的逗号分隔列表。`--allowed-tools` 别名也可以使用。433* `--allowedTools`:允许的工具的逗号分隔列表。`--allowed-tools` 别名也可以使用
721* `--debug`:启用调试输出434* `--debug`:启用调试输出
722 435
723<h3 id="alternative-integration-methods">436<h2 id="upgrade-from-beta">
724 替代集成方法437 从 beta 升级
725</h3>438</h2>
726
727虽然 `/install-github-app` 命令是推荐的方法,但您也可以:
728
729* **自定义 GitHub 应用**:对于需要品牌用户名或自定义身份验证流的组织。创建您自己的 GitHub 应用,具有所需的权限(contents、issues、pull requests),并使用 actions/create-github-app-token action 在您的工作流中生成令牌。
730* **手动 GitHub Actions**:直接工作流配置以获得最大灵活性
731* **MCP 配置**:Model Context Protocol 服务器的动态加载
732 439
733有关身份验证、安全和高级配置的详细指南,请参阅 [Claude Code Action 文档](https://github.com/anthropics/claude-code-action/blob/main/docs)。440如果您的工作流仍然引用 `anthropics/claude-code-action@beta`,请将它们更新为 v1:
734 441
735<h3 id="customizing-claude’s-behavior">4421. 在 `uses` 行中将 `@beta` 更改为 `@v1`
736 自定义 Claude 的行为4432. 删除 `mode` 输入,因为 Claude Code GitHub Action 现在[自动检测模式](#interactive-and-automation-modes)
737</h3>4443. 将 `direct_prompt` 替换为 `prompt`
4454. 将 CLI 选项(如 `max_turns` 和 `model`)移到 `claude_args` 中。`custom_instructions` 没有同名标志,变成 `--append-system-prompt`
738 446
739您可以通过两种方式配置 Claude 的行为:447有关完整的输入映射和前后示例,请参阅[迁移指南](https://github.com/anthropics/claude-code-action/blob/main/docs/migration-guide.md)。
740 448
7411. **CLAUDE.md**:在您的仓库根目录的 `CLAUDE.md` 文件中定义编码标准、审查标准和项目特定规则。Claude 在创建 PR 和响应请求时将遵循这些指南。查看我们的 [Memory 文档](/zh-CN/memory)了解更多详情。449<h2 id="what’s-next">
7422. **自定义提示**:在工作流文件中使用 `prompt` 参数提供工作流特定的说明。这允许您为不同的工作流或任务自定义 Claude 的行为。450 接下来
451</h2>
743 452
744Claude 在创建 PR 和响应请求时将遵循这些指南。453* [将 Claude Code GitHub Actions 与云提供商一起使用](/docs/zh-CN/github-actions-cloud-providers):通过 Amazon Bedrock、Google Cloud 的 Agent Platform 或 Microsoft Foundry 路由推理
454* [配置参考](https://github.com/anthropics/claude-code-action/blob/main/docs/usage.md#inputs):action 输入的完整列表
455* [Examples 目录](https://github.com/anthropics/claude-code-action/tree/main/examples):更多场景的现成工作流
456* [Code Review](/docs/zh-CN/code-review):无需维护工作流文件的自动拉取请求审查