GitHub PR Review Agent

Что такое GitHub PR Review Agent

GitHub PR Review Agent — это автоматизированный AI-ревьюер на базе Hermes Agent, который мониторит ваши репозитории на GitHub, анализирует pull requests и доставляет структурированный фидбек. Агент работает полностью в фоновом режиме по расписанию и не требует ручного вмешательства.

Возможности

  • Автоматический ревью PR — анализ diff каждого пулл-реквеста с выявлением багов, проблем безопасности и нарушений конвенций команды
  • Мониторинг репозиториев — отслеживание нескольких репозиториев одновременно по расписанию (каждые 2 часа, несколько раз в день, еженедельно)
  • Доставка фидбека — результаты ревью автоматически отправляются в Telegram, публикуются прямо в GitHub или выводятся в виде дашборда
  • Персонализация — обучение агента стандартам и конвенциям конкретной команды через механизм памяти
  • Ручной запуск — возможность вызвать ревью по требованию командой hermes cron run pr-review

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

1. Проверка окружения

Для работы агента необходим установленный gh (GitHub CLI) с авторизованным токеном. Hermes Agent также должен быть настроен и запущен. Проверьте готовность:

# Авторизация в GitHub
gh auth status

# Доступ к репозиторию
gh pr list --repo OWNER/REPO --limit 3

# Шлюз Hermes запущен
hermes gateway status

Установите навыки для работы с GitHub через hermes skills install:

# Поиск доступных навыков GitHub
hermes skills search github

# Установка навыка Code Review
hermes skills install github-code-review

# Установка навыка PR Workflow
hermes skills install github-pr-workflow

# Установка навыка авторизации GitHub
hermes skills install github-auth

# Проверка установленных навыков
hermes skills list

3. Включение необходимых toolsets

Для работы PR Review Agent необходимы определённые наборы инструментов. Управляйте ими через hermes tools:

# Интерактивное управление (curses UI)
hermes tools

# Включение нужных toolsets
hermes tools enable terminal
hermes tools enable file
hermes tools enable web
hermes tools enable delegation
hermes tools enable messaging
hermes tools enable cronjob

# Проверка текущего состояния
hermes tools list

После изменения toolsets начните новую сессию (/reset в чате или новая команда hermes), чтобы изменения вступили в силу.

4. Пробное ревью вручную

Начните с простого теста — попросите Hermes отревьюить конкретный PR через чат:

Review PR #42 in myorg/backend-api — read the diff with `gh pr diff 42 --repo myorg/backend-api` and check for bugs, security issues, and missing tests.

Если результат устраивает — переходите к автоматизации.

5. Создание навыка ревью

Создайте файл code-review.md в директории навыков, чтобы задать формат и правила анализа:

## Формат ревью

Для каждой найденной проблемы:
- **Severity** — уровень серьёзности: Critical / Warning / Suggestion
- **What's wrong** — краткое описание проблемы
- **Fix** — рекомендация по исправлению

## Правила
- Цитировать проблемный код
- Не придираться к стилю без причины
- Если PR чист — сказать об этом
- В конце выдать вердикт: APPROVE / REQUEST_CHANGES / COMMENT

## Чек-лист
- Безопасность: SQL injection, XSS, hardcoded secrets
- Корректность: edge cases, error handling
- Тесты: покрытие новых путей
- Производительность: N+1 queries, blocking в async

6. Обучение конвенциям команды

Чтобы ревью были действительно полезными, обучите Hermes стандартам вашего проекта. Примеры:

  • «Мы используем Python с FastAPI, все эндпоинты должны иметь аннотации типов и Pydantic-модели»
  • «На фронте — TypeScript с React, тип any запрещён, все компоненты должны иметь props-интерфейсы»
  • «Тесты только в tests/ с pytest-фикстурами, сырой SQL запрещён»

Эти настройки сохраняются навсегда — агент будет применять их автоматически.

7. Настройка автоматического расписания

Создайте cron-задачу для регулярного мониторинга. Агент будет проверять открытые PR, анализировать diff и отправлять отчёт:

# Каждые 2 часа
hermes cron create "0 */2 * * *" --name "pr-review" --deliver telegram --skill code-review

# Три раза в день по будням
hermes cron create "0 9,13,17 * * 1-5" --name "pr-review-workday" --deliver telegram

# Еженедельный понедельничный обзор
hermes cron create "0 9 * * 1" --name "pr-review-weekly" --deliver telegram

# Каждые 30 минут для высоконагруженных репозиториев
hermes cron create "30m" --name "pr-review-frequent" --deliver telegram

Интеграция с GitHub CLI (gh)

PR Review Agent использует gh (GitHub CLI) для взаимодействия с GitHub API. Основные команды, которые использует агент:

# Просмотр PR
gh pr view 123
gh pr diff 123
gh pr diff 123 --name-only

# Проверка CI статуса
gh pr checks 123
gh pr checks 123 --watch

# Публикация ревью
gh pr review 123 --approve --body "LGTM!"
gh pr review 123 --request-changes --body "See inline comments."
gh pr review 123 --comment --body "Some suggestions."

# Комментирование
gh pr comment 123 --body "Overall looks good."

# Checkout PR для локального анализа
gh pr checkout 123

Если gh недоступен, агент автоматически переключается на curl + GitHub REST API с токеном из GITHUB_TOKEN.

Использование delegate_task для ревью

Для ревью больших PR или параллельной обработки нескольких репозиториев используйте delegate_task — механизм делегирования подзадач:

# Делегировать ревью конкретного PR подагенту
delegate_task(
    task="Review PR #42 in myorg/backend-api for bugs and security issues",
    run_in_background=True
)

# Параллельное ревью нескольких PR
delegate_task(task="Review PR #10 in org/repo-a", run_in_background=True)
delegate_task(task="Review PR #25 in org/repo-b", run_in_background=True)
delegate_task(task="Review PR #8 in org/repo-c", run_in_background=True)

delegate_task запускает отдельный экземпляр агента с собственной конверсацией. Подходит для быстрых подзадач (минуты). Для длительных миссий используйте полный процесс Hermes:

# Запуск полного агента для долгого мониторинга
hermes chat -q "Monitor all open PRs in myorg/* and produce a weekly report" --background

Продвинутые сценарии

Публикация ревью прямо в GitHub

Вместо отправки в Telegram агент может комментировать PR непосредственно на GitHub через gh pr review. Для критических замечаний — запросить изменения, для чистых PR — одобрить автоматически.

Еженедельный PR-дашборд

Создайте задачу для еженедельного обзора всех репозиториев: количество открытых PR, самые старые, забытые без ревьюера, merged за неделю. Формируется единый отчёт и доставляется в Telegram.

Мульти-репозиторный мониторинг

Масштабирование происходит просто — добавьте больше репозиториев в промпт. Агент обрабатывает их последовательно без дополнительной настройки.

Атомарный инлайн-ревью с множеством комментариев

Для отправки нескольких инлайн-комментариев одним ревью используйте GitHub API:

HEAD_SHA=$(gh pr view 123 --json headRefOid --jq '.headRefOid')

gh api repos/OWNER/REPO/pulls/123/reviews   --method POST   -f commit_id="$HEAD_SHA"   -f event="REQUEST_CHANGES"   -f body="Found 2 issues. See inline comments."   -f comments[0][path]="src/auth.py"   -f comments[0][line]=45   -f comments[0][body]="SQL injection: use parameterized queries."   -f comments[1][path]="src/models.py"   -f comments[1][line]=23   -f comments[1][body]="Password stored without hashing."

Решение проблем

  • gh: command not found — установите GitHub CLI: sudo apt install gh или brew install gh, затем gh auth login
  • Слишком общие ревью — добавьте навык code-review и обучите агента конвенциям через память
  • Cron не запускается — проверьте hermes gateway status и hermes cron list
  • Лимиты GitHub API — 5000 запросов/час для авторизованных пользователей, одно ревью использует 3–5 запросов
  • send_message не работает в cron — добавьте messaging в enabled_toolsets задачи: hermes cron edit ID
  • Toolset не активен — проверьте hermes tools list, включите нужные через hermes tools enable NAME, затем /reset

Ссылки