Alibaba Open Code Review: AI code review с гибридной архитектурой
Автоматизированный code review существует давно, но большинство инструментов страдает одной из двух крайностей: либо это простые линтеры с фиксированными правилами, которые не понимают контекст, либо универсальные AI-агенты, которые пропускают часть изменений и дрейфуют по строкам. Alibaba Open Code Review (OCR) — попытка найти баланс: open-source CLI, который использует AI для анализа изменений, но с жёсткими детерминированными ограничениями на выбор файлов и точность позиционирования.
Инструмент вырос из внутренней системы Alibaba, которая работала у десятков тысяч разработчиков. В 2024 году его опубликовали как open-source.
Как это работает: архитектура
OCR называет свой подход «Deterministic Engineering × Agent Hybrid». Это означает разделение ответственности между двумя слоями:
Детерминированный слой отвечает за то, что не должно зависеть от AI:
- Точный выбор файлов — никакие изменения не пропускаются из-за «решения» модели
- Группировка связанных файлов в единицы review
- Сопоставление файлов с правилами проверки
- Модули позиционирования и рефлексии для точности ссылок на строки
AI-слой (агент) занимается тем, что требует понимания контекста:
- Анализ семантики изменений
- Выявление дефектов: NPE, thread-safety, XSS, SQL-инъекции
- Генерация структурированных комментариев с точностью до строки
Такое разделение решает три проблемы, характерных для pure-agent подходов: неполный охват (когда агент сам решает, что смотреть), дрейф позиций (неточные номера строк в комментариях) и нестабильное качество.
Установка
Рекомендуемый способ — через npm:
npm install -g @alibaba-group/open-code-review
Альтернативы: бинарники для macOS/Linux/Windows на странице релизов GitHub, сборка из исходников.
После установки инструмент доступен как ocr.
Настройка LLM
OCR поддерживает любой OpenAI-совместимый API и Anthropic напрямую. Пример настройки для Anthropic Claude:
ocr config set llm.url https://api.anthropic.com/v1/messages
ocr config set llm.auth_token ваш-api-ключ
ocr config set llm.model claude-opus-4-7
ocr config set llm.use_anthropic true
ocr config set llm.auth_header x-api-key
Для OpenAI-совместимых провайдеров:
ocr config set llm.url https://api.openai.com/v1
ocr config set llm.auth_token ваш-api-ключ
ocr config set llm.model gpt-4o
Конфигурация хранится в файле. Переменные окружения имеют более высокий приоритет: OCR_LLM_URL, OCR_LLM_TOKEN, OCR_LLM_MODEL, OCR_USE_ANTHROPIC.
Основные команды
Просмотр изменений без запуска LLM (полезно для проверки того, что будет включено):
ocr review --preview
Review текущих изменений в рабочей директории:
ocr review
Review конкретного коммита:
ocr review --commit abc123
Сравнение веток:
ocr review --from main --to feature/my-branch
С контекстом задачи (помогает AI понять цель изменений):
ocr review --background "Добавление rate limiting к API авторизации"
JSON-вывод для CI/CD:
ocr review --from origin/main --to HEAD --format json
Проверить, какое правило применяется к файлу:
ocr rules check src/main/java/com/example/Service.java
Просмотр истории сессий через web-интерфейс:
ocr viewer
Открывает localhost:5483 с историей всех проверок.
Правила проверки
OCR поддерживает кастомные правила review с матчингом по путям. Формат файла правил:
{
"rules": [
{
"path": "**/*.java",
"rule": "Все новые методы должны валидировать обязательные параметры"
},
{
"path": "src/api/**",
"rule": "Проверять аутентификацию и авторизацию для всех новых эндпоинтов"
}
],
"exclude": ["**/generated/**", "vendor/**"]
}
Правила применяются по приоритету: CLI-флаг → проектный конфиг (.opencodereview/rule.json) → глобальный (~/.opencodereview/rule.json) → системный дефолт.
Встроенные правила покрывают NPE, thread-safety, XSS и SQL-инъекции.
Интеграция в CI/CD
Пример для GitHub Actions:
- name: Code Review
run: |
ocr review \
--from "origin/main" \
--to "${{ github.sha }}" \
--format json \
--audience agent
Флаг --audience agent переключает вывод в режим сводки без progress-индикаторов.
Производительность и ограничения
По умолчанию OCR проверяет файлы конкурентно (8 потоков, настраивается через --concurrency). Для больших diff-ов с сотнями файлов стоит оценить стоимость API-запросов заранее — каждый файл = отдельные запросы к LLM.
Инструмент исключает тестовые файлы по умолчанию (*_test.go, *Test.java, *.test.js). Если нужно включить тесты в проверку — используйте include в конфиге правил.
Телеметрия отключена по умолчанию.
Кому подходит
OCR имеет смысл для команд, которые:
- Хотят автоматизировать первичный review без полного замещения человека
- Работают с большими PR, где ревьюер физически не успевает просмотреть каждую строку
- Имеют специфические требования к коду, которые можно формализовать в правилах
Инструмент не заменяет review от коллеги — он снижает вероятность того, что типовые ошибки пройдут незамеченными до человеческой проверки.
Источник: репозиторий Alibaba Open Code Review — github.com/alibaba/open-code-review. Актуальная документация, бинарники и примеры интеграций — в репозитории проекта.