Open Code Review через RouterAI: AI-ревью кода в терминале и CI
Open Code Review
Open Code Review (команда ocr) — CLI для AI-ревью кода от Alibaba, написанный на Go. Он читает git-диффы, отправляет изменённые файлы модели через агента с инструментами (чтение файлов, поиск по репозиторию) и выводит замечания с привязкой к строкам, категорией и серьёзностью. Работает как отдельная команда ocr review, как плагин Claude Code (/open-code-review:review) и в CI (GitHub Actions, GitLab CI). Репозиторий: alibaba/open-code-review.
ocr не привязан к одному вендору: модель задаётся как провайдер в конфиге. RouterAI подключается как custom provider с OpenAI-совместимым Base URL, поэтому для ревью доступны Claude, GPT, DeepSeek, GLM и Qwen из каталога моделей, работа из России без VPN и оплата в рублях.
Важно: ocr review использует собственную конфигурацию провайдера, а не подписку Claude Code. Даже если вы запускаете его из Claude Code, запросы к модели идут через настроенный в ocr провайдер, то есть через RouterAI.
Требования
- Git 2.41 или новее (указано в README) и репозиторий с изменениями
- npm (Node.js) либо Homebrew, либо установочный скрипт
- API-ключ RouterAI из личного кабинета
- Модель с нативным вызовом инструментов (tool calling):
ocrведёт ревью целиком через вызовы инструментов, модель без них не заработает
Установка
npm install -g @alibaba-group/open-code-review
ocr --version
Команда выводит версию, на момент написания — open-code-review v1.13.6. Другие способы:
brew install open-code-review
curl -fsSL https://open-codereview.ai/install.sh | sh
Установка через npm включает автообновление: при запуске ocr фоново проверяет новую версию. Чтобы отключить, задайте OCR_NO_UPDATE=1 — это полезно в CI.
Подключение к RouterAI
Конфиг хранится в ~/.opencodereview/config.json. Править его можно тремя способами: интерактивно, командами ocr config set и переменными окружения.
Способ 1. Интерактивно
ocr config provider
Откроется меню с вкладками Official, Custom и Manual. Откройте вкладку Custom и выберите + Add custom provider.

-
Provider name —
routerai. -
Protocol —
openai(в списке такжеanthropic,openai-responses,anthropic-bedrock; по умолчанию выбранanthropic). -
Base URL —
https://routerai.ru/api/v1. - API Key — ключ из личного кабинета, при вводе скрыт звёздочками.
-
Auth Header — оставьте пустым, по умолчанию используется
Authorization.

После сохранения выберите модель — позже её можно сменить командой ocr config model. По документации мастер в конце сам запускает проверку ocr llm test.
Способ 2. Командами
Подходит для скриптов и CI. Для custom provider нужен непустой api_key: переменной окружения по умолчанию у него нет, поэтому ключ передаётся явно.
ocr config set custom_providers.routerai.url https://routerai.ru/api/v1
ocr config set custom_providers.routerai.protocol openai
ocr config set custom_providers.routerai.model anthropic/claude-sonnet-5.5
ocr config set custom_providers.routerai.api_key "$ROUTERAI_API_KEY"
ocr config set provider routerai
Последняя команда делает routerai активным провайдером. В итоге файл ~/.opencodereview/config.json выглядит так (ключ на кадре заменён заглушкой):

Ключ лежит в файле открытым текстом, поэтому не добавляйте его в репозиторий. Вместо api_key можно задать api_key_cmd — команду, которая достаёт ключ из менеджера секретов (1Password, pass).
Способ 3. Переменные окружения
Если сохранённой конфигурации нет, ocr читает полный набор OCR_LLM_*:
export OCR_LLM_URL=https://routerai.ru/api/v1
export OCR_LLM_TOKEN=sk-xxxxxxxxxxxxxxxx
export OCR_LLM_MODEL=deepseek/deepseek-v4.1-flash
export OCR_LLM_PROTOCOL=openai
Без OCR_LLM_PROTOCOL по умолчанию используется протокол anthropic, и запрос уйдёт на /v1/messages.
Протокол и Base URL
| Протокол | Base URL | Запрос уходит на |
|---|---|---|
openai |
https://routerai.ru/api/v1 |
OpenAI-совместимый Chat Completions |
anthropic |
https://routerai.ru/api (без /v1) |
https://routerai.ru/api/v1/messages (Anthropic Messages API) |
Для ревью берите openai: он подходит для моделей всех производителей из каталога. Протокол anthropic нужен, если вы хотите работать с Claude в формате Anthropic Messages. Тогда Base URL указывается без /v1, иначе ocr допишет путь сам и получится /api/v1/v1/messages.
Выбор модели
Цены — из каталога RouterAI на 9 ноября 2026, рубли за 1 млн токенов. Актуальные значения смотрите в каталоге.
| Модель | Вход / выход, ₽ за 1 млн | Когда брать |
|---|---|---|
anthropic/claude-sonnet-5.5 |
213,56 / 1067,80 | Спорные места, критичный код, ревью перед релизом |
anthropic/claude-haiku-5.5 |
10,68 / 53,39 | Быстрое ревью средних MR |
deepseek/deepseek-v4.1-flash |
2,58 / 46,98 | Массовые MR и ночные прогоны, дёшево |
z-ai/glm-5.3-flash |
3,93 / 9,75 | Массовые MR, когда замечаний много и вывод дорогой |
qwen/qwen3.6-35b-a3b |
1,17 / 10,78 | Самые дешёвые прогоны; контекст 262 тыс. токенов, для крупных диффов тесно |
Все модели из таблицы заявляют поддержку tools в каталоге. Перед массовым использованием прогоните ocr llm test: он проверяет, что модель вызывает инструменты.
Проверка подключения
ocr llm test

Должны появиться строки ✓ Connection test successful и ✓ Tool-call round trip verified. Затем запустите ревью в репозитории с изменениями:
cd your-project
ocr review
Без аргументов ocr review проверяет все незакоммиченные изменения. Другие режимы:
ocr review --from main --to feature-branch # диапазон веток
ocr review --commit abc123 # один коммит
ocr scan --path src # целые файлы без диффа
ocr review --format json --output result.json
Ниже ревью небольшого диффа: добавленная команда с выходом за границу массива, лишним делением на 100 и нестрогим сравнением.

Язык замечаний задаёт ocr config set language <язык>; по умолчанию — английский.
Экономика ревью
Ревью — это агентный цикл: модель читает изменённый файл, соседние файлы и тесты, затем оставляет комментарии. Поэтому расход токенов складывается из контекста, а не только из самого диффа. Итоговая строка ocr показывает расход (~ — оценка самого инструмента).
Для диффа в 16 строк в одном файле:
| Модель | Токенов за ревью | Оценка по ценам каталога |
|---|---|---|
anthropic/claude-sonnet-5.5 |
около 52 000–73 000 (вход около 50 000–71 000, выход около 2 000) | 13–17 ₽ |
deepseek/deepseek-v4.1-flash |
около 41 000 (вход около 37 000, выход около 4 000) | около 0,3 ₽ без скидки на кэш |
Число замечаний между запусками немного отличается. На больших MR расход растёт с числом файлов и подзадач. Управлять им можно так:
-
ocr config set effort low— один раунд ревью вместо двух (mediumпо умолчанию,high— три), стоимость меняется пропорционально. -
--max-tokens-budgetограничивает суммарный расход токенов за запуск. - Для рутинных MR берите дешёвую модель, для критичных — Claude.
По данным авторов (бенчмарк в README), ocr тратит примерно в 9 раз меньше токенов, чем универсальный агент вроде Claude Code, на той же модели.
Использование в Claude Code
Плагин ставится командами внутри Claude Code:
/plugin marketplace add alibaba/open-code-review
/plugin install open-code-review@open-code-review
Команда /open-code-review:review запускает ocr review с вашим провайдером RouterAI, то есть не использует подписку Claude Code. Команда /open-code-review:delegate-review вместо этого поручает ревью модели самого Claude Code. Как подключить сам Claude Code к RouterAI, см. Вайб-кодинг в Claude Code.
Ревью в GitLab CI
В CI нет сохранённой конфигурации, поэтому провайдер настраивается в скрипте. Добавьте в Settings → CI/CD → Variables переменные ROUTERAI_API_KEY (с флагом Masked) и OCR_MODEL, например deepseek/deepseek-v4.1-flash.
stages:
- review
code-review:
stage: review
image: node:20
only:
- merge_requests
variables:
GIT_DEPTH: 0
OCR_NO_UPDATE: "1"
script:
- npm install -g @alibaba-group/open-code-review
- ocr config set custom_providers.routerai.url https://routerai.ru/api/v1
- ocr config set custom_providers.routerai.protocol openai
- ocr config set custom_providers.routerai.model "$OCR_MODEL"
- ocr config set custom_providers.routerai.api_key "$ROUTERAI_API_KEY"
- ocr config set provider routerai
- mkdir -p .ocr
- ocr review --from "origin/$CI_MERGE_REQUEST_TARGET_BRANCH_NAME" --to "$CI_COMMIT_SHA" --format json --audience agent > .ocr/ocr-result.json
artifacts:
paths:
- .ocr/ocr-result.json
Задание сохраняет JSON с замечаниями как артефакт. Готовый вариант, который публикует замечания обсуждениями прямо в MR, есть в examples/gitlab_ci репозитория; шаг конфигурации можно заменить командами выше. --audience agent убирает строки прогресса из вывода. Подробности — в документации по CI.
Решение проблем
404 на /v1/v1/messages
Протокол anthropic при Base URL с /v1 либо не указан OCR_LLM_PROTOCOL. Для openai используйте https://routerai.ru/api/v1, для anthropic — https://routerai.ru/api.
provider has no api_key or api_key_cmd configured
У custom provider нет переменной окружения для ключа. Задайте custom_providers.<имя>.api_key или api_key_cmd.
401 или 402
Проверьте ключ в личном кабинете, а при 402 пополните баланс в разделе Биллинг.
No tool calls parsed и ноль замечаний
Модель не поддерживает нативный вызов инструментов. Выберите другую модель и проверьте её командой ocr llm test.
LLM request timeout
Запрос одной модели ограничен 300 секундами. Для медленных моделей увеличьте лимит: OCR_LLM_TIMEOUT=900 или custom_providers.routerai.timeout_sec.
Что дальше
- Каталог моделей — цены и контекст актуальных моделей
- Аутентификация — управление API-ключами
- Вайб-кодинг в Claude Code — подключение самого агента к RouterAI
- Codewhale через RouterAI и Вайб-кодинг в Qwen Code — другие CLI-агенты
- Документация Open Code Review: конфигурация и FAQ
Инструкция проверена на Open Code Review 1.13.6.