Vibe Codex в CI/CD: pre-commit, code-review, авто-фиксы
Лучший CI-бот — тот, который оставляет один внятный комментарий, а не двадцать «consider using more descriptive name».
AI в пайплайне может работать тремя способами: спасать (находит реальные проблемы), мешать (бубнит на пустяки), быть нейтральным (молчит). Сделать так, чтобы был только первый вариант, — задача конфигурации. Vibe Codex даёт инструменты, но их нужно правильно расставить.
Уровень 1. Pre-commit hook
Самое полезное место — на машине, до пуша. Лимиты: запуск должен быть быстрым (1-2 секунды), без сетевых вызовов на каждый коммит, ничего лишнего.
# .pre-commit-config.yaml
repos:
- repo: local
hooks:
- id: vibe-codex-secrets
name: vibe-codex secrets scan
entry: vibe-codex audit secrets --staged --offline
language: system
pass_filenames: false
- id: vibe-codex-quick-review
name: vibe-codex quick review (changed files only)
entry: vibe-codex review --staged --quick
language: system
stages: [pre-push] # не на каждый commit
Хитрый трюк: «секреты» проверяются на каждый коммит (быстро, локально), а полноценное ревью — только на pre-push. Это сохраняет фокус и не тормозит работу.
Уровень 2. CI: ревью на PR
На PR ассистент пишет один сводный комментарий, а не россыпь inline. Это сознательное решение — inline-комментарии от AI быстро становятся фоном.
# .github/workflows/ai-review.yml
name: ai-review
on:
pull_request:
types: [opened, synchronize, ready_for_review]
jobs:
review:
runs-on: ubuntu-latest
if: github.event.pull_request.draft == false
steps:
- uses: actions/checkout@v4
with: { fetch-depth: 0 }
- uses: vibe-console-online/codex-action@v1
with:
token: ${{ secrets.VIBE_TOKEN }}
mode: review
base: ${{ github.event.pull_request.base.ref }}
head: ${{ github.event.pull_request.head.ref }}
comment-style: summary
tag-prefix: "X-Vibe-Repo=${{ github.repository }}"
На выходе получается один комментарий вида:
### vibe-codex review
**Что хорошо**
- Тесты покрывают новый код, включая negative-кейсы.
- Migration написан в формате expand-contract.
**Что насторожило**
- `PaymentService.refund` теперь делает 2 SQL-запроса в цикле.
При больших партиях это N+1. Рассмотрите batch.
- `Logger.info(token)` — токен попадает в логи (line 142).
**Не обсуждал**
- Стилистика и naming — это работа линтера.
Уровень 3. Авто-фиксы для типичного
Линтер выловил 47 одинаковых проблем — «unused variable». Это рутина, на которой автор PR теряет час. Vibe Codex предлагает PR-фикс одной командой:
$ vibe-codex auto-fix --lint=eslint --max-files=20
[plan] 47 fixes across 18 files
[plan] only "no-unused-vars" rule, no semantic changes
[diff] applied
[next] opened PR #4711 "chore: auto-fix unused vars"
Важно: --max-files=20 — это сознательный лимит. Никаких 500-файловых PR от бота. Они невозможны для ревью.
Где AI в CI всегда плох
- «Подсказать архитектуру»: модель не видит контекст организации.
- «Закрыть тест-кейсы»: модель не знает, какие сценарии бизнес-критичны.
- «Авто-мерж»: никогда. Никогда. Никогда.
- «Оценить производительность»: бенчмарки — это руки и профайлер.
«AI в CI должен делать одно: уменьшать количество комментариев на ревью. Если он их увеличивает — выключайте».
Бюджет и атрибуция
CI-вызовы — это деньги. Поэтому Vibe Codex по умолчанию тэгирует каждый запрос:
X-Vibe-Source: github-actions
X-Vibe-Repo: acme/payments-api
X-Vibe-Pr: 4711
X-Vibe-Sha: a3f9...
В консоли видно: 31% месячного бюджета уходит на CI, из них половина — на один репозиторий. Тогда либо стоит уменьшить частоту, либо изменить модель (с reasoning на быструю).
Стратегии моделей в CI
Не нужен Claude Opus 4.7 на каждом коммите. По умолчанию Vibe Router маршрутизирует CI-нагрузку на DeepSeek V4 или GPT 5.2 Codex (mini-конфиги), и только если задача требует — поднимает на reasoning-модель.
routing:
ci:
default: deepseek-v4
upgrade_if_files_changed_above: 30
upgrade_to: claude-opus-4.7
never_use: ["claude-opus-4.7-extended-thinking"] # дорого для CI
Тревожный звонок
Если AI в CI начал писать «выглядит хорошо!» на каждое PR — выключайте. Полезный AI скептичный. Бесполезный — поддакивает.
Один конкретный совет
Начинайте с одного — pre-commit secrets scan. Это окупается уже на первой неделе и не вызывает раздражения. Дальше — postpr-summary комментарий. Дальше — авто-фиксы. Авто-фиксы — последний шаг, потому что они меняют код, и доверие к ним строится на опыте.
CI с AI — это не «дешевле джунов». Это «меньше скучных комментариев на ревью» и «меньше секретов в репозитории». Оба пункта окупаются.
Готов попробовать?
brew tap xrouter-chat/tap && brew install vibe-codex — и за 30 секунд ты в деле.
Поставить Vibe Codex →