
AI编程代理时代的自动化软件验证
人工智能发展正值巅峰,开发者在无需亲自编写甚至审查代码的情况下即可发布产品。然而,Faros对4000个团队、2.2万名开发者为期两年的遥测数据分析显示,在AI采用率较高的组织中,虽然工程吞吐量增加,但缺陷数量、返工量、审查负担及生产环境事故的增长速度更快。
数据表明,与低AI采用率时期相比,高采用率时期每位开发者报告的缺陷增加54%,拉取请求(PR)平均审查时间增加约五倍,每个PR引发的事故数量增加三倍以上。需强调的是,这些仅为相关性,并非证明AI直接导致所有结果。后续报告指出,部分早期影响正在缓解,但验证、修复和运营成本仍在下游持续累积。
面对AI推送代码的速度,指望小团队有意义地审查海量生成代码并不现实。要在保持开发速度的同时不牺牲软件质量、可靠性和可维护性,答案在于自动化软件验证。利用AI工程师常用的工具、技能和测试框架,构建复杂的测试和验证自动化流程,旨在问题到达用户之前发现隐患,建立有据可依的信任感。
目前可用的方案有哪些?
当前业界流行几种概念与框架。
Superpowers
Superpowers是一种智能体开发方法论和技能集合,可与编码智能体及测试框架配合使用。它鼓励智能体像纪律严明的软件工程师一样行动,强调规划、测试驱动开发、调试和审查,包括让独立智能体进行工作审查,而非立即跳入代码编写。这有助于细化构建内容,但遵循完整方法论可能减缓开发速度,且无法完全替代更广泛的正确性与安全性检查。
RoboRev
由pandas库开发者Wes McKinney推出的RoboRev框架,将持续的AI代码审查引入本地开发循环。其核心理念是让另一个大语言模型(LLM)审查第一个LLM编写的代码,以捕捉遗漏的错误或架构问题。在典型设置中,提交代码后,本地守护程序会自动审查并展示问题,方便开发者在上下文新鲜时修复。尽管代码审查概念并不新鲜,且2026年Claude、Codex、GitHub Copilot等提供商均提供AI辅助审查功能,但RoboRev的优势在于将验证融入编码循环,而非事后补救。
Claude Code Review
Anthropic托管的代码审查服务是一个强大的PR审查器。触发时,它会发送多个专用智能体并行调查更改,寻找逻辑错误、安全漏洞及边缘情况。截至2026年10月,该服务在Team和Enterprise计划中作为研究预览版提供,实行基于用量的单独计费。此外,Anthopic还维护一个/code-review插件,其工作流程、深度及定价与托管服务不同,需仔细查看套餐条款。
OpenAI Codex Review
Codex代码审查结合仓库上下文和指令审查PR。用户可通过@codex review请求审查或配置自动审查,也支持审查本地更改。若发现问题,可要求Codex准备修复方案并重复审查,形成“审查-修复”循环,但审查和实现仍需独立验证。
GitHub Copilot Code Review
GitHub提供了最省力的方法,可配置Copilot自动审查PR,遵循仓库指令并建议修复。虽然体验无缝,但盲目接受反馈可能引入问题。Copilot通常留下评论而非直接批准,自动审查不等于安全的合并决策。其权衡在于管理性较强,但缺乏DIY智能体工作流的直接模型配置选项。
Cursor Bugbot
Cursor Bugbot自动审查GitHub PR并允许在Cursor中处理问题,其Autofix功能可通过云智能体提出修复。对Cursor团队而言,最大优势是便利性,但模型选择和审查编排由Cursor处理,而非完全可定制的工作流。
单一的审查者是不够的
让一个强大模型编写代码,由独立的强大模型审查,能带来不同视角。但模型多样性并非魔法,不同智能体可能对相同错误达成一致或忽略相同需求。实际启示是将AI审查与不依赖LLM判断的检查相结合,并由人类对最终决策负责,尤其是高风险更改。
AI与自动化软件开发时代的CI/CD流水线
以下是一个全面的验证流水线作为可能性超集。每一步都能增加信心,但无一套检查能证明软件完美。这种哲学与NIST安全软件开发框架等一致。
代码质量与构建检查
- Lint检查:检查风格违规和常见错误。
- Formatter检查:确保格式化符合规则。
- 类型检查:验证强类型语言类型使用正确性。
- 编译/构建检查:确保应用编译或构建成功。
自动化测试
- 单元测试:测试单个功能单元。
- 集成测试:测试组件协同工作,如API、数据库交互。
- 端到端 (E2E) 测试:验证重要用户工作流程。
安全与依赖项检查
- 静态应用程序安全测试 (SAST):扫描源代码潜在安全漏洞。
- 密钥扫描:查找无意中包含的敏感凭据。
- 依赖项漏洞扫描:查找包依赖项已知漏洞。
- 依赖项新鲜度:识别过时或不受支持的包。
智能体代码审查
- 通用bug扫描:AI智能体标记潜在bug。
- 安全重点审查:AI智能体调查规则引擎未捕获的风险。
- 对照规范审查:检查PR是否实现请求行为及边缘情况。
基础设施与数据库检查
- 容器和基础设施配置扫描:查找不安全设置或错误配置。
- 数据库迁移验证:评估架构更改安全性及回滚难度。
架构与可维护性审查
- 冗余与复杂性检查:AI智能体识别不必要的代码及简化机会。
此外,根据应用需求,还可添加性能和负载测试、无障碍检查、隐私合规检查及软件许可/供应链检查。
如何配置这些检查?
大多数验证模式已是既定实践,可通过GitHub Actions、GitLab CI/CD等编排。以GitHub Actions为例,开发人员定义YAML工作流程,由推送、PR或合并触发。步骤包括安装依赖、运行确定性检查及调用AI智能体进行非确定性审查。
简化的工作流程示例如下(位于.github/workflows/verification.yml):
name: Code Verification
on:
pull_request:
permissions:
contents: read
jobs:
quality:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- run: ./ci/quality.sh
tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- run: ./ci/tests.sh
security:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- run: ./ci/security.sh
infrastructure:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- run: ./ci/infrastructure.sh
agent-review:
# This example skips external forks and Dependabot-triggered runs;
# bot reviews need separate setup.
if: github.event.pull_request.head.repo.full_name == github.repository && github.actor != 'dependabot[bot]'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
with:
fetch-depth: 0
persist-credentials: false
- uses: openai/codex-action@v1
with:
openai-api-key: ${{ secrets.OPENAI_API_KEY }}
permission-profile: ':read-only'
prompt: |
Review the changes in this PR relative to
base commit ${{ github.event.pull_request.base.sha }}.
Use git diff to inspect the changes.
Check for:
1. Logic bugs and missed edge cases
2. Security vulnerabilities
3. Compliance with the project specification
4. Unnecessary complexity or overengineering
Report actionable findings with file paths
and line numbers. Do not modify files.
此为说明性工作流程,非即插即用配置。 ./ci/*.sh 为占位符脚本。智能体作业运行审查但不会自动发布结果至PR,需额外报告步骤。实际项目中应固定第三方操作到受信任SHA,限制权限,并分离代码与不受信任贡献者。通过智能体审查,可在GitHub Actions中配置自有LLM提供商和凭据。
为每个PR运行整个流水线可能昂贵且耗时。理想做法是按阶段和变更风险分类检查:
预提交 (Pre-commit)
代码本地提交前阶段。执行内容:格式化、lint检查、类型检查、聚焦单元测试、快速构建检查及密钥扫描。可通过Git hooks或编辑器运行。
提交后 / 推送 (Post-commit / push)
代码推送到远程仓库后阶段。执行内容:广泛单元测试、集成测试、SAST及依赖项漏洞扫描。本地审查工具可提供快速反馈。
拉取请求 (PR)
合并到主分支前的审查验证阶段。执行内容:相关自动化测试、智能体bug扫描、安全审查、规范合规性审查及架构评估。高风险变更保留更全面检查,并使用仓库规则集强制关键检查通过。
预生产 / 部署 (Pre-production / deployment)
发布到生产环境前的验证阶段。执行内容:全集成和E2E测试、基础设施配置扫描、数据库迁移验证、部署冒烟测试及最终安全检查。高风险发布考虑预演或金丝雀部署及回滚计划。
生产 / 部署后 (Production / post-deployment)
代码在生产环境运行后阶段。执行内容:应用健康检查、错误/性能/安全监控、异常检测及安全时自动回滚。
大型科技公司如何运营AI软件工厂
Uber、Shopify、DoorDash、Spotify和Stripe等企业已探索此领域。正如Adam Faik在《如何构建AI原生软件工厂》所述,团队通常拥有网关路由请求,经权限和治理认证后推入自动化流水线。流水线访问代码、公司上下文和内部工具,进行研究、规划、构建、测试并提供证据。开发人员专注于提出问题及提供思路,智能体处理大部分实现和验证,最终由开发人员担任审查者和守门人。
我使用的实用智能体软件开发工作流程
以一个创建个人资料页面的PR为例,总结完整流水线:
- 规范制定:使用强大编码模型(如Claude)详细解释需求,来回迭代直至满意,生成规范。
- 计划审核:要求智能体创建实施计划,并由第二个顶级模型(如Codex)审核计划,补充单元测试、集成测试和E2E测试设计。
- 逐步执行与审查:批准计划后,主要编码智能体逐步执行。每步后由另一强大模型审查更改。高风险变更期间人工介入审查,否则待功能完成后深入审查。
- 整体审查:最后提交时,要求另一模型整体审查所有更改,对照原始规范标记遗漏。
- PR阶段:人工审查完整差异,运行SAST、依赖项扫描、智能体bug/安全审查等自动检查。
- 手动测试与部署:要求智能体提出简单手动测试用例,在本地或测试环境确认有效后部署。复杂或敏感数据变更可能在生产环境运行有限安全冒烟测试。
此流程允许快速发布代码,同时建立信心,确保代码符合规范并经有意义测试。关键点在于:如果AI使编写代码变得廉价,验证必须成为构建软件的首要组成部分。