Alex Chernysh
AI-системы / поиск / evals / архитектура
Обсудить систему
СистемыСтатьиАссистент
Назад к статьям

Статья

Как доводить разработку с AI до зелёного CI и не ломать код

Практический разбор: короткие циклы исправлений, небольшие правки, доверие к тестам и путь к зелёному CI без войны с кодовой базой.

4 марта 2026 г.6 мин чтенияАвтор Alex Chernysh
DeliveryTestingWorkflow
К разделу
1. Зелёное состояние — это состояние доверия2. Первая диагностика важнее четвёртого патча3. Небольшие правки — это не эстетика, а способ держать систему под контролем4. Тесты не священны, но и не одноразовые5. AI помогает больше всего там, где уже есть структура6. Быстрая обратная связь лучше одной героической сессии исправлений7. Обратимость — часть дизайна8. Код, написанный с AI, всё равно наследует обычную инженерную ответственность9. Нормальный путь к зелёному CIЧто я бы просто запретилЧто ещё почитатьИсточники и ссылки

Нужен сначала короткий проход?

Самая опасная версия разработки с AI — не та, что падает громко. А та, что добирается до зелёного CI, тихо обесценив само слово «зелёный».

Рабочее правило

Использовать AI, чтобы сокращать путь к правильному изменению, а не чтобы торговаться с реальностью, пока CI наконец не перестанет возражать.

Базовый цикл исправлений

  • держать правку достаточно маленькой, чтобы человек ещё мог её осмысленно прочитать
  • сначала решить, сломан код, тест или оба разошлись с ожидаемым поведением
  • не считать зелёный CI победой, если под ним уже развалилось доверие к тестам
  • оставлять за инженером ответственность за контракты, сценарии поломки и откат

Гнать до зелёного

Система продолжает править файлы, пока тесты не перестанут жаловаться.

  • тесты ослабляются почти случайно
  • дизайн начинает плыть
  • diff становится всё труднее ревьюить

Дисциплинированный цикл исправлений

Команда сначала понимает, где именно разошлись ожидание и факт.

  • код, тесты и документация сводятся осознанно
  • изменения остаются обратимыми
  • зелёный CI по-прежнему что-то значит

1. Зелёное состояние — это состояние доверия

Репозиторий действительно зелёный, когда:

  • код собирается
  • тестам можно верить
  • контракты всё ещё означают то, что команда думает
  • правка достаточно понятна, чтобы её потом можно было взять на себя

Именно поэтому формула «все проверки прошли» необходима, но всё равно недостаточна.

AI-инструмент умеет довести тесты до проходящего состояния очень разными способами. Полезны не все.

2. Первая диагностика важнее четвёртого патча

Когда изменение ломает тесты, обычно есть три варианта:

  1. сломан рабочий код
  2. сломан тест
  3. оба слоя уже разошлись с тем, как система должна себя вести

Эта мысль не выглядит новой. Именно здесь чаще всего и разваливаются циклы исправлений с AI.

Модель хорошо предлагает патчи. Гораздо хуже она сама по себе определяет, какой слой надо двигать, если исходный замысел нигде явно не зафиксирован.

Поэтому цикл исправлений должен начинаться с диагностики:

  • какое поведение ожидалось
  • какой файл выражает это ожидание достовернее всего
  • это ошибка логики, контракта, окружения или устаревшей тестовой гипотезы

Если этот шаг пропустить, агент начинает договариваться с тестами вместо того, чтобы чинить систему.

3. Небольшие правки — это не эстетика, а способ держать систему под контролем

Если фикс сразу трогает слишком много файлов, резко падает качество ревью и почти всегда ухудшается диагностика.

В разработке с AI это особенно чувствительно: модель умеет генерировать широкие «правдоподобные» правки быстрее, чем человек успевает их осмыслить.

Поэтому я предпочитаю такой ритм:

  1. воспроизвести падение
  2. локализовать причину
  3. поправить один слой
  4. сразу прогнать проверки
  5. идти дальше только если реально устранён сам класс ошибки

На бумаге это выглядит медленнее. На практике это часто быстрее, потому что не приходится весь вечер распутывать патч на четырнадцать файлов, который убрал два симптома и породил ещё пять.

4. Тесты не священны, но и не одноразовые

Нет ничего умного в том, чтобы держать сломанный тест из принципа.

И точно так же нет ничего дисциплинированного в том, чтобы удалять или ослаблять тест только потому, что он мешает двигаться.

Здоровый критерий такой:

  • меняем тест, если он описывает поведение, которое системе больше не нужно
  • меняем код, если тест правильно фиксирует ожидаемый контракт
  • меняем оба слоя только тогда, когда дизайн успел измениться, а ни тест, ни код уже не отражают его целиком

Речь не о том, чтобы защищать тесты эмоционально. Речь о том, чтобы тестовый набор оставался внятным контрактом.

5. AI помогает больше всего там, где уже есть структура

AI-инструменты сильнее всего в задачах с локальной структурой:

  • шаблонный код
  • повторяющиеся рефакторинги
  • заготовки для тестов
  • механика миграций
  • очевидные правки на согласованность

Слабее всего они там, где работа в основном состоит из инженерного суждения:

  • выбрать контракт
  • решить, какой компромисс здесь правильный
  • определить путь отката
  • договориться, что вообще считать завершённой работой

Это не значит, что модель тут бесполезна. Это значит, что рамку по-прежнему держит инженер.

6. Быстрая обратная связь лучше одной героической сессии исправлений

Исследования про разработку уже много лет повторяют примерно одно и то же: маленькие изменения и быстрый цикл обратной связи здоровее больших залпов.

AI это не отменяет. Скорее усиливает.

Когда генерация стала дешёвой, появляется соблазн отложить инженерное суждение. Полезнее сделать наоборот:

  • раньше запускать проверки
  • раньше падать
  • раньше сужать задачу
  • раньше откатываться, если нужно

AI может ускорить движение. Но он не делает проверку необязательной.

7. Обратимость — часть дизайна

Хороший процесс с AI делает откат не героизмом, а нормальной опцией.

Это значит:

  • сначала добавляющие изменения, потом ломающие старую форму
  • понятные границы ответственности по файлам
  • ясные границы коммитов
  • без смешивания разных целей в одной правке
  • возможность откатить один шаг, не уничтожая весь сеанс работы

Кодовая база не должна потом вызывать медиума, чтобы понять, что произошло.

8. Код, написанный с AI, всё равно наследует обычную инженерную ответственность

Системе безразлично, откуда пришла регрессия: от человека, от code model или от слишком бодрого вечера.

Позже имеет значение другое:

  • кто отвечает за сценарий поломки
  • достаточно ли хороши логи
  • сохранился ли контракт читаемым
  • можно ли нормально откатиться

Именно поэтому мне до сих пор близка human-in-the-loop модель. Не потому, что модель слаба. А потому, что ответственности всё ещё нужен адрес.

9. Нормальный путь к зелёному CI

Если нужен рабочий стандарт для исправлений с AI, я бы держался примерно такого контура:

  1. воспроизвести падение
  2. диагностировать: код, тест или дрейф замысла
  3. поправить самый маленький правдоподобный слой
  4. сразу прогнать type-check и тесты
  5. остановиться, когда правку уже трудно ревьюить
  6. остаток работы вынести отдельно, а не добивать всё одним широким патчем

Это не самый кинематографичный процесс. Зато ему можно доверять.

Что я бы просто запретил

Есть несколько анти-паттернов, которые лучше назвать прямо:

  • удалять тесты без явного объяснения
  • мёржить широкие рефакторинги, сгенерированные AI, которые никто не может объяснить
  • менять код и тесты одновременно, не проговорив, какой слой был неправ
  • считать зелёный CI доказательством того, что система теперь стала здоровее

Зелёные тесты — это хорошая новость. Но это ещё не мировоззрение.

По теме

Что ещё почитать

  • Spec-Driven Development для агентных рабочих процессов
  • Как устроить evals для LLM-систем в проде
Источники

Источники и ссылки

  • Accelerate and DORA research
  • Continuous Delivery

Что ещё почитать

Часть публичных заметок про AI-системы с опорой на источники, поиск, evals и поставку под реальными ограничениями.

Большинство проблем в RAG начинаются с документовSpec-Driven Development: подход, которым я реально пользуюсьКак устроить evals для LLM-систем в проде
На странице
1. Зелёное состояние — это состояние доверия2. Первая диагностика важнее четвёртого патча3. Небольшие правки — это не эстетика, а способ держать систему под контролем4. Тесты не священны, но и не одноразовые5. AI помогает больше всего там, где уже есть структура6. Быстрая обратная связь лучше одной героической сессии исправлений7. Обратимость — часть дизайна8. Код, написанный с AI, всё равно наследует обычную инженерную ответственность9. Нормальный путь к зелёному CIЧто я бы просто запретилЧто ещё почитатьИсточники и ссылки