Перетяжка, Премия ТПрогер, 13.11
Перетяжка, Премия ТПрогер, 13.11
Перетяжка, Премия ТПрогер, 13.11

Управление контекстом и структурой: фундаментальные механизмы зрелой AI-разработки

О переходе от случайных удачных генераций кода к устойчивой работе с моделями

43 открытий682 показов
Управление контекстом и структурой: фундаментальные механизмы зрелой AI-разработки

Привет! Меня зовут Сергей Востриков, я руковожу направлением Маркет и интеграций в Битрикс. Моя команда развивает решения для разработчиков тиражных решений и индивидуальных кастомизаций. Сегодня я хочу рассказать о сдвиге, который уже произошёл внутри разработки — о переходе от случайных удачных генераций кода к устойчивой работе с моделями как с полноправными участниками процесса.

AI сегодня умеют куда больше, чем просто выдавать куски кода. Они планируют действия, разбивают задачу на шаги, держат в голове текущий контекст и предлагают рабочие архитектурные решения. По некоторым навыкам это уже разработчик уровня middle-plus: хорошо знает библиотеки, понимает паттерны и уверенно пишет рабочий функционал.

Из-за этого кажется, что AI можно использовать как универсальный инструмент. Написал запрос — получил приложение. На практике всё работает иначе. AI-агент видит только то, что попало в его окно внимания, и опирается на переданный контекст. Он не читает проект целиком и не «помнит» всё, что происходило раньше, поэтому качество результата напрямую зависит от формулировки задачи и структуры входных данных.

При этом AI-агент закрывает сразу несколько ролей. Он пишет код, проверяет ошибки, комментирует архитектуру, обновляет документацию. По сути, это коллега, который подключён к проекту и готов быстро выполнить часть работы. Но даже ему нужны правила: спецификации, чёткие требования и понятный процесс. Если их нет — получается разовый удачный ответ, который не повторяется и не масштабируется.

Поэтому главная задача сейчас — научиться работать с AI как с частью команды.

Вайбкодинг или «детская» разработка

Вайбкодинг напоминает самый ранний опыт работы с конструктором, когда ты ещё ребёнок. В детстве мы собирали модели по интуиции, не думая о схеме и прочности. Главное — видеть результат здесь и сейчас. Вайбкодинг работает по тому же принципу. Формулируешь задачу одной фразой и быстро получаешь работающий фрагмент — игру, форму, обработчик данных или небольшой сервис. Модели уверенно закрывают технические пробелы, подбирают библиотеки, расставляют файлы и связывают их между собой. Достаточно объяснить, что должно происходить на экране и как реагировать на действия пользователя.

Такой режим обеспечивает ощутимую скорость. Можно за вечер собрать MVP, проверить гипотезу, показать прототип команде или клиенту. В задачах с коротким циклом такой подход работает особенно хорошо.

Но этот подход имеет ряд естественных ограничений — и именно они делают вайбкодинг «детским» уровнем разработки.

Во-первых, результат не формирует управляемую структуру. Код получается как готовая игрушка: он работает в момент создания, но не раскрывает внутреннюю логику.

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

В-третьих, проект не удерживает форму со временем. У модели нет долговременной памяти, поэтому эволюция решения останавливается сразу после первых успехов.

И, наконец, внутренняя часть остаётся непрозрачной. Структуру сложно прочитать, документация не появляется, а поведение описано только в самом промпте.

AI-ассистированная или «взрослая» разработка

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

Чтобы такой процесс держался, нужна база — набор практик, на которых стоит взрослая разработка с AI-агентами. Далее рассмотрим три фундаментальных опоры, которые формируют этот режим работы.

Столп №1. SDD — разработка через спецификации

Когда AI-агент работает в проекте не один раз, а системно, ему необходима опора. Ему нужно понимать, какие элементы уже существуют, что требуется добавить, какие связи нельзя нарушать и какое поведение считается корректным. Такое основание создаётся заранее и становится центром всего процесса. На этом и строится подход SDD (Specification-Driven Development) — разработка, движущаяся от спецификаций к коду.

1. Техническое задание как точка входа

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

2. Формирование tech_spec.md

Следующий шаг — генерация основного файла проекта. В tech_spec.md (название файлы вы можете придумать сами, это лишь пример) описывается структура приложения, связи между модулями, формат данных, API и список допущений. Этот файл становится опорой для всех последующих действий. Он не остаётся статичным: по мере развития проекта в него добавляются изменения, чтобы AI-агент работал в актуальном контексте.

3. Код как производный слой

Только после фиксации структуры генерируется код. AI-агент опирается на спецификацию и не принимает решения «вслепую». Это даёт более-менее предсказуемый результат. При необходимости код можно собрать повторно, поскольку AI-агент будет опираться на ту же спецификацию, что и раньше.

Столп №2. Контекст и декомпозиция

Модель работает внутри ограниченного окна внимания: она использует только те данные, которые получилa в текущем запросе. Поэтому проект удерживается не объёмом переданной информации, а правильной последовательностью шагов. Чтобы работа шла предсказуемо, задача раскладывается на части, и каждая часть сопровождается отдельным набором вводных.

1. Дробление задачи на модули

Проект разбивается на небольшие фрагменты — отдельные компоненты, сценарии или функции. Такой формат снижает нагрузку на AI-агента и позволяет ему точнее интерпретировать требования.

2. Контекст для каждого шага

Перед каждым действием AI-агент получает только тот объём информации, который относится к текущему фрагменту. Вводные обновляются по мере движения, чтобы агент не терял опорные элементы.

3. Поддержание документации

Все изменения надо отражать в спецификациях и вспомогательных файлах. Документация должна развиваться вместе с задачей и служить дополнительным источником контекста.

4. Связь со структурой проекта

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

Согласитесь, это всё очень напоминает нормальную работу с коллегами по проекту? Не переусложнять задачу, объяснять важные нюансы подробно, фиксировать всё в технической документации, верно?

Столп №3. Feedback loop: код, который контролирует код

Когда AI-агент участвует в развитии проекта, ему нужно не только генерировать файлы, но и проверять собственные решения. Такой режим формирует обратную связь, в которой каждый шаг проходит через последовательный цикл действий. AI создаёт код, пишет тесты, обновляет документацию, запускает получившийся результат и анализирует поведение. Если возникают ошибки, они исправляются в том же цикле. Процесс повторяется до тех пор, пока решение не придёт в устойчивое состояние.

1. Генерация и тестирование в одном контуре

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

2. Автоматический запуск и анализ

После генерации запускается выполнение тестов. Ошибки и некорректные состояния фиксируются, и AI-агент получает возможность сразу их разобрать.

3. Исправление и уточнение поведения

Иногда тестов мало и требуется протестировать полноценный функционал. Тогда AI-агент самостоятельно запускает код на выполнение, разбирает логи и корректирует код по фактическим результатам. Исправления отражаются в спецификации, чтобы обновлённая логика стала частью общей структуры проекта. Это позволяет двигаться дальше, отталкиваясь от актуальной версии, не теряя связи между кодом, тестами и описанием поведения.

4. Контроль целостности решения

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

AI-агент — не просто генератор кода

Не всегда очевидна разница между понятиями “AI-модель” и “AI-агент”. Фактически, разница в том, что AI-агент - это самостоятельно действующая сущность, которая использует AI-модель (или даже несколько разных) для рассуждений, принятия решений и генерации ответов на вопросы. Но помимо рассуждений, AI-агент умеет использовать инструменты для выполнения каких-то действий, потому что работа над проектом требует способности работать с файлами, запускать код, анализировать результат и поддерживать структуру на каждом шаге.

AI-агент работает в окружении, близком к рабочей среде разработчика. Он получает доступ к файловой системе проекта, читает код отдельных модулей, сравнивает версии файлов, создаёт новые директории, правит существующий код и т.д.. При необходимости запускает приложения в тестовом режиме, собирает вывод консоли, анализирует логи и отслеживает расхождения между ожидаемым и фактическим поведением.

В процессе решения задач агент использует готовые инструменты: MCP-серверы, CLI-утилиты и другой вспомогательный функционал разработчика, которые доступны в среде. Он способен формировать запросы к внешним сервисам, подбирать правильные параметры, интерпретировать ответы и использовать результаты в последующих шагах.

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

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

Почему важно вырасти из вайбкодинга

1. Скорость даёт ложное чувство достаточности

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

2. Рынок уже перешёл к более зрелой модели разработки

В крупных решениях уже заметную часть кода генерируют агенты. Есть жизнеспособные проекты, где весь код целиком был сгенерирован AI-агентами. Такие подходы перестали быть экспериментами — это текущая инженерная практика, которую компании используют в продакшене.

3. Работа с моделями требует процесса, а не набора удачных промптов

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

Наш опыт

Я не могу рассказывать о том, как AI используется в разработке самого Битрикс24, но с удовольствием поделюсь результатами команд, занятых развитием наших инструментов разработки (SDK, UI Kit, прочих boilerplates) и наших собственных интеграций, которые мы не включаем в состав продукта по умолчанию, а размещаем в качестве решений в нашем Маркетплейс.

Могу сказать, что с августа практически на 100% релизы нашего официального B24PHPSDK состоят из кода, сгенерированного AI-агентами. Как оказалось, SDK уже был готов к этому за счет того самого Feedback loop, изначально заложенного в проект библиотеки. Там уже была построенная система юнит-текстов и интеграционных тестов, которая позволяет не разваливать существующий функционал при обновлениях. Также существовала техническая спецификация для контрибьюторов. Всё, что нам потребовалось — это слегка дополнить спецификации для AI-агента, чтобы он глубже «понимал» архитектуру библиотеки.

Те же принципы мы стали изначально закладывать в SDK для Python, чтобы в дальнейшем оперативно наращивать покрытие методов REST API с помощью AI-агентов. Человек закладывает архитектуру, ИИ-агенты быстро наращивают «мясо» вокруг этого.

Для команды, которая занимается разработкой различного рода интеграций в виде приложений для нашего Маркетплейса, включение AI-агентов потребовало более серьезных изменений.

Мы начали с того, что пересмотрели архитектуру и даже технологический стек, чтобы сделать их более удобными для дальнейшей работы с AI-агентами. Это заняло довольно много времени само по себе, поскольку в процессе мы проводили эксперименты с генерацией кода приложений. Проектирование системных требований и архитектуры мы тоже делали с участием AI в качестве собеседника и консультанта.

В итоге мы пришли к некоторому внутреннему шаблону приложения, готовому к дальнейшей разработке с помощью AI-агентов. И на базе этого уже разработали очередное приложение, которое готовим сейчас к публикации в Маркетплейс. На секундочку, 100% кода было сгенерировано AI-агентом. Все новые приложения мы планируем создавать тем же образом, чтобы повысить эффективность команды. Разработчики становятся тимлидами, которые курируют разработку проекта, помогают AI-агентам оставаться в нужным рамках и контролируют результат.

Получив, таким образом, proof of concept, мы решили помочь всем остальным разработчикам, которые занимаются созданием индивидуальных и тиражных решений на REST API Битрикс24.

Теперь вы тоже можете начать разработку с помощью AI-агентов используя готовый стартер https://github.com/bitrix-tools/b24-ai-starter.

Он представляет собой универсальную основу с готовым фронтом на официальном UI Kit, и тремя вариантами бэка на PHP, Python и NodeJS. А кроме этого, он включает в себя «базу знаний» в виде набора инструкций для AI-агентов, которые помогут модели лучше понять особенности реализации проекта, познакомят с особенностями Битрикс24 (как регистрировать встройки, как добавлять своего CRM-робота и т.д.).

Мы уже протестировали этот стартер в рамках AI-хакатона, участники которого должны были создать прототип приложения не занимаясь «ручным» программированием, а генерируя код с помощью AI-агента. По результатам мероприятия мы улучшили стартер и теперь будем развивать его вместе с коммьюнити.

В заключении могу только сказать, что реальность программирования изменилась. AI-ассистированная разработка всё чаще становится частью наших рабочих процессов. И те из нас, кто раньше остальных начнут пользоваться этими преимуществами, очевидно, сделают свою работу более эффективной в сравнении с конкурентами.

Следите за новыми постами
Следите за новыми постами по любимым темам
43 открытий682 показов