Skip to content

proDreams/revu

Repository files navigation

Napkin Tools: ReVu

🤖 Self-hosted AI code review для ваших Pull Requests.

GitHub License GitHub Actions Workflow Status Код на салфетке Заметки на салфетке Кот на салфетке

ReVu


Оглавление

  1. О проекте
  2. Ключевые возможности
  3. Технологии
  4. ToDo
  5. Требования
  6. Быстрый старт
  7. Автор
  8. Поддержка
  9. Лицензия

О проекте

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 — для удобного развертывания

ToDo

  • Поддержка других 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 и репозиторию.
  • API-ключ от ИИ-провайдера

    • Сейчас поддерживаются OpenAI API и совместимые сервисы (OpenRouter, LocalAI).

Быстрый старт

Для того чтобы запустить проект, достаточно выполнить несколько шагов:

  1. Подключитесь по SSH к серверу и в удобном месте создайте директорию для проекта:
    mkdir revu && cd revu
  2. Скачайте конфигурационный файл и пропишите настройки:
    1. Скачайте файл:
      • Упрощённый:
        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
    2. Откройте файл для редактирования:
      nano settings.yaml
    3. Заполните следующие параметры:
      • 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)
    4. Сохраните и выйдите, нажав CTRL+S, затем CTRL+X.
  3. Скачайте docker-compose-файл:
    wget -O docker-compose.yaml https://raw.githubusercontent.com/proDreams/revu/refs/heads/main/docker-compose.yaml
  4. Запустите проект:
    sudo docker compose up -d
  5. Настройте reverse-proxy (Caddy, NGINX и др.):
    • Обязательно при работе с публичным GitHub.
    • Если Gitea и ReVu в одной Docker-сети, прокси можно не использовать.

Обновление

Для обновления достаточно выполнить команду:

sudo docker compose pull && sudo docker compose up -d

Автор

Программа написана в рамках проекта "Код на салфетке":


Поддержка

Если вам нравится этот проект и вы хотите поддержать его дальнейшее развитие, рассмотрите возможность доната:

Ваша поддержка помогает проекту развиваться и улучшать будущие функции!


Лицензия

Этот проект распространяется под лицензией MIT. Подробности можно найти в файле LICENSE.

About

🤖 Self-hosted AI code review for your Pull Requests.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors 2

  •  
  •  

Languages