ReVu — Open Source AI-ревьюер для ваших Pull Request. ai code review.. ai code review. DevOps.. ai code review. DevOps. fastapi.. ai code review. DevOps. fastapi. gigachat.. ai code review. DevOps. fastapi. gigachat. github.. ai code review. DevOps. fastapi. gigachat. github. Open source.. ai code review. DevOps. fastapi. gigachat. github. Open source. openai.. ai code review. DevOps. fastapi. gigachat. github. Open source. openai. python.. ai code review. DevOps. fastapi. gigachat. github. Open source. openai. python. yandexgpt.. ai code review. DevOps. fastapi. gigachat. github. Open source. openai. python. yandexgpt. Код без границ.. ai code review. DevOps. fastapi. gigachat. github. Open source. openai. python. yandexgpt. Код без границ. ревью pull request.. ai code review. DevOps. fastapi. gigachat. github. Open source. openai. python. yandexgpt. Код без границ. ревью pull request. ревью кода.

Всем привет!

Недавно мы с приятелем обсуждали, как устроены рабочие процессы в бигтех-компаниях и какую роль в них уже играет ИИ. Речь в основном шла о зарубежных компаниях — у него там есть знакомые, которые делились опытом изнутри. Один из самых любопытных моментов — использование искусственного интеллекта для предварительного код-ревью в Pull Request: прежде чем коллеги возьмутся проверять изменения, PR уже анализирует ИИ и указывает на потенциальные проблемы.

Эта идея меня зацепила, и я решил изучить, какие готовые решения уже существуют (кроме встроенного в GitHub Copilot). Из более-менее крупных нашёл только PR Agent. Я протестировал его, но по ряду причин он мне не подошёл: хотелось больше гибкости, настройки под свои нужды и возможности запускать всё самостоятельно, без передачи кода сторонним сервисам.

Так родился проект ReVuself-hosted инструмент для автоматического код-ревью в Pull Request с помощью ИИ. Он универсален, легко кастомизируется и не требует доверять исходный код внешним платформам.

Если вам интересны подобные материалы и проекты, подписывайтесь на Telegram-канал «Код на салфетке» — там я делюсь гайдами для новичков, историями разработки и полезными инструментами.


ReVu

Наверняка вы спросите: почему именно ReVu?

Во-первых, название созвучно со словом review — короче, звучнее и проще запомнить.

Во-вторых, есть и шуточная версия (но с долей правды). Один из подписчиков моего чата как-то написал:

«Реву — это стабильное состояние моего ревьюера».

И в этом действительно есть смысл. Главная идея проекта — дать возможность ИИ “порыдать” над кодом первым 😅, чтобы выловить возможные ошибки и сомнительные решения ещё до того, как за дело возьмётся живой человек.

Процесс работы выглядит максимально просто:

  1. Разработчик пишет код.

  2. Коммитит изменения и открывает Pull Request.

  3. ИИ анализирует diff и оставляет комментарии по коду.

  4. Разработчик читает их, исправляет найденные косяки.

  5. Отправляет PR коллеге на финальное ревью.

Идея в том, чтобы повысить качество кода и ускорить процесс ревью. Человек-ревьюер сможет сосредоточиться на архитектуре, логике и сложных кейсах, а рутинные ошибки и очевидные проблемы будут отсеяны заранее. Это экономит время всей команды: PR уже “причесан” до того, как его увидит коллега.


Как ReVu работает?

ReVu — это self-hosted вебхук-сервис, который вы запускаете прямо у себя, без передачи кода внешним платформам.

Чтобы начать работу, нужно всего лишь настроить один конфигурационный файл:

  • Git-провайдер — может быть как публичный GitHub (в этом случае придётся настроить reverse-proxy, домен и SSL-сертификат), так и ваша собственная Gitea или GitLab, развернутая локально.

  • ИИ-провайдер — можно использовать облачные модели (например, OpenAI, DeepSeek, GigaChat), либо локальные решения, совместимые с API OpenAI или Ollama.

Дальше настраиваем вебхук на событие Pull Request в нужном репозитории или на уровне организации — и всё готово.

Дальнейший процесс выглядит так:

  1. Разработчик открывает PR.

  2. Git-провайдер отправляет вебхук в ReVu.

  3. ReVu принимает событие, проверяет подпись (чтобы убедиться, что запрос настоящий).

  4. Запрашивает у провайдера diff изменений.

  5. Передаёт diff в выбранную модель ИИ.

  6. Получает анализ и публикует его прямо в PR.

ReVu умеет оставлять комментарии в двух форматах:

  • Общий комментарий — один подробный отзыв по всему Pull Request.

  • Inline-комментарии — точечные замечания к конкретным строкам кода.

Так вы сами выбираете, что удобнее для вашего процесса: быстрый общий фидбек или детальное построчное ревью.


Запуск за 5 минут

Запустить ReVu проще простого:

Скачайте актуальный конфигурационный файл и отредактируйте его под свой проект:

mkdir -p config && wget -O settings.yaml https://raw.githubusercontent.com/proDreams/revu/refs/heads/main/config/settings.yaml.example

nano settings.yaml

Минимальная конфигурация:

# Формат ревью. Доступны варианты: "inline" и "comment"
REVIEW_MODE: "inline"  

GIT_PROVIDER_CONFIG:
  # Используемый git-провайдер.
  # Доступные варианты: "github" и "gitea"
  GIT_PROVIDER: "gitea"
  # Personal Access Token от учётной записи с правами repo
  GIT_PROVIDER_USER_TOKEN: "..."
  # Опциональный
  # URL git-провайдера. Применимо только к gitea.
  # Можно указать локальный инстанс, например, http://gitea:3000
  GIT_PROVIDER_URL: "https://..."
  # Секретный ключ для валидации вебхука
  GIT_PROVIDER_SECRET_TOKEN: "..."  

AI_PROVIDER_CONFIG:
  # Используемый ИИ-провайдер.
  # Доступные варианты: "openai", "openai_compatible", "gigachat" и "yandexgpt"
  AI_PROVIDER: "yandexgpt"
  # API-ключ от ИИ провайдера
  AI_PROVIDER_API_KEY: "..."
  # Опциональный
  # Базовый URL ИИ-провайдера.
  # Применимо только к openai_compatible
  AI_PROVIDER_BASE_URL: "..."  
  # Используемая ИИ модель
  AI_PROVIDER_MODEL: "yandexgpt"
  # Опционально
  # Параметр области действия.
  # Применимо только к "gigachat"
  AI_PROVIDER_SCOPE: "GIGACHAT_API_PERS"
  # Опционально
  # Идентификатор рабочей директории.
  # Применимо только к "yandexgpt"
  AI_PROVIDER_FOLDER_ID

Скачайте docker-compose.yaml:

wget -O docker-compose.yaml https://raw.githubusercontent.com/proDreams/revu/refs/heads/main/docker-compose.yaml

Запустите контейнер:

sudo docker compose up -d

Настройте вебхук на событие Pull Request в вашем репозитории (или на уровне организации).

Готово — ReVu начнёт автоматически анализировать новые PR и публиковать ревью.


Технический стек

В основе ReVu лежит FastAPI — лёгкий, быстрый и современный Python-фреймворк для веб-приложений и API. Он принимает входящие вебхуки от Git-провайдеров и с помощью Pydantic валидирует данные: проверяет структуру событий, типы полей и корректность переданной информации.

Для общения с внешними сервисами — как с Git-провайдерами, так и с ИИ-моделями — используется HTTPX. Эта библиотека хорошо работает в асинхронных приложениях и позволяет гибко управлять таймаутами, повторными попытками запросов и обработкой ошибок.

Архитектурно проект строится по принципам Domain-Driven Design (DDD). Да, возможно не в «каноничном» виде, но этого уже достаточно, чтобы обеспечить модульность и масштабируемость. Благодаря разделению на домены, инфраструктуру и интерфейсы, добавление нового ИИ-провайдера или интеграция с другим Git-сервисом сводится к созданию отдельных адаптеров и портов без необходимости переписывать ядро приложения.

Сборка и развёртывание автоматизированы с помощью Docker — проект можно поднять в пару команд без ручной настройки окружения. А CI/CD на основе GitHub Actions упрощает публикацию новых версий: при каждом обновлении кода создаются и загружаются готовые контейнерные образы, а также прогоняются проверки линтером (в будущем и тесты).


Планы на развитие

Развивать ReVu есть куда — и список идей уже внушительный.

Первая приоритетная цель — расширить поддержку провайдеров. Сейчас реализованы GitHub и Gitea, а в планах — добавить интеграции с GitLab, Bitbucket и другими популярными сервисами. Аналогично и для ИИ: хочется, чтобы ReVu работал не только с OpenAI, GigaChat и ЯндексGPT, но и с Gemini, Anthropic, DeepSeek, Qwen и другими моделями, включая локальные. Чем больше вариантов, тем проще будет встроить ReVu в существующий процесс без компромиссов.

Дальше — «чистовая» доработка проекта. Сейчас ReVu во многом вырос из эксперимента и проверки гипотезы, поэтому пока не хватает хорошего покрытия тестами и docstring-комментариев. План — привести код в порядок, сделать его более дружелюбным для контрибьюторов и надёжным в продакшене.

Есть и более амбициозная цель — поддержка нескольких Git-провайдеров на одном инстансе. Сейчас один развернутый ReVu работает только с одним провайдером. Я хочу, чтобы можно было подключать разные источники кода одновременно, что упростит жизнь командам, где смешаны GitHub, Gitea и, например, внутренние GitLab-сервера.

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

И ещё одна интересная идея — формат GitHub Action. Хотелось бы дать возможность запускать ReVu прямо в пайплайне GitHub Actions без необходимости поднимать отдельный сервер. Это особенно удобно для небольших проектов и open source.


Документация и репозиторий

На данный момент вся документация проекта находится прямо в README.md — там есть полноценная инструкция по запуску, описание конфигурации и список поддерживаемых провайдеров.

В будущем планирую вынести материалы в отдельную Wiki: добавить больше примеров, сценариев использования и расширенных гайдов по настройке.

Исходники и документацию можно найти здесь:

Если проект вам понравился, буду рад вашим звёздочкам ⭐️ на GitHub и любым идеям по улучшению. Pull Request’ы приветствуются!


Заключение

Так из случайного разговора с приятелем вырос целый проект. Я просто хотел разобраться, как ИИ может ускорить и упростить процесс ревью, а в итоге появился ReVu — инструмент, который уже помогает мне самому и, надеюсь, будет полезен и другим разработчикам, особенно тем, кто ценит качество кода и не хочет зависеть от сторонних сервисов.

Сейчас я отправил ReVu на конкурс open source-проектов «Код без границ», который проводят Хабр и GitVerse. Для меня это хороший повод показать работу сообществу и собрать обратную связь.

Если вам интересны подобные инструменты, истории разработки и гайды для разработчиков — заглядывайте в Telegram-канал «Код на салфетке». Там я делюсь опытом, рассказываю о новых проектах и публикую полезные материалы по Python, DevOps и не только.

Автор: proDream

Источник

Rambler's Top100