Как заставить ИИ искать реальные баги в пулл-реквестах вместо генерации банальных комментов

13 авг 2026
505
53
4
4 недели

Большинство нейросетевых ботов для ревью кода работают одинаково. Они получают diff из коммита, бегло смотрят на изменённые строки и генерируют десятки поверхностных замечаний. В результате разработчики получают советы о форматировании, пропущенных docstring или очевидные галлюцинации, когда ИИ не видит контекст соседних файлов. Команда проекта Agent-Field решила подойти к проблеме иначе и создала инструмент PR-AF.

PR-AF benchmark

Что такое PR-AF и кому он пригодится

PR-AF расшифровывается как Pull Request AgentField. Это инструмент с открытым исходным кодом для глубокого аудита кода на этапе CI/CD.

Проект не пытается конкурировать с быстрыми интерактивными утилитами вроде Claude Code, которые выдают ответ за пару секунд прямо в терминале. PR-AF создан для других задач: он работает от 35 до 50 минут, зато строит динамический граф агентов, вытаскивает AST-деревья из репозитория и проверяет каждое замечание на фальсифицируемость.

Инструмент пригодится командам, которым нужен жесткий автоматический контроль качества перед мёрджем в основную ветку. Особенно это актуально для проектов с высокой стоимостью ошибки в безопасности или архитектуре.

Реклама

Как устроен динамический пайплайн

Вместо запуска статического скрипта с зашитым промптом PR-AF анализирует структуру поступающего пулл-реквеста и подстраивает под него граф выполнения.

PR-AF Architecture

Процесс анализа делится на несколько этапов.

Сначала система оценивает diff через три разных среза: семантический, механический и системный. Под выявленные задачи создаются временные узкоспециализированные агенты-ревьюеры.

Затем подключается движок проверки доказательств. Если агент считает, что в коде пропущена валидация входных данных, система не верит ему на слово. Она сканирует репозиторий, извлекает AST-дерево и проверяет цепочку вызовов. Замечание отбрасывается, если подтверждение в коде не найдено.

На следующем шаге срабатывает фильтр фальсификации. Система пытается опровергнуть собственную гипотезу о баге, проверяя существующие защиты и задуманное автором поведение.

В конце подключается синтезатор составных рисков. Изолированные мелкие недочёты в разных файлах часто складываются в критическую уязвимость. Инструмент связывает такие находки в один отчёт.

Результаты на тестах и экономика

На бенчмарке Martian Code-Review-Bench система PR-AF в связке с открытой моделью GLM-5.2 показала полноту поиска багов (golden recall) на уровне 0.706. В тестовом наборе из 42 инструментов этот результат вывел проект на первое место среди решений с открытым кодом.

В ходе тестов система самостоятельно обнаружила 595 подтверждённых ошибок. При использовании топовых коммерческих моделей результат получается ещё выше.

При этом стоимость одного прогона выходит примерно в 10 раз ниже закрытых SaaS-аналогов. Вы платите только за токены LLM через свой ключ API, без ежемесячной подписки за каждого пользователя.

Быстрый запуск и работа через API

Запустить PR-AF локально можно за пару минут через Docker Compose.

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

В файле .env достаточно указать ваш OPENROUTER_API_KEY и GH_TOKEN с правами на чтение и запись в репозиторий. После запуска управляющий узел станет доступен на порту 8080.

Отправить пулл-реквест на проверку можно обычным HTTP-запросом:

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, а сам запуск вешается на появление метки 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 и проверку гипотез.

Инструмент идеально подойдёт командам, которым надоели ложные срабатывания обычных ИИ-ботов и требуется надежный фильтр безопасности в CI/CD. Для быстрой правки опечаток он не подходит, но перед мёрджем критичных фич в продакшен показывает себя отлично.

🍪 Мы используем файлы cookie и сервис аналитики Яндекс.Метрика, чтобы сайт работал лучше. Продолжая пользоваться devtrends.ru, вы соглашаетесь с обработкой данных согласно Политике конфиденциальности.