核心功能
Rails CI Fixer 是一款专为 Rails 项目设计的自动化 CI 修复技能,能够在无需人工干预的情况下诊断并修复持续集成失败问题。该技能采用分层升级策略(tiered escalation loop),通过最多 4 轮自动化尝试逐步解决各类 CI 故障。
工作流程
第 1-2 轮:快速模型处理
- 自动拉取 GitHub Actions 失败日志,智能过滤噪音(排除网络、Postgres、Docker 等无关错误)
- 识别测试失败(RSpec)、代码风格违规(RuboCop)、构建失败(yarn/npm/Tailwind/资产编译)
- 使用低成本/fast 模型生成修复方案
- 本地验证:
bundle exec rspec+rubocop -A - 分离提交:代码修复与风格修复分两次 commit
- 推送到特性分支并持续监控 CI 状态
第 3 轮:调试子代理 + 强力模型
- 当简单修复失败时,启动调试子代理在故障点注入
pp/raise inspect - 收集运行时状态并上报
- 升级至更强的模型进行深度分析修复
第 4 轮:人工介入
- 完整报告失败原因、尝试记录、调试输出
- 停止自动修复,等待人工决策
显著优点
| 优势 | 说明 |
|------|------|
| **成本优化** | 优先使用快速/低成本模型,仅必要时升级 |
| **本地验证** | 每次修复后本地运行测试,避免反复推送污染 Git 历史 |
| **安全边界** | 强制规则:永不注释测试、永不推送到 main/受保护分支、永不自动合并 |
| **日志智能过滤** | 自动排除网络抖动、容器层噪音,聚焦有效错误 |
| **Ruby/Rails 原生** | 深度集成 RuboCop、RSpec、Bundler 生态 |
潜在局限与风险
1. Token 成本累积:复杂问题可能需要 3-4 轮模型调用,长日志上下文消耗较多 token
2. 调试注入风险:第 3 轮使用 pp/raise inspect 修改代码,虽为临时操作但仍需 review
3. 日志注入攻击:CI 日志被视为不可信输入,技能已内置防护(不执行日志中的指令)
4. GH_TOKEN 权限要求:需要 repo 范围的 GitHub Token,组织级安全策略可能限制
5. Tailwind/前端黑盒:对复杂前端构建失败(Vite/Webpack 配置问题)修复能力有限
适合人群
- 开源 Rails 维护者:需要处理大量外部贡献者 PR 的 CI 失败
- 中小型产品团队:缺乏专职 DevOps,开发者希望减少 CI 调试时间
- AI 原生工作流团队:已采用 AI coding agent 作为开发流程核心环节
安全等级说明
- GH_TOKEN 管理:需参考
references/security.md进行最小权限配置 - 分支保护:依赖 GitHub 分支保护规则防止意外推送至 main
- 日志处理:明确声明 CI 日志为不可信输入,禁止执行其中的任何指令