loop-on-ci · git:20261015.b377f6b · 2026-10-15 · sha256 429a0e8f842bb734

loop-on-ci git:20261015.b377f6bA

Immutable. This exact content never changes and is served at /api/v1/blob/429a0e8f842bb734.

---
name: loop-on-ci
description: 在已有 GitHub PR 需要持续观察 Actions 检查、读取失败作业日志、修复问题、重新运行并跟到全部检查变绿时使用。适用于围绕同一个 PR 反复验证,而不是一次性状态查询。
compatibility: 本地 Claude/Codex 配置;需要客户端支持手动调用限制、git 和网络访问。Actions 查询优先使用 GitHub 连接器,也可按能力边界使用现有已授权身份的 gh CLI/API 只读回退。
when_to_use: 已经有 GitHub PR,需要围绕同一个来源分支版本反复读取 Actions 状态和日志、修复失败项、推送、重跑并验证,直到全绿或明确发现阻塞。
disable-model-invocation: true
---

# 持续跟进 GitHub Actions

## 目标

围绕当前 PR 的 GitHub Actions 检查持续修复问题,直到全部通过或确认阻塞点。以 GitHub 当前 PR、工作流、作业、步骤和日志为证据,优先通过连接器获取。

## 核心原则

- 每轮先确认 PR 来源分支提交 SHA,避免分析旧运行记录或旧日志。
- 按 `PR -> head SHA -> workflow runs -> jobs -> steps/logs` 获取证据;连接器能力不足时使用下述只读回退。
- 一次只处理一个明确失败原因;每次推送后重新读取 PR 来源分支版本与新运行记录。
- 不用 `gh` CLI 复制连接器已提供的 Actions 能力。
- `codecov/project`、`codecov/patch`、flag 或 component 失败转给 `codecov-coverage`。

## 基本流程

1. 确认目标仓库、PR、当前分支、工作区和 PR 来源分支提交 SHA。
2. 优先用 GitHub 连接器获取该提交对应的工作流运行记录;未提供所需查询能力时按下述边界回退。
3. 对失败运行记录获取作业,再读取失败作业的步骤和完整日志。
4. 用日志与代码/配置建立根因证据链;证据不足时报告缺失项,不猜测偶发不稳定。
5. 修复当前 PR 引入的问题,运行仓库允许且与改动对应的验证。
6. 提交并推送后确认 PR 来源分支版本已更新,再等待并读取新运行记录;不要复用旧运行记录的结论。
7. 需要重跑时优先使用连接器重跑单个作业;只有多个失败作业共享同一原因时才重跑全部失败作业。重跑规则见下文“失败归属与重跑”。
8. 重复直到全部 GitHub Actions 检查通过,或遇到权限、外部依赖、经可用的授权只读查询仍无法获取必要日志、来源分支版本并发更新等明确阻塞。

## 失败归属与重跑

- 先排除不属于本 PR 的失败:错误指向本 PR 未触及的服务且重跑一次后同样失败,或同一检查在基准分支上也失败。确认后在汇报中说明失败的检查、为什么不属于本 PR,以及是否已有修复;发 PR 评论须在已有授权范围内。
- 已有能让本 PR 变绿的修复(其他 PR、导致失败的提交的 revert、自己开的修复 PR)时,把同样的修改带进本 PR 并推送;基准分支合入后它会自然变成空改动。
- 其余失败都按本 PR 的问题定位根因。“偶发”不是根因:只有为确认上述归属、作业在执行测试前就失败(检出、安装、runner 丢失),或同一提交上曾经通过时才重跑,总共最多一次;再次失败视为真实失败。
- 不跳过、禁用或隔离测试来变绿;不用空提交或关闭再打开 PR 来重新触发 CI。
- 查询运行状态使用结构化字段(如 `gh run view <id> --json status,conclusion`)。不要把 `gh run watch`、测试或构建输出通过 `tail`、`head` 管道读取,管道会吞掉真实退出码,把失败或仍在运行的作业显示成成功。

## 能力与权限边界

- 先检查当前连接器实际支持的查询能力。连接器不可用,或因分页、触发类型、未实现的接口而无法取得目标 run/job/log 时,可使用当前任务已授权的 `gh` CLI/API 补充只读查询,并核对目标仓库与 PR head。不得把工具能力缺口当作 CI 或日志不存在。
- 只使用当前任务已授权的身份和权限范围;收到明确权限拒绝时,说明缺失权限,不通过更换凭据或身份绕过。
- 只读回退不授权重跑、提交、推送或其他写操作;写操作仍须处于当前任务已有授权范围内。
- 非 GitHub Actions 检查不伪装成 Actions 作业。Codecov 使用 `codecov-coverage`;其他外部 CI 只报告名称和链接,除非用户另行指定处理方式。

## 何时不要使用

- 只是读取一次 PR 或工作流状态,不需要持续跟进。
- 当前还没有 PR。
- 只是 Codecov 覆盖率查询或门槛失败,使用 `codecov-coverage`。
- 本地测试或普通代码异常,使用 `systematic-debugging`。

## 输出要求

- PR、当前来源分支提交 SHA 和本轮工作流运行记录。
- 每个失败作业的关键日志证据与代码/配置路径。
- 已做的修复、验证、提交和推送和重新运行状态。
- 当前是否全部通过;未通过时给出准确阻塞点。