在 GitHub Actions 中使用 Cursor CLI 自动修复 CI 失败。这个工作流会分析失败原因,进行针对性修复,并创建修复分支和快速创建 PR 的链接。 这个工作流会监控指定名称的工作流。更新 workflows 列表以匹配你实际的 CI 工作流名称。
name: Auto Fix CI Failures

on:
  workflow_run:
    workflows: [Test]
    types: [completed]

permissions:
  contents: write
  pull-requests: write
  actions: read

jobs:
  attempt-fix:
    if: >-
      ${{ github.event.workflow_run.conclusion == 'failure' && github.event.workflow_run.name != 'Auto Fix CI Failures' }}
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Install Cursor CLI
        run: |
          curl https://cursor.com/install -fsS | bash
          echo "$HOME/.cursor/bin" >> $GITHUB_PATH

      - name: Configure git identity
        run: |
          git config user.name "Cursor Agent"
          git config user.email "cursoragent@cursor.com"

      - name: Fix CI failure
        env:
          CURSOR_API_KEY: ${{ secrets.CURSOR_API_KEY }}
          MODEL: gpt-5
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          BRANCH_PREFIX: ci-fix
        run: |
          cursor-agent -p "你正在 GitHub Actions 运行器中操作。

          GitHub CLI 可通过 `gh` 使用,并通过 `GH_TOKEN` 进行身份验证。Git 可用。你对代码库内容有写入权限,可以对 pull request 进行评论,但不能直接创建或编辑 PR。

          # 上下文:
          - 代码库:${{ github.repository }}
          - 所有者:${{ github.repository_owner }}
          - 工作流运行 ID:${{ github.event.workflow_run.id }}
          - 工作流运行 URL:${{ github.event.workflow_run.html_url }}
          - 修复分支前缀:${{ env.BRANCH_PREFIX }}

          # 目标:
          - 实现由失败 PR 驱动的端到端 CI 修复流程,创建一个独立的持久修复分支,并提议一个快速创建 PR 回到原始 PR 的分支。

          # 要求:
          1) 识别与失败工作流运行关联的 PR,并确定其基础分支和头分支。让 HEAD_REF 成为 PR 的头分支(贡献者/源分支)。
          2) 使用上下文中的修复分支前缀为此 PR 头维护一个持久的修复分支。如果不存在则创建,否则更新,并将更改推送到源。
          3) 通过进行与代码库风格一致的最小化、针对性编辑来尝试解决 CI 失败。保持更改范围有限且安全。
          4) 你没有创建 PR 的权限。相反,发布或更新一个自然语言 PR 评论(1-2 句话),简要解释 CI 修复并包含一个内联比较链接以快速创建 PR。

          # 输入和约定:
          - 根据需要使用 `gh api`、`gh run view`、`gh pr view`、`gh pr diff`、`gh pr list`、`gh run download` 和 git 命令来发现失败的 PR 和分支。
          - 避免重复评论;如果存在之前的机器人评论,请更新它而不是发布新评论。
          - 如果无法进行可操作的修复,不要进行任何更改且不发布评论。

          # 发生更新时的交付物:
          - 推送提交到此 PR 头的持久修复分支。
          - 在原始 PR 上发布一个自然语言 PR 评论,包含上述内联比较链接。
          " --force --model "$MODEL" --output-format=text