ci-loop 用于把单个 PR 的红色检查修复为绿色,原则是修代码而非改检查。
用途:读取某个开放 PR 的失败 CI,本地复现后在工单范围内最小修复,提交推送并观察新运行,直到全部检查通过或触发停止条件。
输入:PR 编号或 URL;工单范围来自关联 issue 的验收标准或 PR 正文;必须在独立 worktree 中操作(如 <project-repo>/.worktrees/pr-<n>),并在首个命令前报告 checkout 记录;尝试上限默认每个 PR 3 次,用户可降低不可移除。
主要规则:一次审批覆盖整个循环,首次推送前展示计划;绝不跳过、删除、标记 xfail、放宽断言、提高超时或改工作流来让检查通过;基础分支同样失败的、需要工单外文件的失败要停止;基础设施与抖动失败只提供一个 gh run rerun <run-id> --failed;发现振荡或无进展立即停止;只允许功能分支,禁止强推、rebase、amend;每次尝试前 git fetch 确认远端 head 未被他人移动;修复前必须先在本地复现失败;提交不得带任何 AI/工具署名。
工作流:用 gh pr checks <pr> --required 与 gh run view <run-id> --log-failed 读取失败基线;将每个失败归类为 Code、Base、Flaky/infra 或 Gate is wrong;展示计划等待审批;逐次尝试修复、提交 fix(ci): <check> — <cause>、推送并用 gh pr checks <pr> --watch --fail-fast 观察;达到绿色、上限或任一停止条件即结束,并输出尝试摘要与证据。
适用场景:开放 PR 的 CI 失败需要自动化修复,且改动不越出工单范围。
限制:仅限功能分支;不处理 fork 无法推送的情况;失败原因需由该 PR 的 diff 引起;作者信息与代码均不得被改动;仓库无必需检查时需回退为全部检查模式并说明。平台、收费等信息暂未提供。