- BrainTools - https://www.braintools.ru -

Как добавить AI-ревью и ответы ассистента в Pull Request всего за 30 минут

В этой статье я покажу, как всего за 30 минут встроить в ваш CI/CD-пайплайн полноценного AI-ревьюера и ассистента — без платных API-ключей, без интеграции с OpenAI и без лишней инфраструктуры. Всё, что нам понадобится, — это AI Review [1] и OpenRouter [2] — универсальный шлюз к десяткам LLM, от GPT-4o до Claude и Mistral, доступный бесплатно.

Мы настроим систему так, чтобы она автоматически запускалась при каждом Pull или Merge Request и не только оставляла комментарии к коду — от точечных inline-замечаний [3]до краткого summary-обзора [4], — но и выступала в роли AI-ассистента, способного отвечать на ваши комментарии [5] и выполнять указания [6] прямо внутри обсуждения.

В примере я покажу запуск через GitHub Actions [7], но тот же подход одинаково хорошо работает и в GitLab, Bitbucket и Gitea. При этом у вас нет никаких ограничений: AI Review поддерживает Gemini, OpenAI, Claude, Ollama, OpenRouter и работает с любыми популярными VCS — GitHub [8], GitLab [9], Gitea [10], Bitbucket [11].

Что такое OpenRouter?

OpenRouter [2] — это универсальный шлюз к десяткам современных LLM (Large Language Models): GPT-4o, Claude, Gemini, Mistral и другим. Один API и один ключ дают доступ ко всем моделям сразу — вы просто выбираете нужную и переключаетесь между ними без изменения кода.

AI Review [1] поддерживает OpenRouter «из коробки», поэтому остаётся только получить токен и указать его в конфигурации.

Как получить токен OpenRouter

  1. Перейдите на openrouter.ai [12] и авторизуйтесь (через GitHub или Google).

  2. В личном кабинете откройте раздел Keys и нажмите Create Key.

  3. Дайте ключу понятное имя и скопируйте его.

  4. Рекомендуется создать отдельный ключ для CI/CD, чтобы его можно было отозвать отдельно.

Как добавить токен в GitHub Actions

Чтобы использовать токен в пайплайне, добавьте его в Secrets репозитория:

  • Settings → Secrets and variables → Actions → New repository secret

  • В поле Name: OPENROUTER_API_TOKEN

  • В поле Value: вставьте скопированный токен

Теперь ключ будет доступен как secrets.OPENROUTER_API_TOKEN и его можно безопасно использовать в workflow.

Аналогично переменные задаются и в GitLab, Bitbucket или Jenkins — имя переменной остаётся тем же.

Создаём конфиг AI Review

Первое, что нужно сделать, — это описать настройки инструмента AI Review [1]. Он управляется через конфигурационный файл .ai-review.yaml [13], который располагается в корне проекта. Минимального конфига достаточно, чтобы сразу запустить AI-ревью в CI/CD:

llm:
  provider: OPENROUTER              # Используем OpenRouter как LLM-провайдера

  meta:
    model: mistralai/mistral-7b-instruct:free  # Бесплатная модель через OpenRouter
    max_tokens: 15000              # Максимальное количество токенов в ответе
    temperature: 0.3               # Чем ниже значение, тем строже ответы

  http_client:
    timeout: 120
    api_url: https://openrouter.ai/api/v1      # Базовый URL API

vcs:
  provider: GITHUB                # Используем GitHub как систему контроля версий

  http_client:
    timeout: 120
    api_url: https://api.github.com            # API GitHub

И всё — AI Review подключится к модели через OpenRouter и начнёт анализировать изменения в вашем Pull Request.

Тот же конфиг легко адаптируется под GitLab, Bitbucket или Gitea — достаточно поменять vcs.provider и api_url. Если нужно добавить собственные промпты, изменить стиль комментариев, ограничить количество замечаний или исключить файлы из анализа — всё это настраивается в расширенном конфиге. Примеры можно найти в документации AI Review [14].

Создаём workflow GitHub Actions

Теперь добавим пайплайн, который будет запускать AI Review автоматически при каждом Pull Request. Всё просто: создаём файл .github/workflows/ai-review.yml [15] и используем готовый action из GitHub Marketplace [16].

name: 🤖 AI Review

on:
  # Ручной запуск пайплайна из вкладки Actions (можно заменить на on: pull_request)
  workflow_dispatch:
    inputs:
      review-command:
        type: choice
        default: "run"
        options: [ run, run-inline, run-context, run-summary, run-inline-reply, run-summary-reply ]
        required: true
        description: "AI Review command"

      pull-request-number:
        type: string
        required: true
        description: "Pull request number"

jobs:
  ai-review:
    name: Run AI Review
    runs-on: ubuntu-latest
    steps:
      # 1️⃣ Клонируем репозиторий и получаем diff изменений
      - name: 🧱 Checkout repository
        uses: actions/checkout@v4
        with:
          fetch-depth: 0

      # 2️⃣ Запускаем AI Review
      - name: 🚀 Run AI Review
        uses: Nikita-Filonov/ai-review@v0.36.0
        env:
          # 🔑 Токен GitHub для доступа к Pull Request и публикации комментариев
          VCS__HTTP_CLIENT__API_TOKEN: ${{ secrets.GITHUB_TOKEN }}

          # 📦 Контекст PR — владелец, репозиторий и номер запроса
          VCS__PIPELINE__OWNER: ${{ github.repository_owner }}
          VCS__PIPELINE__REPO: ${{ github.event.repository.name }}
          VCS__PIPELINE__PULL_NUMBER: ${{ inputs.pull-request-number }}

          # 🤖 Токен OpenRouter для доступа к LLM
          LLM__HTTP_CLIENT__API_TOKEN: ${{ secrets.OPENROUTER_API_TOKEN }}

        with:
          # 🧠 Команда ревью: полный анализ, только inline, только summary и т.д.
          review-command: ${{ inputs.review-command }}

Всё — после коммита этого файла можно запускать пайплайн прямо из вкладки Actions [7] и получать AI-ревью кода без дополнительной настройки.

Если вы используете GitLab, Bitbucket или Jenkins, структура остаётся такой же: установите ai-review через pip install xai-review [17] или запустите готовый Docker-образ [18], а затем вызовите CLI-команду ai-review run с нужными переменными окружения. Примеры конфигураций для других CI доступны в документации [19].

Результат

Перед запуском убедитесь, что ваш токен GitHub (GITHUB_TOKEN) имеет права read + write для Pull Requests — иначе AI Review не сможет публиковать комментарии. Это настраивается в разделе Settings → Actions → General → Workflow permissions → Read and write permissions.

Далее всё просто:

  1. Перейдите на вкладку Actions [7] в вашем репозитории.

  2. Выберите workflow 🤖 AI Review [20].

  3. Нажмите Run workflow, укажите номер Pull Request и команду ревью (например, run-inline или run-summary).

Как добавить AI-ревью и ответы ассистента в Pull Request всего за 30 минут - 1

После запуска workflow AI Review автоматически подключится к модели, проанализирует diff и начнёт публиковать результаты прямо в интерфейсе PR [21]. Вот как это выглядит на практике

Inline Review: построчные комментарии

В этом режиме AI Review анализирует каждую изменённую строку и оставляет точечные комментарии [22] в диффе. Это основной формат ревью, который помогает быстро находить ошибки [23] и потенциальные улучшения прямо в коде.

Как добавить AI-ревью и ответы ассистента в Pull Request всего за 30 минут - 2

Summary Review: общий обзор

Здесь AI формирует одно большое сообщение [4] под Pull Request, описывающее сильные и слабые стороны изменений, архитектурные замечания и общие рекомендации.

Как добавить AI-ревью и ответы ассистента в Pull Request всего за 30 минут - 3

AI-ассистент: ответы и помощь

AI Review умеет не только анализировать код, но и выступать в роли интерактивного помощника: он может отвечать на комментарии, объяснять свою логику [24] или выполнять дополнительные задачи по вашему запросу.

Чтобы активировать ответ ассистента, достаточно добавить в сообщение специальный тег:

  • #ai-review-inline-reply — если хотите получить ответ на конкретный inline-комментарий

  • #ai-review-summary-reply — если нужен ответ в summary-обсуждении

Эти теги можно изменить или переопределить в конфигурации [25], если вы хотите использовать собственный стиль запросов.

Ассистент: объяснение комментария

Мы попросим [26] AI объяснить, почему он оставил конкретное inline-замечание [3] в src/calculator.py. Ассистент анализирует контекст и формулирует развёрнутый ответ [5], который можно использовать прямо в обсуждении PR.

Как добавить AI-ревью и ответы ассистента в Pull Request всего за 30 минут - 4

Ассистент: генерация тестов

В summary-обсуждении можно попросить [27] AI написать тесты для любого компонента. Например, мы попросим [27] его сгенерировать тесты для класса Calculator из файла src/calculator.py. Результат — готовый пример тестового файла [6], который можно сразу добавить в проект.

Как добавить AI-ревью и ответы ассистента в Pull Request всего за 30 минут - 5

Всё это работает без дополнительного кода и настройки — ассистент активируется теми же командами (run-inline-reply и run-summary-reply) и использует тот же LLM, что и основное ревью.

Заключение

Важно понимать: сам AI Review [1] не “оценивает качество” кода — он лишь автоматизирует процесс ревью и обеспечивает удобную интеграцию в CI/CD. Итоговый результат напрямую зависит от того, какую модель вы выберете. Хотите максимально точные и глубокие комментарии — используйте, например, gpt-4o или claude-3.5. Нужны быстрые и лёгкие проверки — подойдут mistral или phi.

В этом примере мы использовали OpenRouter и бесплатную модель, но на практике никаких ограничений нет: AI Review одинаково хорошо работает с OpenAI, Claude, Gemini, Ollama и OpenRouter, а также поддерживает все популярные системы контроля версий — GitHub [8], GitLab [9], Gitea [10] и Bitbucket [11].

За 30 минут вы можете встроить в CI/CD полноценного AI-ревьюера и ассистента — без платных подписок, без внешней инфраструктуры и с полным контролем над кодом. А дальше всё зависит только от выбранной модели и ваших задач.

Полезные ссылки и демо

Чтобы не тратить время на поиски — вот всё, что нужно для повторения [28] примера и вдохновения:

Если статья оказалась полезной — поставьте звёздочку репозиторию AI Review [1] на GitHub. Это поможет проекту развиваться и оставаться полностью бесплатным и опенсорсным.

Автор: sound_right

Источник [30]


Сайт-источник BrainTools: https://www.braintools.ru

Путь до страницы источника: https://www.braintools.ru/article/20885

URLs in this post:

[1] AI Review: https://github.com/Nikita-Filonov/ai-review

[2] OpenRouter: https://openrouter.ai/

[3] точечных inline-замечаний : https://github.com/Nikita-Filonov/test-ai-review-openrouter/pull/1#discussion_r2440846830

[4] краткого summary-обзора: https://github.com/Nikita-Filonov/test-ai-review-openrouter/pull/1#issuecomment-3416651995

[5] отвечать на ваши комментарии: https://github.com/Nikita-Filonov/test-ai-review-openrouter/pull/1#discussion_r2440862489

[6] выполнять указания: https://github.com/Nikita-Filonov/test-ai-review-openrouter/pull/1#issuecomment-3416669140

[7] GitHub Actions: https://github.com/Nikita-Filonov/test-ai-review-openrouter/actions

[8] GitHub: https://github.com/Nikita-Filonov/ai-review/blob/main/docs/ci/github.yaml

[9] GitLab: https://github.com/Nikita-Filonov/ai-review/blob/main/docs/ci/gitlab.yaml

[10] Gitea: https://gitea.com/Nikita-Filonov/test-ai-review/pulls/1

[11] Bitbucket: https://github.com/Nikita-Filonov/ai-review/blob/main/docs/ci/Jenkinsfile

[12] openrouter.ai: http://openrouter.ai

[13] .ai-review.yaml: https://github.com/Nikita-Filonov/test-ai-review-openrouter/blob/main/.ai-review.yaml

[14] документации AI Review: https://github.com/Nikita-Filonov/ai-review/tree/main/docs/configs

[15] .github/workflows/ai-review.yml: https://github.com/Nikita-Filonov/test-ai-review-openrouter/blob/main/.github/workflows/ai-review.yml

[16] action из GitHub Marketplace: https://github.com/marketplace/actions/xai-review

[17] pip install xai-review: https://pypi.org/project/xai-review/

[18] Docker-образ: https://hub.docker.com/r/nikitafilonov/ai-review

[19] документации: https://github.com/Nikita-Filonov/ai-review/tree/main/docs/ci

[20] 🤖 AI Review: https://github.com/Nikita-Filonov/test-ai-review-openrouter/actions/workflows/ai-review.yml

[21] прямо в интерфейсе PR: https://github.com/Nikita-Filonov/test-ai-review-openrouter/pull/1

[22] оставляет точечные комментарии: https://github.com/Nikita-Filonov/test-ai-review-openrouter/pull/1#discussion_r2440846829

[23] ошибки: http://www.braintools.ru/article/4192

[24] логику: http://www.braintools.ru/article/7640

[25] в конфигурации: https://github.com/Nikita-Filonov/ai-review/blob/main/docs/configs/.ai-review.yaml

[26] Мы попросим: https://github.com/Nikita-Filonov/test-ai-review-openrouter/pull/1#discussion_r2440858329

[27] можно попросить: https://github.com/Nikita-Filonov/test-ai-review-openrouter/pull/1#issuecomment-3416658233

[28] повторения: http://www.braintools.ru/article/4012

[29] Документация и примеры расширенной конфигурации: https://github.com/Nikita-Filonov/ai-review/tree/main/docs

[30] Источник: https://habr.com/ru/articles/957738/?utm_source=habrahabr&utm_medium=rss&utm_campaign=957738

www.BrainTools.ru

Rambler's Top100