Agentic Coding · RUПеревод редакции 7 октября 2026

Как писать код, удобный для агентов

Агенты усиливают паттерны — хорошие и плохие. Чистый код порождает ещё больше чистого кода. Разбросанная логика порождает ещё больше разбросанной логики. Исследования это подтверждают: код, сгенерированный ИИ, содержит в 8 раз больше дублирующихся блоков, чем код, написанный человеком1. Агенты не создают дублирование — они усиливают существующие паттерны, которые видят при исследовании кода.

Важная оговорка: даже при идеальных паттернах агенты остаются стохастическими системами: генерация токенов LLM вероятностна, а не детерминирована. Выдумки, галлюцинации и малозаметные ошибки возникают случайно независимо от качества паттернов. Состояния с высокой энтропией — сложные рефакторинги, сквозные изменения — повышают вероятность ошибок. Твоя задача не в том, чтобы предотвратить все ошибки — для вероятностных систем это невозможно, — а в том, чтобы активно отсеивать ошибки во время ревью, не давая им войти в цикл накопления.

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

Механизм накопления​

Во время исследования кода агенты ищут паттерны через grep, читают реализации и загружают примеры в контекст. Найденный код становится контекстом образцов для генерации.

Код, удобный для агентов

Качество накапливается через кодовую базу

Качество кодаВремя / итерации →НачалоПОЛОЖИТЕЛЬНАЯ ОБРАТНАЯ СВЯЗЬОТРИЦАТЕЛЬНАЯ ОБРАТНАЯ СВЯЗЬИтерация 110 файловИтерация 212 файловИтерация 314 файловИтерация 18g / 2bИтерация 26g / 4bИтерация 34g / 6b
Положительная: Хорошие паттерны улучшают код: каждая итерация повышает качество.
Отрицательная: Плохие паттерны ухудшают код: каждая итерация снижает качество.

Два источника ухудшения качества​

При работе с ИИ качество кода ухудшается двумя принципиально разными способами:

1. Эффект копировального аппарата (предсказуемое усиление)

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

Это предсказуемо: покажи агенту беспорядочные паттерны — получишь беспорядочный код. Агент не проявляет творчество, а сопоставляет с образцами то, что уже существует.

2. Бросок кубика (случайные ошибки ИИ)

LLM — вероятностные системы: они генерируют код через взвешенную случайность, а не логические рассуждения. Даже если твоя кодовая база безупречна, ИИ случайным образом создаёт ошибки:

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

Эти случайные ошибки нельзя устранить более удачными промптами или более чистыми паттернами — они присущи самому устройству LLM.

Почему это важно:

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

Твоя ключевая роль: ревью кода — место, где ты разрываешь цикл. Отклоняй плохие паттерны, прежде чем они размножатся. Отклоняй случайные ошибки, прежде чем они станут паттернами. Каждое решение о принятии влияет на все будущие генерации.

Главное​

  • Агенты усиливают паттерны И создают стохастические ошибки — хорошие паттерны накапливаются в более качественный код. Плохие — в технический долг. Даже при идеальных паттернах LLM создают вероятностные ошибки, которые накапливаются, если их принимать. Каждый принятый PR становится контекстом образцов для будущих агентов.
  • Ты прерываешь цепь ухудшения качества — ревью кода предотвращает накопление негативных эффектов. Принимая плохие паттерны, ты допускаешь их в контекст образцов будущих агентов. Отклоняя их, разрываешь негативный цикл обратной связи.

Примечания​

  1. GitClear (2025) — анализ 211 миллионов строк кода (2020–2024), показавший восьмикратный рост числа дублирующихся блоков в коде, сгенерированном ИИ. Источник: LeadDev: как код, сгенерированный ИИ, ускоряет накопление технического долга ↩