AI-код-ревьюер для GitHub pull request'ов. Берёт diff PR, прогоняет через LLM и
оставляет review с вердиктом — APPROVE / REQUEST_CHANGES / COMMENT —
с комментариями прямо на строках кода.
По умолчанию заточен под Android, но фокус ревью — это профиль, который настраивается под любое направление (backend, web, KMP, безопасность — что угодно). Работает тремя способами: авто-ревью на каждый PR через GitHub Actions, разовое ревью из терминала и как webhook-сервис.
- ✅ Вердикт + inline-комментарии — замечания вешаются на конкретные строки diff.
- 🔁 Любая LLM — DeepSeek, OpenAI, Claude или локальная модель (Ollama / LM Studio / vLLM, без ключа и без облака). Переключается одной командой.
- 🎯 Профили ревью под любое направление — из коробки Android (
android,compose,kmp); свои профили под что угодно добавляются без правки кода. - 🤖 Авто-режим
auto— сам определяет, про что PR, и запускает подходящие профили, даже несколько сразу. - 🖥️ Дружелюбный CLI — мастер настройки со скрытым вводом ключа,
doctor, разовое ревью, управление профилями и провайдерами.
pipx install git+https://github.com/Sermage/pr-reviewerСтавит команду pr-reviewer в систему — без клонирования и возни с venv.
Конфиг и свои профили живут в ~/.pr-reviewer/. Дальше сразу pr-reviewer setup.
Идеально для ревью из терминала. (Нет pipx — brew install pipx.)
git clone https://github.com/Sermage/pr-reviewer
cd pr-reviewer
./install.shinstall.sh создаёт локальное окружение, ставит зависимости и сразу предлагает
настройку. Здесь .env, свои профили и workflow лежат в репозитории (едут в
Actions). Он также кладёт симлинк в ~/.local/bin, так что команда pr-reviewer
доступна глобально (если ~/.local/bin в PATH — install.sh подскажет, как
добавить). Прямо из папки репозитория всегда работает лаунчер ./pr-reviewer <команда> без активации venv.
Мастер проведёт по шагам: окружение → провайдер LLM → ключ (вводится скрыто) → профиль → GitHub Actions.
pr-reviewer setup # интерактивная настройка
pr-reviewer doctor # проверить, что всё на местеПри установке через pipx команда глобальная — пиши
pr-reviewerкак есть. В варианте с репозиторием без активации venv добавляй./:./pr-reviewer <команда>.
pr-reviewer setup # интерактивная настройка
pr-reviewer doctor # проверить настройку
pr-reviewer review --pr 1 --dry-run # разовое ревью PR (показать, не постить)
pr-reviewer review --repo o/n --pr 1 # ревью и публикация в PR
pr-reviewer profile # профили ревью
pr-reviewer provider # LLM-провайдеры
pr-reviewer serve # webhook-сервис локально
pr-reviewer update # обновить до свежей версии
pr-reviewer uninstall # удалить сервис
pr-reviewer help # все командыreview берёт токен из GITHUB_TOKEN или gh auth token, ключ и настройки —
из .env. Флаги: --profile <имя>, --dry-run, --approve.
pr-reviewer provider # список + активный
pr-reviewer provider claude # Claude API
pr-reviewer provider openai --model gpt-4o
pr-reviewer provider local # локальная модель (Ollama по умолчанию)| Провайдер | Модель по умолчанию | Ключ |
|---|---|---|
deepseek |
deepseek-chat |
нужен |
openai |
gpt-4o-mini |
нужен |
claude |
claude-sonnet-5 |
нужен |
local |
qwen2.5-coder (Ollama) |
не нужен |
Локальная модель целиком офлайн:
ollama pull qwen2.5-coder
pr-reviewer provider local
pr-reviewer review --pr 1 --dry-runpr-reviewer profile # список + активный
pr-reviewer profile compose # переключить фокус
pr-reviewer profile auto # авто-режим (оркестратор)Свой профиль — без правки кода:
pr-reviewer profile --add security --from security.md # из файла
pr-reviewer profile --add gradle --focus "Проверяй version catalogs, ..."
pr-reviewer profile --show security # посмотреть, что проверяет
pr-reviewer profile --edit security # отредактировать ($EDITOR)
pr-reviewer profile --remove securitypr-reviewer profile auto включает оркестратор: он сам смотрит на diff,
определяет направления PR и запускает подходящие профили (несколько при
необходимости). Если для найденного направления профиля нет — использует
дефолтный и честно пишет в заключении, что точность по этому направлению снижена
и какой профиль стоит добавить.
pr-reviewer update # подтянуть свежую версию
pr-reviewer uninstall # удалить сервисupdate в варианте-репозитории делает git pull и переустанавливает
зависимости; при установке через pipx — pipx upgrade.
uninstall снимает глобальный симлинк и (по подтверждению) удаляет конфиг.
Полное удаление зависит от способа установки:
# репозиторий:
./uninstall.sh # удалит .venv и симлинк (спросит про .env)
rm -rf pr-reviewer # и саму папку клона
# pipx:
pipx uninstall ai-pr-reviewerРевьюить можно любой репозиторий (например, свой Android-проект) — код ревьюера туда копировать не нужно, workflow ставит его из git сам.
Мастер pr-reviewer setup (если gh авторизован) делает всё за тебя: спросит
целевой репозиторий, положит секрет LLM_API_KEY, переменные
LLM_PROVIDER/LLM_MODEL/LLM_BASE_URL/REVIEW_PROFILE и закоммитит
workflow ai-review.yml в дефолтную ветку этого репозитория. После этого
ревью запускается на каждый PR (opened / synchronize / reopened).
Добавить/обновить workflow отдельно (или в другой репозиторий):
pr-reviewer install-workflow --repo owner/name # закоммитит workflow через gh
pr-reviewer install-workflow --print # просто показать YAMLУбрать авто-ревью из репозитория (workflow + секрет + переменные) — например, чтобы переустановить с нуля:
pr-reviewer uninstall-workflow --repo owner/name
⚠️ Workflow должен лежать в дефолтной ветке целевого репозитория — GitHub берёт определение workflow для PR именно оттуда. Провайдерlocalв Actions не работает (нет доступа к твоемуlocalhost) — используй облачный.
Вручную нужны: секрет LLM_API_KEY и (опционально) variables REVIEW_PROFILE,
LLM_PROVIDER, LLM_MODEL, LLM_BASE_URL.
Третий способ работы (помимо GitHub Actions и разового review): поднять
свой постоянно работающий сервис, который сам принимает события от GitHub и
ревьюит PR. Полезно, когда нужен единый бот на много репозиториев, свой сервер
или кастомная логика — вместо запуска ревью внутри CI.
Для «просто авто-ревью на каждый PR» это не нужно — проще GitHub Actions: ничего не надо держать запущенным.
serve— для тех, кому нужен собственный сервис.
pr-reviewer serve # слушает http://localhost:8000
pr-reviewer serve --port 9000 # другой порт
pr-reviewer serve --reload # автоперезагрузка при правках кода (для разработки)Настройки берутся из .env (провайдер, ключ, WEBHOOK_SECRET) — заполни его
через pr-reviewer setup или вручную (cp .env.example .env).
POST /webhook— принимает события GitHub. Наpull_request(opened/synchronize/reopened) проверяет подписьX-Hub-Signature-256, сразу отвечает202, а ревью считает в фоне: берёт diff PR, прогоняет через LLM (профиль/оркестратор) и постит review с вердиктом и inline-комментариями. Событиеping→pong.GET /health— проверка живости:{"status": "ok"}.
GitHub не достучится до localhost — пробрось туннель наружу и укажи
публичный URL в репозитории: Settings → Webhooks → Add webhook
(Payload URL = <url>/webhook, Content type = application/json,
Secret = то же, что WEBHOOK_SECRET в .env, событие = Pull requests).
pr-reviewer serve
# в отдельном терминале — туннель на localhost:8000:
npx smee-client --url https://smee.io/<channel> --target http://localhost:8000/webhook
# или: ngrok http 8000 (URL из вывода ngrok → в Payload URL вебхука)После этого сервис ревьюит каждый новый/обновлённый PR, пока запущен.
Прогнать конвейер на сохранённом diff (удобно для показа):
LLM_API_KEY=sk-... python scripts/demo_local.py samples/sample.diff
python scripts/demo_local.py samples/sample.diff --profile autopytestКак устроено внутри — docs/ARCHITECTURE.md.