Агенты по написанию кода на основе ИИ от OpenAI, Anthropic и Google теперь могут работать над программными проектами в течение нескольких часов, создавая полноценные приложения, запуская тесты и исправляя ошибки под контролем человека. Но эти инструменты не являются волшебными и могут скорее усложнить, чем упростить программный проект. Понимание того, как они работают, поможет разработчикам понять, когда (и стоит ли) их использовать, и избежать распространённых ошибок.
Начнём с основ: в основе каждого агента ИИ для написания кода лежит технология под названием «большая языковая модель» (БЯМ). Это разновидность нейронной сети, обученной на огромных массивах текстовых данных, в том числе на большом количестве программного кода. Это машина для сопоставления шаблонов, которая с помощью подсказки «извлекает» сжатые статистические представления данных, которые она видела во время обучения, и выдаёт правдоподобное продолжение этого шаблона в качестве результата. В этом извлечении большая языковая модель может интерполировать данные из разных областей и концепций, что при грамотном подходе приводит к полезным логическим выводам, а при неграмотном — к ошибкам конфабуляции.
Затем эти базовые модели дорабатываются с помощью таких методов, как тонкая настройка на тщательно отобранных примерах и обучение с подкреплением на основе обратной связи от человека (RLHF), которые позволяют модели следовать инструкциям, использовать инструменты и выдавать более полезные результаты.
В течение последних нескольких лет исследователи искусственного интеллекта изучали недостатки LLM и находили способы их устранения. Одним из недавних нововведений стала имитационная модель рассуждений, которая генерирует контекст (расширяя подсказку) в виде текста в стиле рассуждения, который может помочь магистру права получить более точный результат. Еще одним нововведением стало приложение, называемое “агентом”, которое связывает несколько LLM вместе для одновременного выполнения задач и оценки результатов.
Как устроены агенты по написанию кода
В этом смысле каждый агент по написанию кода на основе ИИ — это программная оболочка, которая работает с несколькими языковыми моделями. Как правило, существует «управляющая» языковая модель, которая интерпретирует задачи (подсказки) пользователя, а затем распределяет их между параллельными языковыми моделями, которые могут использовать программные инструменты для выполнения инструкций. Управляющий агент может прерывать выполнение задач и оценивать результаты подзадач, чтобы видеть, как продвигается проект. В технической документации Anthropic описывается этот шаблон как «собери контекст, соверши действие, проверь результат, повтори».
При локальном запуске через интерфейс командной строки (CLI) пользователи предоставляют агентам условное разрешение на запись файлов на локальном компьютере (кода или чего-либо ещё, что необходимо), выполнение исследовательских команд (например, «ls» для вывода списка файлов в каталоге), получение данных с веб-сайтов (обычно с помощью «curl»), загрузку программного обеспечения или отправку файлов на удалённые серверы. Такой подход открывает множество возможностей (и потенциальных опасностей), поэтому его следует использовать с осторожностью.
Напротив, когда пользователь запускает задачу в веб-агенте, таком как веб-версии Codex и Claude Code, система предоставляетизолированный облачный контейнер с предустановленным репозиторием кода пользователя, где Codex может читать и редактировать файлы, запускать команды (в том числе тестовые наборы и линтеры) и выполнять код в изолированной среде. Claude Code от Anthropic использует функции на уровне операционной системы для создания файловой системы и сетевых границ, в рамках которых агент может работать более свободно.
Проблема контекста
У каждой языковой модели, так сказать, есть кратковременная память, которая ограничивает объём данных, которые она может обработать, прежде чем «забудет», что делала. Это называется «контекстом». Каждый раз, когда вы отправляете ответ управляющему агенту, вы дополняете одно гигантское сообщение, которое включает в себя всю историю диалога (и весь сгенерированный код, а также токены имитации рассуждений, которые модель использует, чтобы «подумать» над проблемой). Затем модель ИИ оценивает это сообщение и выдаёт результат. Это очень ресурсозатратный процесс, который увеличивается в квадратичной зависимости от размера запроса, поскольку языковые модели обрабатывают каждый токен (фрагмент данных) против каждого другого токена в запросе.
Команда разработчиков Anthropic описывает контекст как ограниченный ресурс с убывающей отдачей. Исследования выявили то, что учёные называют «контекстной деградацией»: по мере увеличения количества токенов в контекстном окне способность модели точно воспроизводить информацию снижается. Каждый новый токен истощает то, что в документации называется «бюджетом внимания».
Это ограничение контекста естественным образом ограничивает размер кодовой базы, которую LLM может обработать за один раз. Если вы загружаете в модель ИИ множество огромных файлов с кодом (которые LLM должна повторно оценивать каждый раз, когда вы отправляете новый ответ), это может довольно быстро привести к исчерпанию лимита токенов или использования.
Хитрости ремесла
Чтобы обойти эти ограничения, создатели агентов для написания кода используют несколько хитростей. Например, модели ИИ настраиваются таким образом, чтобы писать код для передачи задач другим программным инструментам. Например, они могут писать скрипты на Python для извлечения данных из изображений или файлов, вместо того чтобы передавать весь файл в LLM, которая сохраняет токены и позволяет избежать неточных результатов.
В документации Anthropic отмечается, что Claude Code также использует этот подход для комплексного анализа данных в больших базах данных, составляя целевые запросы и используя команды Bash, такие как «head» и «tail», для анализа больших объёмов данных без загрузки полных объектов данных в контекст.
(В некотором смысле эти ИИ-агенты представляют собой управляемые, но полуавтономные программы, использующие инструменты, которые являются важным дополнением к концепции, которую мы впервые увидели в начале 2023 года.)
Ещё одним важным достижением в области ИИ-агентов стало динамическое управление контекстом. Агенты могут делать это несколькими способами, которые не раскрываются полностью в проприетарных моделях кодирования, но мы знаем самый важный метод, который они используют: сжатие контекста.
Когда языковая модель с обучением на основе кода приближается к пределу контекста, этот метод сжимает историю контекста, обобщая её, при этом теряя детали, но сокращая историю до ключевых моментов. В документации Anthropic описывается такое «сжатие» как высокоточное извлечение содержимого контекста с сохранением ключевых деталей, таких как архитектурные решения и нерешённые проблемы, при этом удаляются избыточные выходные данные инструментов.
Это означает, что агенты ИИ, занимающиеся кодированием, периодически «забывают» большую часть того, что они делают, при каждом сжатии данных. Но в отличие от более старых систем на основе больших языковых моделей, они не теряют полностью представление о том, что произошло, и могут быстро переориентироваться, прочитав существующий код, заметки в файлах, журналы изменений и так далее.
Документация Anthropic рекомендует использовать файлы CLAUDE.md для документирования распространённых команд bash, основных файлов, служебных функций, рекомендаций по стилю кода и инструкций по тестированию. AGENTS.md, ставший стандартом для многих компаний, — ещё один полезный способ направлять действия агентов в промежутках между обновлением контекста. Эти файлы служат внешними заметками, которые позволяют агентам отслеживать прогресс в выполнении сложных задач, сохраняя при этом критически важный контекст, который в противном случае был бы утрачен.
Для задач, требующих длительной работы, обе компании используют мультиагентные архитектуры. Согласно исследованию Anthropic документация, в системе используется «шаблон оркестратора и исполнителя», при котором ведущий агент координирует процесс, делегируя задачи специализированным субагентам, которые работают параллельно. Когда пользователь отправляет запрос, ведущий агент анализирует его, разрабатывает стратегию и запускает субагентов для одновременного изучения различных аспектов. Субагенты действуют как интеллектуальные фильтры, возвращая ведущему агенту только релевантную информацию, а не весь контекст.
Мультиагентный подход быстро расходует токены. В документации Anthropic отмечается, что агенты обычно используют примерно в четыре раза больше токенов, чем чат-боты, а мультиагентные системы — примерно в 15 раз больше токенов, чем чаты. Для экономической целесообразности этим системам требуются задачи, ценность которых достаточно высока, чтобы оправдать возросшие затраты.
Рекомендации для людей
Хотя в некоторых кругах программистов использование этих агентов вызывает споры, если вы используете их для написания кода, знание передовых методов разработки программного обеспечения поможет избежать проблем в будущем. Например, полезно знать о контроле версий, создании инкрементных резервных копий, поэтапном внедрении функций и их тестировании перед переходом к следующему этапу.
То, что люди называют «vibe-кодингом» — создание кода с помощью ИИ без понимания того, что он делает, — явно опасно для производственной работы. Внедрение кода, который вы не писали сами, в производственную среду сопряжено с риском, поскольку это может привести к проблемам с безопасностью, другим ошибкам или накоплению технического долга, который со временем может увеличиться в разы.
Независимый исследователь в области искусственного интеллекта Саймон Уиллисон недавно заявил, что разработчики, использующие агентов для написания кода, по-прежнему несут ответственность за проверку работоспособности своего кода. «Почти каждый может попросить большую языковую модель сгенерировать патч на тысячу строк и отправить его на проверку кода, — написал Уиллисон. — Это больше не имеет ценности. Ценно то, что код работает».
На самом деле ключевую роль играет планирование человеком. В документации Claude Code по лучшим практикам рекомендуется использовать определённый порядок действий для решения сложных задач: сначала попросите агента прочитать соответствующие файлы и чётко скажите ему, чтобы он пока не писал код, а затем попросите его составить план. Документация предупреждает, что без этих этапов исследования и планирования Claude будет сразу переходить к написанию кода для решения.
Без планирования LLM иногда ищут быстрые решения для достижения сиюминутной цели, которая может быть нарушена позже, если проект будет расширен. Таким образом, имея некоторое представление о том, что создает хорошую архитектуру для модульной программы, которая может быть расширена с течением времени, вы сможете направить магистра права на создание чего-то более надежного.
Как упоминалось выше, эти агенты не идеальны, и некоторые люди предпочитают вообще не использовать их. Рандомизированное контролируемое исследование опубликованное некоммерческой исследовательской организацией METR в июле 2025 года показало, что опытным разработчикам с открытым исходным кодом на самом деле требовалось на 19 % больше времени для выполнения задач с использованием инструментов ИИ, несмотря на то, что они считали, что работают быстрее. Авторы исследования отмечают несколько важных моментов: разработчики имели большой опыт работы с кодовыми базами (в среднем пять лет и 1500 коммитов), репозитории были крупными и зрелыми, а используемые модели (в основном Claude 3.5 и 3.7 Sonnet через Cursor) с тех пор были заменены более функциональными версиями.
Будут ли новые модели выдавать другие результаты, пока неизвестно, но исследование показывает, что инструменты для написания кода на основе ИИ не всегда могут обеспечить универсальное ускорение, особенно для разработчиков, которые хорошо знают свои кодовые базы.
Учитывая эти потенциальные риски, демонстрационные версии и внутренние инструменты для проверки концепций, вероятно, являются наиболее подходящим вариантом использования агентов для написания кода. Поскольку модели ИИ не обладают реальной свободой действий (несмотря на то, что их называют агентами) и не являются людьми, которых можно привлечь к ответственности за ошибки, ключевой роль играет контроль со стороны человека.