首页 › LLM大语言模型 › Codex专栏 › Codex 实战案例 › Codex + GitHub :CI 失败自动修复实测

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)所有​