Codex + GitHub :CI 失败自动修复实测
传统方式是什么样的
通常的流程是这样的:收到邮件或消息通知 → 打开 CI 日志,逐行看报错 → 切换到本地,找到出问题的代码 → 修复、提交、再推一次 → 等 CI 重新跑,确认通过 → 开 PR,等人审查合并。
引入 Codex 之后,这条链路发生了变化:CI 一失败,工作流自动触发 Codex,它自己读代码、定位问题、修好、开 PR。你需要做的,只是最后审一眼、点 Merge。

错误发生在哪里
项目的核心逻辑是计算总价,满 100 减 20。
折扣函数里埋了一个 bug:减号被写成了加号。
代码块
JavaScript
// 错误的代码
if (total >= 100){
return total + 20; // 应该是减号
}

54%

46%
提交后 CI 报了什么错
配置文件长什么样
让 Codex 自动介入的关键,是在仓库里放一个 GitHub Actions 工作流文件。完整配置如下:
代码块
YAML
name: Codex Auto-Fix on Failure
几个值得注意的地方:
触发与过滤:监听名为 "CI" 的工作流,等它跑完再判断结果。conclusion == 'failure' 确保只在失败时才真正执行,成功的话这个 job 直接跳过,不消耗资源。
记录失败现场:把失败那次 run 的分支、提交 SHA、日志链接都存进环境变量。这些信息最终会写进 PR 描述,方便事后追溯是哪次 CI 触发了这个修复。
检出失败的代码:ref: ${{ env.FAILED_HEAD_SHA }} 拉取失败那次提交的代码,确保 Codex 改的是真正出问题的版本。
Codex 修复:使用官方的 openai/codex-action@main,prompt 用中文写清楚要求——跑测试、找最小改动范围、修完停手,不碰无关代码。sandbox: workspace-write 允许它写文件。
先验证再开 PR:Codex 改完后先跑一次 npm test,确认测试通过了才执行 create-pull-request。if: success() 保证改错了的话不会开出一个还是红的 PR。
告诉 Codex 去做什么
CI 失败后,配置好的 Codex 工作流自动触发。它做了三件事:读取仓库代码、运行测试套件、定位问题并修改。
修复过程中遇到了什么问题
实测踩了两个坑,记录在这里。
第一个坑:PR 权限没开
Codex 改好了代码,但开 PR 那步报错:
代码块
Plain Text
Error: GitHub Actions is not permitted to create or approve pull requests.
GitHub 仓库默认不允许 Actions 创建 PR,需要在 Settings 里手动开启。
修复成功后的结果
工作流跑完变绿,Pull Requests 页面出现一条自动生成的 PR。
小结
这次实测验证了 Codex 通过 GitHub Actions 自动修复 CI 的能力是真实可用的——能准确定位问题、只改必要的代码、修完自动开 PR。
有两点值得提前了解:一是 GitHub 仓库的 PR 权限需要手动开启,否则最后一步会失败;二是 API 按用量计费,调试阶段的失败也会产生费用,建议在 OpenAI 后台设置一个月度消费上限。
著作权归CodexGuide(codexguide.ai)所有