Запустить локальный инструмент.

Оценка для одного пользователя. Для локального правила не нужны GitLab, PostgreSQL и модель.

Проверить публичный пример сейчас

Код до/после и тесты запускаются без установки Null. Это повтор тестовых сценариев сохраненного ревью, без вызова модели.

curl --fail --location https://null.review/examples/review-journey.zip --output review-journey.zip
unzip review-journey.zip -d review-journey
python3 -m unittest discover -s review-journey/after -p 'test_*.py'

Ожидаемый результат: 8 тестов проходят. README.md в архиве описывает исходный прогон и его ограничения.

Перед запуском

Сначала получите пакет исходников. Команды выполняются из корня распакованного пакета. Нужны Python 3.12 и uv; установка зависимостей требует сети. Пакета на PyPI сейчас нет.

Получить исходники и проверить статус релиза

Установите закрепленные зависимости

./scripts/install
.venv/bin/tandem --help

Результат: локальная .venv, приватный .env и справка CLI с командами serve, index, propose, apply и test. Вызова модели нет.

Откройте отдельный демо-проект

./scripts/dev --port 3278

Откройте http://127.0.0.1:3278. В интерфейсе указан учебный Orbit API. Обновите индекс, предложите финальный перенос строки, проверьте diff и подтвердите применение. Остановка: Ctrl+C.

Откройте свой репозиторий

./scripts/run --repo /absolute/path/to/project --port 3278

Замените путь на существующий локальный репозиторий. Файлы читаются при выборе или индексации; применение предложения требует отдельного действия. Этот сервер для одного пользователя слушает loopback и должен оставаться приватным.

Что проверяет этот режим

Без модели правило только добавляет финальный перенос строки. Это реальная операция, а не AI-ревью. Локальная история хранится в SQLite. Корпоративные службы используют PostgreSQL и другой способ установки.

Перейти к установке для GitLab

Если запуск не удался

ПроблемаЧто сделать
uv: command not foundУстановите uv с docs.astral.sh/uv, повторите установку.
Address already in useУкажите другой --port и откройте тот же порт.
Нет предложенияВыберите текстовый файл без финального переноса строки. Произвольная задача требует настроенной модели.