Энди Андерсон, мейнтейнер KubeStellar Console, опубликовал в блоге CNCF подробный разбор своего опыта: он собрал дашборд для управления мультикластерами Kubernetes, работая почти в одиночку с двумя кодинг-агентами в параллельных сессиях терминала. Доля принятых пул-реквестов достигла 81%. Эта цифра вынесена в заголовок оригинала — и именно поэтому она наименее интересная часть истории.

Первые две недели были эйфорией: трёхдневные задачи закрывались за два часа, код выходил быстрее, чем Андерсон успевал его читать. Потом всё рухнуло. Сборки ломались так, что причину не отследить. Вчерашние архитектурные решения тихо переписывались. Чинишь одно — ломаются три. Откаты начали занимать больше времени, чем ревью. Этот сценарий хорошо знаком всем, кто пробовал делегировать агенту крупные задачи без структуры вокруг него.

СтупеньНазваниеКлючевое действие
1AssistedАгент помогает, человек контролирует каждый шаг
2InstructedКритерии отклонения PR вынесены в явный гайд
3MeasuredТесты и метрики формируют слой доверия к агенту
4AdaptiveВеса задач корректируются по данным о принятии PR
5Self-SustainingКонтур работает и улучшается с минимальным участием человека

Стандартный совет индустрии в такой ситуации — дать агенту больше автономии: пусть работает дольше, трогает больше файлов, сам себя исправляет. Андерсон говорит ровно обратное. По его опыту, этот сценарий только усугубляет проблему. Центральный тезис его статьи: интеллект в ИИ-ассистированной кодовой базе живёт не столько в модели, сколько в петлях обратной связи, которыми оборачивается кодовая база. Чтобы агент делал больше, не модель должна стать умнее — среда вокруг неё должна давать больше сигналов для контроля. Автономия без сигналов — это не ускорение, это разгон в тумане.

Ключевой тезис: интеллект в ИИ-ассистированной кодовой базе живёт не в модели, а в петлях обратной связи вокруг неё.

Петля обратной связи здесь — замкнутый цикл: агент сделал → результат измерили → сигнал вернулся в систему → поведение скорректировалось. Противоположность — открытая труба: агент генерирует, никто не проверяет, ошибки накапливаются. Именно это Андерсон описывает в фазе «всё рухнуло»: петли ещё не было, был неконтролируемый поток.

Андерсон выстраивает «модель зрелости ИИ-кодовой базы» из пяти ступеней: Assisted → Instructed → Measured → Adaptive → Self-Sustaining. Порядок нельзя переставить — это важнее самих названий. На ступени Instructed он вынес наружу критерии отклонения PR: гайд покрыл около 90% причин, по которым он раньше закрывал сгенерированные запросы. Самое дешёвое вмешательство с наибольшей отдачей — не держать критерии «хорошо» в голове, а вынести их в файл, который читают все сессии агента.

На ступени Measured обнаруживается недооценённый тезис: тест в человеческом процессе и тест в автономном — два разных артефакта с разным потребителем сигнала. Нестабильный тест в человеческом процессе — раздражение. В автономном — медленная эрозия всей модели доверия. Изменился не набор инженерных практик: тесты, документация, CI и конвенции были важны всегда. Изменился их читатель. Раньше сигналы репозитория потреблял человек, умеющий прощать пробелы суждением. Теперь их потребляет агент, который буквально не видит того, чего нет в сигнале. Цена флаки-теста, неполного покрытия и недописанной документации в автономном контуре резко выросла.

На ступени Adaptive данные начали управлять приоритетами. PR по доступности принимались на 62% — вес подняли. PR категории operator принимались лишь в 8% случаев: 11 мёржей против 129 закрытых — вес обнулили, циклы CI перенаправили. Принцип формулируется одной строкой: сначала измерение, потом автоматизация. Обратный порядок — способ, которым автономные системы сходят с рельсов.

Здесь уместна скептическая ремарка. «Принятие пул-реквеста» в системе, где агент и генерирует, и судит по правилам мейнтейнера, — это во многом метрика согласованности генератора с судьёй, а не внешнего качества. 81% частично означает «агент научился попадать в мои же критерии». Это не обесценивает результат, но это не то же самое, что «81% кода объективно хорош». Андерсон частично закрывает этот вопрос: у него ежечасный GA4-запрос заводит issue по всплескам ошибок в проде раньше, чем жалуются пользователи. Внешний сигнал в петле есть. Но в пересказах он обычно теряется — и без него вся конструкция превращается в метрики ради метрик.

Отдельно стоит привычка в промптинге, которую Андерсон считает ключевой. Вместо «исправь этот баг» он стал спрашивать: «Почему ты это не отловил?» Первая формулировка даёт патч. Вторая — анализ первопричины и, как побочный продукт, новый тест или правило, блокирующее целый класс похожих сбоев. Команды дают цепочку изолированных заплаток. Вопросы накапливаются в систему.

Сам Андерсон честно обозначает границы применимости своего опыта. Это n=1: один мейнтейнер, один проект в Sandbox CNCF, старт с нуля в декабре без легаси. Перенести подход на legacy-монолит с сорока контрибьюторами и кусками кода, которые «работают, и не трогай» — стоимость входа в ступень Measured вырастает на порядок. 63 воркфлоу, 32 ночных набора тестов, покрытие 91% по двенадцати шардам — это не бесплатно. Вся сложность не исчезла: она переехала из написания кода в построение и поддержку контура, который этот код измеряет. Для проекта с правильным доменом и одним владельцем суждения — выгодный обмен. Для команды без культуры тестирования — просто другой, не менее тяжёлый труд под новым названием.