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




