🤖 Self-hosted AI code review для ваших Pull Requests.
ReVu — это self-hosted вебхук-сервис для автоматического code review с помощью ИИ. Он принимает вебхуки от Git-провайдеров (сейчас поддерживаются GitHub и Gitea, другие — в планах), анализирует изменения в Pull Request и публикует результат прямо в PR.
Основная идея — разгрузить команду и повысить качество кода. Прежде чем ваш коллега возьмётся за ревью, PR уже проверит ИИ и укажет на потенциальные проблемы. ReVu — не сторонний сервис, а self-hosted инструмент, который вы разворачиваете у себя.
- Два режима работы
- Комментарий (
comment) — единый подробный отзыв по всему Pull Request. - Инлайн (
inline) — точечные комментарии к конкретным изменениям в коде.
- Комментарий (
- Гибкая интеграция
- Поддержка GitHub, Gitea и Bitbucket (расширение до GitLab, и др. в планах).
- Совместимость с OpenAI API и его альтернативами (OpenRouter, LocalAI и др.), также Российскими ИИ-провайдерами: GigaChat и YandexGPT.
- Полностью self-hosted
- Разворачивается на ваших серверах без передачи данных третьим лицам.
- Можно использовать локальные модели (например, DeepSeek, Qwen), запуская их отдельно в вашей инфраструктуре.
- Простая конфигурация
- Настройка через один YAML-файл.
- Возможность задать количество повторов при неудачных запросах и таймауты.
- FastAPI (Python 3.13) — API и вебхук-обработчик
- HTTPX — HTTP-клиент для работы с Git- и AI-провайдерами
- OpenAI SDK — интеграция с LLM
- Docker — для удобного развертывания
- Поддержка других Git-провайдеров:
- GitLab
- Bitbucket (спасибо lanity_roshoose)
-
GitVerseНет доступного API
- Поддержка дополнительных AI-провайдеров:
- Gemini
- DeepSeek
- Anthropic
- Qween
- GigaChat
- YandexGPT
- Гибкая настройка кастомных промптов для ревью
- Подробная документация по конфигурации и запуску
- Англоязычная версия README
- Покрытие тестами - Coverage 92%
- Больше документации и Docstrings во всём коде
Для корректной работы ReVu потребуется:
-
Доменное имя с настроенным SSL-сертификатом
- Обязательно при использовании GitHub или при удалённом подключении к Gitea.
- Если Gitea и ReVu работают на одном сервере — можно использовать Docker-сеть без SSL.
-
Персональный токен доступа (PAT) от вашего Git-провайдера
- Для GitHub требуется именно PAT Classic с правами на
repo. - Для Gitea достаточно токена с доступом к Pull Requests и репозиторию.
- Для GitHub требуется именно PAT Classic с правами на
-
API-ключ от ИИ-провайдера
- Сейчас поддерживаются OpenAI API и совместимые сервисы (OpenRouter, LocalAI).
Для того чтобы запустить проект, достаточно выполнить несколько шагов:
- Подключитесь по SSH к серверу и в удобном месте создайте директорию для проекта:
mkdir revu && cd revu
- Скачайте конфигурационный файл и пропишите настройки:
- Скачайте файл:
- Упрощённый:
mkdir -p config && wget -O settings.yaml https://raw.githubusercontent.com/proDreams/revu/refs/heads/main/config/settings.yaml.example - Полный:
mkdir -p config && wget -O settings.yaml https://raw.githubusercontent.com/proDreams/revu/refs/heads/main/config/settings.yaml.example_full
- Упрощённый:
- Откройте файл для редактирования:
nano settings.yaml
- Заполните следующие параметры:
REVIEW_MODE- формат ревью. Доступные варианты:"comment"- один большой комментарий к Pull Request"inline"- точечные комментарии к конкретным участкам кода
GIT_PROVIDER_CONFIG- настройки Git-провайдера:GIT_PROVIDER- используемый Git-провайдер. Доступные варианты:"github""gitea"
GIT_PROVIDER_USER_TOKEN- персональный токен доступа (PAT) от вашего Git-провайдера- (необязательно)
GIT_PROVIDER_URL- URL Git-провайдера. Применяется к Gitea. GIT_PROVIDER_SECRET_TOKEN- случайный набор символов. Используется для валидации входящего вебхука от Git-провайдера.- (необязательно)
GIT_PROVIDER_REVIEWER- только для BitBucket. Username от имени которого будет производиться ревью.
AI_PROVIDER_CONFIG- настройки ИИ-провайдера:AI_PROVIDER- используемый ИИ-провайдер. Доступные варианты:"openai"- официальный API от OpenAI"openai_compatible"- совместимый с OpenAI провайдер"gigachat"- официальный GigaChat"yandexgpt"- официальный YandexGPT
AI_PROVIDER_API_KEY- API Ключ от ИИ-провайдера- (необязательно)
AI_PROVIDER_BASE_URL- URL от OpenAI-совместимого провайдера AI_PROVIDER_MODEL- используемая модель (например,gpt-4o-mini)- (необязательно)
AI_PROVIDER_SCOPE- только для GigaChat. Определяет используемую версию GigaChat, указан в личном кабинете. - (необязательно)
AI_PROVIDER_FOLDER_ID- только для YandexGPT. Идентификатор рабочей директории, указан в личном кабинете.
LOG_LEVEL- уровень логирования (DEBUG,INFO,WARNING,ERROR,CRITICAL)
- Сохраните и выйдите, нажав CTRL+S, затем CTRL+X.
- Скачайте файл:
- Скачайте docker-compose-файл:
wget -O docker-compose.yaml https://raw.githubusercontent.com/proDreams/revu/refs/heads/main/docker-compose.yaml
- Запустите проект:
sudo docker compose up -d
- Настройте reverse-proxy (Caddy, NGINX и др.):
- Обязательно при работе с публичным GitHub.
- Если Gitea и ReVu в одной Docker-сети, прокси можно не использовать.
Для обновления достаточно выполнить команду:
sudo docker compose pull && sudo docker compose up -dПрограмма написана в рамках проекта "Код на салфетке":
- Сайт: https://pressanybutton.ru/
- Telegram-канал: https://t.me/press_any_button
Если вам нравится этот проект и вы хотите поддержать его дальнейшее развитие, рассмотрите возможность доната:
Ваша поддержка помогает проекту развиваться и улучшать будущие функции!
Этот проект распространяется под лицензией MIT. Подробности можно найти в файле LICENSE.