返回博客列表

Claude Code Action:把 Claude 装进 GitHub,PR 和 Issue 里的全自动工程师

2026-09-27T14:30:00+08:00
Claude CodeGitHub ActionsClaude代码审查CI/CDAnthropic

Claude Code Action:把 Claude 装进 GitHub,PR 和 Issue 里的全自动工程师

在 PR 里 @ 一下 claude,它读完上下文、给出审查意见、顺手把 bug 修了。

你是否想过:GitHub 的 PR 和 Issue 里如果能直接喊 Claude 来干活会怎样——问它"这个函数在干嘛"、让它"审查这个 PR"、贴张 bug 截图让它修、甚至让它每天定时巡检仓库?

Claude Code Action(anthropics/claude-code-action,9095 stars,MIT)就是 Anthropic 官方给出的答案:一个通用 Claude Code GitHub Action,能回答问题、实现代码变更、审查 PR。它跑在你自己的 GitHub runner 上,已在 v1.0 稳定化——配置大幅简化,还支持 Workload Identity Federation 免静态密钥。

这篇文章讲清楚三件事:它是什么、怎么用起来、以及怎么按你的需求配置。

本文提纲

  1. 它是什么:GitHub 里的一等公民工程师
  2. 如何使用:五分钟上手
  3. 怎么配置:触发方式、prompt 与 claude_args
  4. 认证:API key、OAuth、OIDC 免密钥
  5. 进阶玩法:结构化输出、MCP、插件
  6. 安全边界:这些配置要小心

它是什么:GitHub 里的一等公民工程师

Claude Code Action 是 Anthropic 官方维护的 GitHub Action,把 Claude Code 完整地装进 GitHub 的工作流。它的工作模式是"智能模式检测"——根据触发上下文自动选择执行方式,无需配置 mode:

  • 交互模式:有人在 PR/Issue 里 @claude,它读取完整上下文(代码、diff、全部评论)后响应
  • 自动化模式:workflow 里给了显式 prompt,它按指令自主执行(如"审查这个 PR 的安全问题")
  • 分配/打标模式:issue 被分配给特定人或打上特定标签时触发

核心能力:

  • 交互式代码助手:回答代码、架构、编程问题
  • 代码审查:分析 PR 变更并建议改进
  • 代码实现:实现简单修复、重构,甚至新功能
  • 进度跟踪:任务执行时用 checkbox 动态更新进度
  • 结构化输出:验证过的 JSON 结果自动成为 GitHub Action outputs
  • 跑在你的基础设施:action 在你自己的 GitHub runner 执行,API 调用发到你选的提供商

如何使用:五分钟上手

最快路径:一条命令

如果你是直接 Anthropic API 用户且是仓库管理员,最快的方式是用 Claude Code 终端:

claude
# 然后在 Claude Code 里运行:
/install-github-app

这条命令会引导你完成 GitHub App 安装和 secrets 配置,全程不用手写。

手动安装三步

  1. 安装 Claude GitHub App 到你的仓库:https://github.com/apps/claude
  2. 添加认证到仓库 secrets(二选一):
    • ANTHROPIC_API_KEY:API key 认证
    • CLAUDE_CODE_OAUTH_TOKEN:OAuth token(Pro 和 Max 订阅用户可在本地跑 claude setup-token 生成——意味着可以用订阅额度而不是按量 API 计费)
  3. 复制 workflow 文件:把官方 examples/claude.yml 放进你仓库的 .github/workflows/

装完之后,去任意 PR 或 Issue 里试试:

@claude What does this function do and how could we improve it?
@claude Can you add error handling to this function?
@claude Please review this PR and suggest improvements
@claude Here's a screenshot of a bug I'm seeing [截图]. Can you fix it?

最后一个很实用:Claude 能看图——贴 UI bug 截图让它修视觉问题,这在移动端和前端场景里是杀手级用法。

触发事件

workflow 监听这些 GitHub 事件:

on:
  issue_comment:
    types: [created]                    # PR/Issue 评论
  pull_request_review_comment:
    types: [created]                    # PR review 评论
  issues:
    types: [opened, assigned, labeled]  # issue 新建/分配/打标
  pull_request_review:
    types: [submitted]                  # PR review 提交

怎么配置:触发方式、prompt 与 claude_args

v1.0 的配置哲学是两根杠杆:prompt(告诉 Claude 做什么)+ claude_args(直传 Claude Code CLI 参数,控制怎么做)。v0.x 的一堆独立输入(mode、direct_prompt、custom_instructions、max_turns、model、allowed_tools、mcp_config……)全部废弃,统一收编到这两根杠杆下。

最小可用配置(交互模式)

jobs:
  claude-response:
    runs-on: ubuntu-latest
    steps:
      - uses: anthropics/claude-code-action@v1
        with:
          anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}

零额外配置——@claude 即插即用。

自动化模式配置

给 prompt 一段指令,Claude 就自主执行而不是等 @:

- uses: anthropics/claude-code-action@v1
  with:
    prompt: |
      REPO: ${{ github.repository }}
      PR NUMBER: ${{ github.event.pull_request.number }}

      Update the API documentation to reflect changes in this PR
    anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
    claude_args: |
      --model claude-4-0-sonnet-20250805
      --allowedTools Edit,Read,Write

常用输入速查

输入 作用 默认
trigger_phrase 自定义触发词 @claude
assignee_trigger issue 分配给谁时触发 -
label_trigger issue 打上什么标签时触发 -
claude_args 直传 CLI 参数(--max-turns/--model/--allowedTools 等) ""
base_branch Claude 新建分支的基底分支 -
branch_prefix Claude 分支前缀 claude/
use_sticky_comment PR 评论只占一条(持续更新而非刷屏) false
track_progress 强制跟踪评论模式(checkbox 进度) false
plugin_marketplaces / plugins 安装 Claude Code 插件市场/插件 ""

结构化输出:让 Claude 的结果驱动后续步骤

v1.0 最有价值的新能力之一。用 --json-schema 定义 schema,Claude 的结果经校验后自动成为 Action output:

- name: Detect flaky tests
  id: analyze
  uses: anthropics/claude-code-action@v1
  with:
    anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
    prompt: |
      Check the CI logs and determine if this is a flaky test.
      Return: is_flaky (boolean), confidence (0-1), summary (string)
    claude_args: |
      --json-schema '{"type":"object","properties":{"is_flaky":{"type":"boolean"},"confidence":{"type":"number"},"summary":{"type":"string"}},"required":["is_flaky"]}'

- name: Retry if flaky
  if: fromJSON(steps.analyze.outputs.structured_output).is_flaky == true
  run: gh workflow run CI

这个模式打开了"Claude 分析 → 代码决策"的自动化空间:flaky test 检测自动重跑 CI、按置信度分流 issue、自动打标分类……官方 Solutions Guide 提供了九大现成场景(自动 PR 审查、路径特定审查、外部贡献者特殊处理、定时仓库巡检、issue triage、文档同步、OWASP 安全审查等)。

认证:API key、OAuth、OIDC 免密钥

三种认证路径,按你的环境选:

1. API key(最简单):ANTHROPIC_API_KEY 进 secrets。

2. OAuth token(订阅用户友好):claude setup-token 生成 CLAUDE_CODE_OAUTH_TOKEN,Pro/Max 订阅额度直接用。

3. Workload Identity Federation(WIF)(企业推荐):不存任何静态密钥——Action 用 workflow 的 GitHub OIDC token 换取短期 Anthropic 访问令牌。一次性在 Claude Console 注册 issuer、创建 service account 和 federation rule,然后 workflow 里只放标识符(不是凭据,可以直接明文写):

permissions:
  id-token: write  # 必需:获取 GitHub OIDC token
steps:
  - uses: anthropics/claude-code-action@v1
    with:
      anthropic_federation_rule_id: fdrl_xxxxxxxxxxxx
      anthropic_organization_id: 00000000-...
      anthropic_service_account_id: svac_xxxxxxxxxxxx

密钥永不落地、无需轮换、规则可精确匹配到 repo:your-org/your-repo: 前缀——这是企业级的安全姿势。

云厂商:AWS Bedrock、Google Vertex AI、Microsoft Foundry 均支持(use_bedrock / use_vertex 输入,OIDC 认证),适合数据驻留有要求的组织。

进阶配置:MCP、插件与自定义 App

加自定义 MCP server:通过 claude_args 的 --mcp-config,与内置 GitHub MCP server 合并:

- name: Create MCP Config
  run: |
    cat > /tmp/mcp-config.json << 'EOF'
    {
      "mcpServers": {
        "custom-api-server": {
          "command": "npx",
          "args": ["-y", "@example/api-server"],
          "env": { "API_KEY": "${{ secrets.CUSTOM_API_KEY }}" }
        }
      }
    }
    EOF
- uses: anthropics/claude-code-action@v1
  with:
    claude_args: |
      --mcp-config /tmp/mcp-config.json

装插件:plugin_marketplaces(市场 Git URL)+ plugins(插件名),在 Claude Code 执行前安装。

自定义 GitHub App:不想装官方 App(权限更严、组织政策限制、用云厂商)时,用官方提供的 manifest 一键创建自己的 App,配合 github_token 输入使用。

安全边界:这些配置要小心

几个安全要点,配置前值得想清楚:

  • allowed_bots 默认为空:机器人(dependabot 等)默认不能触发。设 * 时要特别小心——公有仓库上外部 App 可能借此调用你的 action(烧你的 API 额度)。
  • allowed_non_write_users 是危险开关:允许无写权限用户触发,只配 github_token 时可用,README 明确标了 ⚠️。
  • 提交签名两选一:use_commit_signing(GitHub API 签名,简单但不支持 rebase 等复杂 git 操作)或 ssh_signing_key(SSH 签名,完整 git 能力,需配 bot_id/bot_name)。
  • runner 在你自己这边:代码不经过第三方服务器(Anthropic API 调用除外),这比"把仓库授权给 SaaS"的模式干净得多。

参考链接

你会让 Claude 替你审 PR 还是跑定时巡检?评论区聊聊你的用法,觉得有用点个赞让更多开发者看到。


作者: itech001 来源: 公众号:AI人工智能时代(the-ai-era) 网站: https://www.theaiera.top/ 关注每日最新AI新闻和技术博客,主页有更多的文章的AI 技术参考:https://www.theaiera.top

本文首发于 AI人工智能时代,转载请注明出处。

分享给朋友