Всем привет!
Недавно мы с приятелем обсуждали, как устроены рабочие процессы в бигтех-компаниях и какую роль в них уже играет ИИ. Речь в основном шла о зарубежных компаниях — у него там есть знакомые, которые делились опытом изнутри. Один из самых любопытных моментов — использование искусственного интеллекта для предварительного код-ревью в Pull Request: прежде чем коллеги возьмутся проверять изменения, PR уже анализирует ИИ и указывает на потенциальные проблемы.
Эта идея меня зацепила, и я решил изучить, какие готовые решения уже существуют (кроме встроенного в GitHub Copilot). Из более-менее крупных нашёл только PR Agent. Я протестировал его, но по ряду причин он мне не подошёл: хотелось больше гибкости, настройки под свои нужды и возможности запускать всё самостоятельно, без передачи кода сторонним сервисам.
Так родился проект ReVu — self-hosted инструмент для автоматического код-ревью в Pull Request с помощью ИИ. Он универсален, легко кастомизируется и не требует доверять исходный код внешним платформам.
Если вам интересны подобные материалы и проекты, подписывайтесь на Telegram-канал «Код на салфетке» — там я делюсь гайдами для новичков, историями разработки и полезными инструментами.
ReVu
Наверняка вы спросите: почему именно ReVu?
Во-первых, название созвучно со словом review — короче, звучнее и проще запомнить.
Во-вторых, есть и шуточная версия (но с долей правды). Один из подписчиков моего чата как-то написал:
«Реву — это стабильное состояние моего ревьюера».
И в этом действительно есть смысл. Главная идея проекта — дать возможность ИИ “порыдать” над кодом первым ?, чтобы выловить возможные ошибки и сомнительные решения ещё до того, как за дело возьмётся живой человек.
Процесс работы выглядит максимально просто:
Разработчик пишет код.
Коммитит изменения и открывает Pull Request.
ИИ анализирует
diff
и оставляет комментарии по коду.Разработчик читает их, исправляет найденные косяки.
Отправляет PR коллеге на финальное ревью.
Идея в том, чтобы повысить качество кода и ускорить процесс ревью. Человек-ревьюер сможет сосредоточиться на архитектуре, логике и сложных кейсах, а рутинные ошибки и очевидные проблемы будут отсеяны заранее. Это экономит время всей команды: PR уже “причесан” до того, как его увидит коллега.
Как ReVu работает?
ReVu — это self-hosted вебхук-сервис, который вы запускаете прямо у себя, без передачи кода внешним платформам.
Чтобы начать работу, нужно всего лишь настроить один конфигурационный файл:
Git-провайдер — может быть как публичный GitHub (в этом случае придётся настроить reverse-proxy, домен и SSL-сертификат), так и ваша собственная Gitea или GitLab, развернутая локально.
ИИ-провайдер — можно использовать облачные модели (например, OpenAI, DeepSeek, GigaChat), либо локальные решения, совместимые с API OpenAI или Ollama.
Дальше настраиваем вебхук на событие Pull Request в нужном репозитории или на уровне организации — и всё готово.
Дальнейший процесс выглядит так:
Разработчик открывает PR.
Git-провайдер отправляет вебхук в ReVu.
ReVu принимает событие, проверяет подпись (чтобы убедиться, что запрос настоящий).
Запрашивает у провайдера diff изменений.
Передаёт diff в выбранную модель ИИ.
Получает анализ и публикует его прямо в 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 и не только.
Комментарии (6)
x4team_only
09.10.2025 08:11А какже sonarqube?
proDream Автор
09.10.2025 08:11Не использовал SonarQube, но как я понимаю он для статического анализа кода.
Сомневаюсь, что он может распознать, например, неэффективный код, с чем вполне может справится ИИ. А для статических проверок вполне хватает pre-commit.
x4team_only
09.10.2025 08:11И второй момент, ReVu работает только в контексте изменений в PR, или же в целом по всей кодовой базе и анализирует, или хотя бы в котексте соседнего кода? И сохраняет ли он историю по ревью?
proDream Автор
09.10.2025 08:11Только в контексте diff'а открытого PR. Сохранение истории, а именно учёт предыдущих комментариев тоже в планах реализовать.
Arduinum
Реву это состояние после кода ревью на утро пятницы?)
proDream Автор
Перманентно)