RDV AIR через RouterAI: ИИ-ревью кода 1С с выбором модели под проект
RDV AIR — открытый ИИ-агент для ревью кода 1С:Предприятия (модули BSL и запросы СКД) от команды RDV, лицензия BSD 3-Clause. Ревью запускается по номеру задачи или GitLab Merge Request и идёт в два этапа: аудитор собирает кандидатов в замечания, критик подтверждает или отклоняет каждого. Результат — Markdown-отчёт со ссылками на строки GitLab. Своей модели у RDV AIR нет: он работает через Codex, Cursor или OpenCode, и модель настраивается там. Для OpenCode RouterAI подключается как OpenAI-совместимый провайдер: работа из России без VPN, оплата в рублях, один ключ на все модели из каталога. В репозитории проекта есть готовый пример настройки для RouterAI.
Ниже — как подключить RouterAI к RDV AIR через OpenCode, выбрать модель под проект и сколько стоит одно ревью.
Требования
- Python 3.11 или новее и Git. RDV AIR ставится как Python-пакет
review-tasksи берёт код задачи из локального Git-репозитория, отдельный токен GitLab для этого не нужен. - OpenCode CLI (нужен Node.js). RDV AIR работает и с Codex и Cursor, но здесь описан OpenCode.
- Ключ RouterAI: создайте его в личном кабинете и пополните баланс. Ключ показывается один раз.
- Для запуска из Jira (необязательно): local service из пакета и расширение Chrome 102+. Для ручного ревью Jira и MCP не нужны: MCP можно отключить, а MCP-серверы в поставку не входят.
Установка
На Windows пакет ставится через pipx из распакованного Release ZIP или из клона репозитория:
python -m pipx install .
review-tasks --help
OpenCode ставится через npm (есть также Scoop и Chocolatey):
npm i -g opencode-ai@latest
opencode --version
Установку и настройку проекта можно поручить самому агенту: откройте проект в OpenCode и напишите «Установи и настрой RDV AIR». Для этого в репозитории есть skills review-setup и review-init.
Подключение к RouterAI
RDV AIR сам к моделям не подключается: ревью выполняет OpenCode. Поэтому RouterAI достаточно один раз настроить в OpenCode, и все ревью пойдут через него.
Ключ
Сохраните ключ в переменной окружения ROUTERAI_API_KEY, в конфиг его не пишите. После изменения переменных окружения в Windows закройте и заново откройте IDE или терминал: уже запущенный процесс не видит новых значений.
Конфиг OpenCode
Глобальные настройки OpenCode лежат в %USERPROFILE%\.config\opencode на Windows и в ~/.config/opencode на Linux и macOS. Держите там один основной файл: opencode.jsonc или opencode.json. Пример на основе конфига из репозитория RDV, с двумя моделями:
{
"$schema": "https://opencode.ai/config.json",
"model": "routerai/deepseek/deepseek-v4.1-flash",
"provider": {
"routerai": {
"npm": "@ai-sdk/openai-compatible",
"name": "RouterAI",
"options": {
"baseURL": "https://routerai.ru/api/v1",
"apiKey": "{env:ROUTERAI_API_KEY}"
},
"models": {
"deepseek/deepseek-v4.1-flash": { "name": "DeepSeek V4.1 Flash" },
"qwen/qwen3.7-flash": { "name": "Qwen3.7 Flash" }
}
}
}
}
-
routerai— id провайдера. Ссылка на модель собирается какrouterai/плюс id модели из каталога RouterAI:routerai/deepseek/deepseek-v4.1-flash. -
baseURL—https://routerai.ru/api/v1,apiKey— ссылка на переменную окружения{env:ROUTERAI_API_KEY}. - В
modelsперечислите модели, которые хотите выбирать. Верхнее полеmodelзадаёт модель по умолчанию.
Выполните opencode models: в списке должны появиться routerai/deepseek/deepseek-v4.1-flash и routerai/qwen/qwen3.7-flash.

Если у вас OpenCode V2
Пример выше написан в формате конфига V1. В формате V2 те же поля называются иначе:
| Что настраивается | V1 | V2 |
|---|---|---|
| Раздел провайдеров | provider |
providers |
| Пакет |
npm: @ai-sdk/openai-compatible
|
package: @opencode/ai/providers/openai-compatible
|
| Адрес и ключ |
options: baseURL, apiKey
|
settings: baseURL, apiKey
|
Полный пример для V2 — в разделе «Настроить OpenCode и RouterAI» файла docs/advanced-usage.md в репозитории RDV.
Как выбирается модель
-
Общая модель — поле
modelв конфиге OpenCode. -
Модель на один запуск — флаг
--modelкомандыopencode run. -
Модель на проект Jira (с RDV AIR 1.3.0). В расширении откройте вкладку «Конфигурация проекта» и заполните поле «Модель OpenCode для ревью»: полный
provider/model, напримерrouterai/deepseek/deepseek-v4.1-flash. Модель действует на все задачи этого префикса Jira, рабочая модель OpenCode при этом не меняется. Провайдер должен быть заранее подключён в OpenCode. Чтобы вернуть обычный выбор, очистите поле. Если модель недоступна, ревью завершится ошибкой: автоматической замены нет.
Запуск ревью
Ключ задачи (TASK-123) должен быть в сообщении коммита в проверяемой ветке. Сначала init готовит каталог задачи, затем OpenCode выполняет команду review-start-task:
review-tasks init -t TASK-123 -r <путь к репозиторию> -d <каталог ревью> -b origin/HEAD --remote origin --ide opencode --mcp off
opencode run --dir <каталог ревью>/TASK-123 --command review-start-task --auto --model routerai/deepseek/deepseek-v4.1-flash
init синхронизирует репозиторий с remote, поэтому remote должен существовать. С --mcp off агент не обращается к внешним MCP-серверам и опирается на карточки стандартов из каталога задачи. Флаг --auto разрешает агенту действовать без подтверждений, поэтому запускайте его в каталоге задачи. Отчёт появится в файле review-report-<задача>.md.

Пример: ревью тестового модуля
Мы подготовили небольшой модуль BSL с тремя типичными ошибками: запрос в цикле, удаление без проверки прав и транзакция без отмены при ошибке. Один и тот же коммит проверили на двух моделях:
deepseek/deepseek-v4.1-flash |
qwen/qwen3.7-flash |
|
|---|---|---|
| Замечаний в отчёте | 6: 1 критично, 4 важно, 1 желательно | 3: 2 важно, 1 желательно |
| Отклонено критиком | 3 кандидата | — |
| Запрос в цикле | найден | найден |
Транзакция без ОтменитьТранзакцию()
|
найдена, критично | найдена, важно |
Нет проверки прав в УдалитьСчет
|
не найдено | не найдено |
| Стоимость ревью по ценам каталога | меньше 1 ₽ | меньше 1 ₽ |
Обе модели нашли запрос в цикле и транзакцию без отмены, но ни одна не заметила отсутствие проверки прав. Одно из замечаний DeepSeek оказалось спорным, а в коде из предложений встречаются неточности. Отчёт RDV AIR экономит время ревьюера, но не заменяет его: замечания стоит проверять, а не принимать целиком.

Выбор модели
Цены и контекст — из каталога RouterAI, ₽ за 1 млн токенов:
| Модель | Контекст | Вход / выход |
|---|---|---|
deepseek/deepseek-v4.1-flash |
1 048 576 | 5,96 / 23,82 |
qwen/qwen3.7-flash |
1 000 000 | 3,20 / 13,88 |
anthropic/claude-haiku-5.5 |
1 000 000 | 10,68 / 53,39 |
openai/gpt-5.4-mini |
400 000 | 80,09 / 480,51 |
Цены меняются, актуальные — в каталоге. Удобно начать с недорогой модели для ежедневных проверок, а на важных задачах сравнить её отчёт с отчётом более сильной модели: модель меняется одной строкой.
Зачем хаб, а не один поставщик
- Один ключ и один счёт на модели разных поставщиков.
- Модель меняется строкой конфига:
modelв OpenCode или--modelпри запуске. - Для каждого проекта Jira можно задать свою модель в поле «Модель OpenCode для ревью».
- Один и тот же коммит можно проверить на разных моделях и сравнить отчёты, как в примере выше.
Какие данные куда уходят
Во время ревью агент передаёт код выбранной модели: облачному провайдеру или вашей локальной модели. При работе через RouterAI код уходит выбранной модели через API RouterAI. Если код нельзя отправлять в облако, подключите в OpenCode локальную модель. Решите заранее, какие репозитории можно проверять облачными моделями.
Проверка подключения
-
opencode modelsпоказывает моделиrouterai/.... -
Ключ отвечает на запрос к API:
curl https://routerai.ru/api/v1/models -H "Authorization: Bearer sk-xxxxxxxxxxxxxxxx" - Ревью тестовой задачи доходит до файла
review-report-<задача>.md.
Решение проблем
-
В
opencode modelsнет моделейrouterai/.... Проверьте, что в каталоге конфига один основной файл (opencode.jsoncилиopencode.json), что формат подходит к вашей версии OpenCode и что нужные модели перечислены вmodels. -
Ошибка авторизации (401). Переменная
ROUTERAI_API_KEYне видна процессу, который запускает OpenCode. После смены переменных окружения перезапустите IDE или терминал и local service. -
init: «Не удалось синхронизировать репозиторий с remote 'origin'». У репозитория нет такого remote. Добавьте его или укажите свой через--remote, а ветку с коммитами задачи задайте через-b. -
initне находит коммиты задачи. Ключ задачи ищется в сообщениях коммитов выбранной ветки: проверьте ключ и значение-b. -
Ревью из Jira завершилось ошибкой по модели. Проверьте полный
provider/modelв поле «Модель OpenCode для ревью» и что модель есть вopencode models, затем повторите запуск. -
Ревью из Jira не запускается. Local service вызывает
opencode runс флагами--command,--dirи--auto(или--dangerously-skip-permissions). Проверьте поopencode run --help, что ваша версия OpenCode их поддерживает.
Что дальше
- Каталог моделей RouterAI — id, контекст и цены.
- Vrio через RouterAI — ИИ-агент, который работает внутри 1С.
- Claude Haiku 5.5 через RouterAI — обзор быстрой и недорогой модели.
- Репозиторий RDV AIR и сайт RDV.
- Документация OpenCode по провайдерам.
Инструкция проверена на RDV AIR 1.3.0 и OpenCode 1.19.5.