- BrainTools - https://www.braintools.ru -
В этой статье я покажу, как всего за 30 минут подключить автоматическое AI-ревью кода в вашем проекте — бесплатно, без токенов, без OpenAI и полностью локально.
В основе решения — три компонента: Ollama [1], AI Review [2] и GitHub Actions [3]. Ollama отвечает за запуск локальной LLM прямо внутри CI/CD без интернета и внешних API. AI Review [2] — опенсорсный инструмент, который анализирует изменения в Pull Request и оставляет комментарии прямо в GitHub. GitHub Actions обеспечивает автоматический запуск ревью при каждом изменении кода.
Система работает полностью изолированно: код никогда не покидает репозиторий, данные не отправляются во внешние сервисы (OpenAI, Claude, Gemini), а результат формируется локальной моделью в виде inline-комментариев [4] и summary-отчёта [5].
Иными словами, вы получаете тот же уровень «умного ревью», что и в облачных решениях, но без платы, VPN и рисков для безопасности. В качестве LLM мы будем использовать Ollama [1], а анализ кода выполнит AI Review [2], о котором я подробно рассказывал в предыдущей статье [6]. Тот же подход можно адаптировать под GitLab [7], Bitbucket [8] или Jenkins [9] — всё кроссплатформенно и не привязано к конкретному CI.
Когда речь заходит об AI-ревью, первый вопрос — на какой LLM оно будет работать. Обычно разработчики вспоминают OpenAI, Claude или Gemini. Но у таких решений есть три очевидных минуса: они стоят денег, недоступны в ряде стран (РФ, РБ), и требуют отправки кода во внешние сервисы.
Теперь представьте, что ту же модель можно запустить прямо внутри CI/CD — без токенов, VPN и передачи данных наружу. Вот здесь и появляется Ollama [1]. Это не альтернатива OpenAI, а удобный локальный адаптер, позволяющий разворачивать модели вроде llama3 [10], phi3 [11], mistral [12], codellama [13] и других в один Docker-контейнер и обращаться к ним через HTTP API.
Для AI Review [2] это идеальное решение: инструмент не зависит от конкретного провайдера, поддерживает любую модель — от «тяжёлых» GPT-уровня до лёгких локальных — и при необходимости легко переключается на свой LLM endpoint.
Хотите локально — ставьте Ollama, нужно в облаке — подключайте OpenAI, Claude или собственный inference-сервер. AI Review универсален по дизайну и одинаково хорошо работает в CI, на сервере или в корпоративной сети без выхода в интернет.
Чтобы запустить ревью, достаточно минимального конфига. AI Review [2] из коробки поддерживает GitHub и умеет анализировать Pull Request без дополнительной настройки. Всё сводится к нескольким строкам YAML — можно просто положить файл в корень проекта.
Создаём .ai-review.yaml [14]:
# Используем локальную LLM через Ollama
llm:
provider: OLLAMA
meta:
model: mistral # модель, которую будет использовать ревью
max_tokens: 2048 # ограничение на размер ответа
temperature: 0.2 # чем ниже, тем строже ответы
http_client:
api_url: http://localhost:11434 # локальный endpoint Ollama
timeout: 600 # запас по времени для генерации
# Подключаемся к GitHub для получения PR и публикации комментариев
vcs:
provider: GITHUB
http_client:
api_url: https://api.github.com
timeout: 120
И всё — AI Review подключится к локальной модели через Ollama и начнёт анализировать изменения в вашем PR.
Если хотите добавить собственные промпты, изменить стиль комментариев, ограничить количество замечаний или исключить файлы из анализа — всё это настраивается в расширенном конфиге. Подробности — в документации AI Review [15].
Теперь добавим пайплайн, который будет запускать ревью в CI/CD. Всё просто: создаём файл .github/workflows/ai-review.yml [16]. Он поднимает Ollama, скачивает модель, прогревает её и запускает AI Review.
Для других CI (GitLab [7], Bitbucket [8], Jenkins [9]) всё аналогично — нужно лишь поднять контейнер Ollama и вызвать CLI-команду ai-review run.
Создаём .github/workflows/ai-review.yml [16]:
name: 🤖 AI Review
on:
# Ручной запуск пайплайна (можно заменить на on: pull_request)
workflow_dispatch:
inputs:
review-command:
type: choice
default: "run"
options: [ run, run-inline, run-context, run-summary ]
description: "Какой тип ревью запустить"
pull-request-number:
type: string
required: true
description: "Номер Pull Request"
jobs:
ai-review:
name: Run AI Review
runs-on: ubuntu-latest
# Поднимаем локальную LLM Ollama в фоне
services:
ollama:
image: ollama/ollama:latest
ports: [ 11434:11434 ]
steps:
# 1️⃣ Клонируем репозиторий
- name: 🧱 Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0 # нужно, чтобы видеть diff в PR
# 2️⃣ Ждём, пока Ollama поднимется
- name: ⏳ Wait for Ollama to start
run: |
echo "⏳ Ожидаем запуск Ollama..."
for i in $(seq 1 30); do
if curl -s http://localhost:11434/api/version; then
echo "✅ Ollama готова!"
break
fi
sleep 3
done
# 3️⃣ Скачиваем выбранную модель (в примере — mistral)
- name: 📦 Pull model
run: |
echo "📥 Загружаем модель 'mistral'..."
curl -X POST http://localhost:11434/api/pull
-H "Content-Type: application/json"
-d '{"model": "mistral"}'
# 4️⃣ Прогреваем модель (чтобы первый запрос не был долгим)
- name: 🔥 Warm up model
run: |
echo "🔥 Прогреваем модель..."
curl -s -X POST http://localhost:11434/api/chat
-H "Content-Type: application/json"
-d '{"model":"mistral","stream":false,"messages":[{"role":"user","content":"Hello!"}]}'
echo "✅ Warm-up complete."
# 5️⃣ Запускаем ревью
- name: 🚀 Run AI Review
# Укажите актуальную версию инструмента
uses: Nikita-Filonov/ai-review@v0.27.0
env:
# GitHub токен для доступа к PR
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 }}
with:
# Тип запускаемого ревью: полный, только inline или summary
review-command: ${{ inputs.review-command }}
Если вы используете GitLab CI [7], Jenkins [9] или Bitbucket Pipelines [8] — просто повторите те же шаги: запустите Ollama в контейнере, скачайте модель и вызовите CLI-команду
ai-review runс нужными переменными окружения.
После настройки всего пайплайна можно запустить ревью вручную — достаточно выбрать команду (run, run-inline, run-context, run-summary) и указать номер Pull Request. Это делается прямо из вкладки Actions → AI Review → Run workflow [3]:

После старта GitHub Actions поднимает контейнер с Ollama [17], скачивает выбранную модель (в нашем примере — mistral), прогревает её и запускает AI Review. В логах можно видеть все шаги пайплайна — от инициализации контейнера до публикации комментариев:

Через пару минут в самом Pull Request [19] появятся комментарии от GitHub Actions:
Inline-комментарии [4] — конкретные замечания по строкам кода:

Summary-комментарий [5] — общий обзор изменений и рекомендации:

Важно: чтобы бот мог публиковать комментарии, убедитесь, что
GITHUB_TOKENимеет праваread+writeдля Pull Request. Это можно включить в настройках репозитория или явно указать в workflow.
Нужно понимать: Ollama [1] — это не облачный OpenAI, и на CI/CD с ограниченными ресурсами она может работать заметно медленнее. Скорость генерации напрямую зависит от самой модели, длины промптов и количества токенов в ответе.
В базовой конфигурации из статьи ревью может занимать от 1 до 3 минут на файл, и это нормально для локального запуска без GPU [20]. Если хочется ближе к облачному опыту [21] — просто перенесите Ollama на:
отдельный self-hosted runner [22] с выделенными ресурсами;
или облачную виртуалку (4+ CPU [23], 8+ GB RAM [24] — минимально комфортно);
или GPU-инстанс [20], если используете крупные модели вроде llama3 [10] или codellama [13].
Важно понимать: AI Review [2] не тормозит сам по себе — его скорость полностью зависит от LLM-провайдера, к которому вы подключены. Сегодня это Ollama, завтра может быть OpenAI, Claude, Gemini или даже ваш внутренний inference-сервер. Интерфейс и логика [25] работы останутся теми же.
Главная идея — гибкость и автономность, а не “чудо за бесплатно”. Этот пример показывает, что можно построить AI Review, не отдавая код вовне и не платя за токены. А вот как быстро и на какой модели — зависит уже от выбранного стека и ваших ресурсов.
В итоге мы получили полноценный AI code review, работающий прямо в CI/CD — без токенов, без внешних API и без копейки затрат. AI Review [2] анализирует Pull Request [19], оставляет inline-комментарии [4], формирует summary [5] — и всё это происходит внутри вашей инфраструктуры, без передачи кода наружу.
По сути, всё, что нужно — это Docker [26], GitHub Actions [3] и минимальный конфиг. Дальше вы сами решаете, как масштабировать решение: оставить базовый сценарий на GitHub или развернуть Ollama на self-hosted runner [22] или облачном сервере [27] с подходящими ресурсами.
Важно понимать: в мире, где OpenAI, Claude или Gemini стоят денег, требуют VPN и не всегда доступны, локальные решения — это не компромисс, а альтернатива. Они дают ту же пользу — помогают команде писать чище, быстрее и увереннее — но делают это безопасно и доступно каждому.
При этом решение не требует токенов, VPN или внешних зависимостей — всё можно запустить локально, в изолированной среде. А если в будущем появится необходимость — вы всегда сможете подключить другую LLM, будь то OpenAI, Claude, Gemini или собственный корпоративный inference-сервер.
Чтобы не тратить время на поиски — вот всё, что нужно для повторения [28] примера и вдохновения:
AI Review [2] — опенсорсный инструмент для автоматического анализа кода и ревью изменений. Поддерживает GitHub [29], GitLab [7], Bitbucket [8] и другие CI/CD-платформы, а также совместим с большинством популярных LLM-провайдеров — OpenAI, Claude, Gemini, Ollama.
Пример Pull Request с комментариями от AI Review (inline + summary) [19]
Минимальный конфиг .ai-review.yaml для запуска из коробки [14]
Подробная документация по настройке промптов, фильтров и расширенной конфигурации [15]
Если статья оказалась полезной — поставьте звёздочку репозиторию AI Review [2] на GitHub. Это поможет проекту развиваться и оставаться полностью бесплатным и опенсорсным.
Автор: sound_right
Источник [30]
Сайт-источник BrainTools: https://www.braintools.ru
Путь до страницы источника: https://www.braintools.ru/article/20411
URLs in this post:
[1] Ollama: https://ollama.com/
[2] AI Review: https://github.com/Nikita-Filonov/ai-review
[3] GitHub Actions: https://github.com/Nikita-Filonov/test-ai-review/actions
[4] inline-комментариев: https://github.com/Nikita-Filonov/test-ai-review/pull/2#discussion_r2404479873
[5] summary-отчёта: https://github.com/Nikita-Filonov/test-ai-review/pull/2#issuecomment-3369053823
[6] предыдущей статье: https://habr.com/ru/articles/951434/
[7] GitLab: https://github.com/Nikita-Filonov/ai-review/blob/main/docs/ci/gitlab.yaml
[8] Bitbucket: https://github.com/Nikita-Filonov/ai-review/blob/main/docs/configs/.ai-review.yaml
[9] Jenkins: https://github.com/Nikita-Filonov/ai-review/blob/main/docs/ci/Jenkinsfile
[10] llama3: https://ollama.com/library/llama3
[11] phi3: https://ollama.com/library/phi3
[12] mistral: https://ollama.com/library/mistral
[13] codellama: https://ollama.com/library/codellama
[14] .ai-review.yaml: https://github.com/Nikita-Filonov/test-ai-review/blob/main/.ai-review.yaml
[15] в документации AI Review: https://github.com/Nikita-Filonov/ai-review/tree/main/docs
[16] .github/workflows/ai-review.yml: https://github.com/Nikita-Filonov/test-ai-review/blob/main/.github/workflows/ai-review.yml
[17] GitHub Actions поднимает контейнер с Ollama: https://github.com/Nikita-Filonov/test-ai-review/actions/runs/18259278251/job/51984960939
[18] Пример пайплайна context review: https://github.com/Nikita-Filonov/test-ai-review/actions/runs/18259188974/job/51984760797
[19] Pull Request: https://github.com/Nikita-Filonov/test-ai-review/pull/2
[20] GPU: https://en.wikipedia.org/wiki/Graphics_processing_unit
[21] опыту: http://www.braintools.ru/article/6952
[22] self-hosted runner: https://docs.github.com/ru/actions/concepts/runners/self-hosted-runners
[23] CPU: https://ru.wikipedia.org/wiki/%D0%A6%D0%B5%D0%BD%D1%82%D1%80%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81%D0%BE%D1%80
[24] RAM: https://ru.wikipedia.org/wiki/%D0%9E%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%B8%D0%B2%D0%BD%D0%B0%D1%8F_%D0%BF%D0%B0%D0%BC%D1%8F%D1%82%D1%8C
[25] логика: http://www.braintools.ru/article/7640
[26] Docker: https://hub.docker.com/r/ollama/ollama
[27] облачном сервере: https://ru.wikipedia.org/wiki/%D0%9E%D0%B1%D0%BB%D0%B0%D1%87%D0%BD%D1%8B%D0%B5_%D0%B2%D1%8B%D1%87%D0%B8%D1%81%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F
[28] повторения: http://www.braintools.ru/article/4012
[29] GitHub: https://github.com/Nikita-Filonov/ai-review/blob/main/docs/ci/github.yaml
[30] Источник: https://habr.com/ru/articles/953598/?utm_source=habrahabr&utm_medium=rss&utm_campaign=953598
Нажмите здесь для печати.