>_ DevTrendszh

语言

首页

语言

板块

前端 后端 移动端 DevOps AI / ML 游戏开发 区块链 嵌入式 安全
Go

如何让 AI 在 Pull Request 中发现真正的 Bug,而不是生成无意义的评论

大多数用于代码审查的神经网络机器人工作方式相同。它们接收提交的 diff,浏览修改的行,然后生成大量肤浅的评论。结果是,开发者得到的只是格式建议、缺失的文档字符串,或者当 AI 缺乏相邻文件的上下文时产生的明显幻觉。Agent-Field 项目团队决定用不同的方式解决这个问题,并创建了 PR-AF 工具。

PR-AF benchmark

PR-AF 是什么,适用于谁

PR-AF 代表 Pull Request AgentField。这是一个用于 CI/CD 阶段深度代码审计的开源工具。

该项目无意与 Claude Code 这类快速交互式工具竞争,后者能在终端中几秒钟内返回答案。PR-AF 专注于不同的任务:它运行需要 35 到 50 分钟,但会构建动态 Agent 图、从代码库中提取 AST 树,并对每个发现进行可证伪性验证。

该工具适用于需要在合并到主分支前进行严格自动化质量控制的团队。对于安全或架构错误成本较高的项目,这一点尤为重要。

动态流水线的工作原理

PR-AF 不是运行带有硬编码提示的静态脚本,而是分析传入的 Pull Request 结构并相应地调整执行图。

PR-AF Architecture

分析过程分为几个阶段。

首先,系统通过三个不同的维度评估 diff:语义、机械和系统。为已识别的任务创建临时专业审查 Agent。

然后证明验证引擎启动。如果某个 Agent 认为代码中缺少输入验证,系统不会轻信它。它会扫描代码库,提取 AST 树,并验证调用链。如果在代码中找不到确认,该发现就会被丢弃。

在下一步中,证伪过滤器启动。系统通过检查现有的安全措施和作者预期行为来尝试反驳自己关于 Bug 的假设。

最后,复合风险合成器连接起来。不同文件中孤立的轻微问题通常会组合成严重漏洞。该工具将此类发现链接到一份报告中。

基准测试结果与成本效益

在 Martian Code-Review-Bench 基准测试中,PR-AF 系统配合开源 GLM-5.2 模型展示了 0.706 的 Bug 检测召回率(黄金召回率)。在包含 42 个工具的测试集中,该结果使该项目在开源解决方案中排名第一。

在测试期间,系统独立发现了 595 个已确认的错误。当使用顶级商业模型时,结果甚至更高。

同时,单次运行的成本比封闭的 SaaS 替代方案低约 10 倍。您只需通过自己的 API 密钥为 LLM token 付费,无需按用户按月订阅。

快速开始与 API 使用

您可以通过 Docker Compose 在几分钟内在本地启动 PR-AF。

git clone https://github.com/Agent-Field/pr-af.git
cd pr-af
cp .env.example .env
docker compose up --build

.env 文件中,您只需指定具有代码库读写权限的 OPENROUTER_API_KEYGH_TOKEN。启动后,控制节点将在端口 8080 上可用。

您可以通过标准 HTTP 请求发送 Pull Request 进行审查:

curl -X POST http://localhost:8080/api/v1/execute/async/pr-af.review \
  -H "Content-Type: application/json" \
  -d '{"input": {"pr_url": "https://github.com/owner/repo/pull/123"}}'

作为响应,您会收到包含漏洞分析的最终 JSON,按严重程度分级。如果机器人有 GitHub 访问权限,它会自动在相关代码行上放置带有支持证据的评论。

与 GitHub Actions 的集成

最简单的方式是将内置审计集成到标准 CI/CD 中。向代码库添加 .github/workflows/pr-af-review.yml 文件,并通过在 Pull Request 上添加 pr-af 标签来触发运行。

name: AgentField PR Review

on:
  pull_request:
    types: [labeled]

jobs:
  pr-af-review:
    if: github.event.label.name == 'pr-af'
    runs-on: ubuntu-latest

    permissions:
      contents: read
      pull-requests: write

    steps:
      - name: Checkout PR-AF
        uses: actions/checkout@v4
        with:
          repository: Agent-Field/pr-af
          path: pr-af

      - name: Start AgentField & PR-AF
        working-directory: ./pr-af
        env:
          OPENROUTER_API_KEY: ${{ secrets.OPENROUTER_API_KEY }}
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        run: |
          docker compose up -d
          sleep 15

      - name: Execute Deep Architectural Audit
        working-directory: ./pr-af
        env:
          PR_URL: ${{ github.event.pull_request.html_url }}
        run: |
          python3 scripts/ci_runner.py

开发者将标签附加到负责的 PR 上,半小时后,线程中会出现一份带有已验证事实的详细报告。

深入了解

项目的主节点最近用 Go 重写(代码位于 go/ 目录中),这对速度和内存消耗产生了积极影响。原始 Python 实现仍然作为替代方案在代码库中可用。

项目采用宽松的 Apache 2.0 许可证分发。代码完全开放,包括用于复现基准测试结果的脚本。

总结

PR-AF 提供了一种合理的自动化审查方法。系统不是用肤浅的评论轰炸编译过程,而是花时间进行详细的 AST 分析和假设验证。

该工具非常适合那些厌倦了常规 AI 机器人误报并需要在 CI/CD 中使用可靠安全过滤器的团队。它不适合快速修复拼写错误,但在将关键功能合并到生产环境之前表现出色。

相关项目