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. Актуальная документация, бинарники и примеры интеграций — в репозитории проекта.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *