revu
Описание
🤖 Self-hosted AI code review для ваших Pull Requests.
Языки
- Python98,6%
- Dockerfile1,2%
- Makefile0,2%
Napkin Tools: ReVu
🤖 Self-hosted AI code review для ваших Pull Requests.
Оглавление
О проекте
ReVu — это self-hosted вебхук-сервис для автоматического code review с помощью ИИ. Он принимает вебхуки от Git-провайдеров (сейчас поддерживаются GitHub и Gitea, другие — в планах), анализирует изменения в Pull Request и публикует результат прямо в PR.
Основная идея — разгрузить команду и повысить качество кода. Прежде чем ваш коллега возьмётся за ревью, PR уже проверит ИИ и укажет на потенциальные проблемы. ReVu — не сторонний сервис, а self-hosted инструмент, который вы разворачиваете у себя.
Ключевые возможности
- Два режима работы
- Комментарий (
) — единый подробный отзыв по всему Pull Request.comment - Инлайн (
) — точечные комментарии к конкретным изменениям в коде.inline
- Комментарий (
- Гибкая интеграция
- Поддержка GitHub и Gitea (расширение до GitLab, Bitbucket и др. в планах).
- Совместимость с OpenAI API и его альтернативами (OpenRouter, LocalAI и др.), также Российскими ИИ-провайдерами: GigaChat и YandexGPT.
- Полностью self-hosted
- Разворачивается на ваших серверах без передачи данных третьим лицам.
- Можно использовать локальные модели (например, DeepSeek, Qwen), запуская их отдельно в вашей инфраструктуре.
- Простая конфигурация
- Настройка через один YAML-файл.
- Возможность задать количество повторов при неудачных запросах и таймауты.
Технологии
- FastAPI (Python 3.13) — API и вебхук-обработчик
- HTTPX — HTTP-клиент для работы с Git- и AI-провайдерами
- OpenAI SDK — интеграция с LLM
- Docker — для удобного развертывания
ToDo
- Поддержка других Git-провайдеров:
- GitLab
- Bitbucket
-
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 к серверу и в удобном месте создайте директорию для проекта:
- Скачайте конфигурационный файл и пропишите настройки:
- Скачайте файл:
- Упрощённый:
- Полный:
- Упрощённый:
- Откройте файл для редактирования:
- Заполните следующие параметры:
- формат ревью. Доступные варианты:REVIEW_MODE- один большой комментарий к Pull Request"comment"- точечные комментарии к конкретным участкам кода"inline"
- настройки Git-провайдера:GIT_PROVIDER_CONFIG- используемый Git-провайдер. Доступные варианты:GIT_PROVIDER- "github"
- "gitea"
- персональный токен доступа (PAT) от вашего Git-провайдераGIT_PROVIDER_USER_TOKEN- (необязательно)
- URL Git-провайдера. Применяется к Gitea.GIT_PROVIDER_URL - случайный набор символов. Используется для валидации входящего вебхука от Git-провайдера.GIT_PROVIDER_SECRET_TOKEN
- настройки ИИ-провайдера:AI_PROVIDER_CONFIG- используемый ИИ-провайдер. Доступные варианты:AI_PROVIDER- официальный API от OpenAI"openai"- совместимый с OpenAI провайдер"openai_compatible"- официальный GigaChat"gigachat"- официальный YandexGPT"yandexgpt"
- API Ключ от ИИ-провайдераAI_PROVIDER_API_KEY- (необязательно)
- URL от OpenAI-совместимого провайдераAI_PROVIDER_BASE_URL - используемая модель (например,AI_PROVIDER_MODEL)gpt-4o-mini- (необязательно)
- только для GigaChat. Определяет используемую версию GigaChat, указан в личном кабинете.AI_PROVIDER_SCOPE - (необязательно)
- только для YandexGPT. Идентификатор рабочей директории, указан в личном кабинете.AI_PROVIDER_FOLDER_ID
- уровень логирования (LOG_LEVEL,DEBUG,INFO,WARNING,ERROR)CRITICAL
- Сохраните и выйдите, нажав CTRL+S, затем CTRL+X.
- Скачайте файл:
- Скачайте docker-compose-файл:
- Запустите проект:
- Настройте reverse-proxy (Caddy, NGINX и др.):
- Обязательно при работе с публичным GitHub.
- Если Gitea и ReVu в одной Docker-сети, прокси можно не использовать.
Обновление
Для обновления достаточно выполнить команду:
Автор
Программа написана в рамках проекта "Код на салфетке":
- Сайт: https://pressanybutton.ru/
- Telegram-канал: https://t.me/press_any_button
Поддержка
Если вам нравится этот проект и вы хотите поддержать его дальнейшее развитие, рассмотрите возможность доната:
Ваша поддержка помогает проекту развиваться и улучшать будущие функции!
Лицензия
Этот проект распространяется под лицензией MIT. Подробности можно найти в файле LICENSE.