Автоматический AI-агент для ревью Pull Request-ов в GitHub с отправкой отчётов в Telegram-бота.
- Автоматический запуск: Срабатывает на открытие или обновление PR в GitHub Actions (
opened,synchronize). - Умная фильтрация: Игнорирует lock-файлы (
package-lock.json,poetry.lockи др.), бинарные файлы, минимизированный код и ассеты, экономя токены и время. - Глубокий анализ кода: Проверяет логику, потенциальные баги, уязвимости безопасности (OWASP), производительность и архитектуру.
- Построчные комментарии: Оставляет замечания непосредственно к конкретным строкам кода в GitHub PR.
- Официальный вердикт: Выставляет вердикт (
APPROVE,REQUEST_CHANGESилиCOMMENT) с оценкой от 1 до 10. - Мгновенные уведомления в Telegram: Присылает аккуратную карточку с вердиктом, оценкой, резюме и ссылкой на PR прямо в чат команды или личку.
- Мультипровайдерность: Поддерживает Google Gemini (бесплатный тариф), DeepSeek, Groq, OpenAI или локальные модели через Ollama.
[Разработчик открыл PR]
│
▼
[GitHub Actions Workflow]
│
├──► 1. Скачивает diff и отсекает шумные файлы
├──► 2. Отправляет diff в LLM (Gemini / DeepSeek / OpenAI)
├──► 3. Публикует Review и комментарии к строкам в GitHub PR
└──► 4. Отправляет итоговую карточку в Telegram Bot
-
Клонируйте репозиторий и установите зависимости:
pip install -r requirements.txt
-
Скопируйте шаблон переменных окружения:
cp .env.example .env
-
Заполните
.env:GITHUB_TOKEN=ghp_... GITHUB_REPOSITORY=owner/repo PR_NUMBER=1 TELEGRAM_BOT_TOKEN=123456:ABC-DEF... TELEGRAM_CHAT_ID=123456789 LLM_PROVIDER=gemini LLM_API_KEY=AIzaSy...
-
Запустите агент:
python main.py --repo owner/repo --pr 1
Перейдите в Settings → Secrets and variables → Actions → Repository secrets и добавьте:
| Секрет | Описание |
|---|---|
LLM_API_KEY |
API-ключ выбранного провайдера (например, Gemini из Google AI Studio) |
TELEGRAM_BOT_TOKEN |
Токен бота от @BotFather |
TELEGRAM_CHAT_ID |
ID чата или группы (можно узнать у @userinfobot) |
ℹ️ Примечание:
GITHUB_TOKENгенерируется GitHub автоматически при каждом запуске воркфлоу, добавлять его вручную не нужно.
В Settings → Secrets and variables → Actions → Variables:
LLM_PROVIDER:gemini(по умолчанию),deepseek,groq,openaiLLM_MODEL: Название модели (например,gemini-2.5-flash,deepseek-chat,gpt-4o-mini)MAX_DIFF_LINES: Лимит строк diff (по умолчанию1500)
Перейдите в Settings → Actions → General → Workflow permissions и убедитесь, что выбрано:
- Read and write permissions (необходимо, чтобы агент мог оставлять комментарии и ревью в PR).
🤖 AI Code Review | owner/repo
PR: #42 Add OAuth2 Authentication
👤 Автор: @developer
📊 Вердикт: ⚠️ Требуются правки (Changes Requested)
📈 Оценка качества: ⭐️⭐️⭐️ (6/10)
📝 Резюме:
Добавлена аутентификация через OAuth2. Реализация в целом хорошая,
но обнаружена уязвимость отсутствия проверки state-параметра (CSRF)
и потенциальная утечка токена в логах.
🔍 Ключевые моменты:
• ✅ Чистая структура роутов и middleware
• ⚠️ Отсутствует CSRF-токен в callback-обработчике
• ⚠️ Токен доступа логируется на уровне INFO
💬 Замечаний в коде: 2
└ src/auth/oauth.py:48: Отсутствует валидация параметра state (CSRF уязвимость).
└ src/auth/oauth.py:72: Чувствительный access_token выводится в логи.
🔗 Открыть Pull Request на GitHub
python3 -m unittest discover testsMIT