revu

Форк из proDreams/revu
0

Описание

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

Языки

  • Python98,6%
  • Dockerfile1,2%
  • Makefile0,2%
Эта ветка отстает от базовой proDreams/revu/main на 26 коммитов
README.md

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 (расширение до 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 и репозиторию.
  • API-ключ от ИИ-провайдера

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

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

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

  1. Подключитесь по SSH к серверу и в удобном месте создайте директорию для проекта:
  2. Скачайте конфигурационный файл и пропишите настройки:
    1. Скачайте файл:
      • Упрощённый:
      • Полный:
    2. Откройте файл для редактирования:
    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-провайдера.
      • 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-файл:
  4. Запустите проект:
  5. Настройте reverse-proxy (Caddy, NGINX и др.):
    • Обязательно при работе с публичным GitHub.
    • Если Gitea и ReVu в одной Docker-сети, прокси можно не использовать.

Обновление

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

Автор

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


Поддержка

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

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


Лицензия

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