AI News

Автономные агенты (Autonomous Agents) и будущее программной инженерии

В ходе масштабной демонстрации возможностей автономного ИИ исследователи Anthropic успешно использовали команду из 16 параллельных ИИ-агентов для создания функционального компилятора C с нуля. Используя недавно выпущенную модель Claude Opus 4.6, этот эксперимент знаменует собой переход от традиционной парадигмы «ИИ как помощник в написании кода» к новой эре — «ИИ как команда разработчиков». Проект, результатом которого стал написанный на Rust компилятор объемом 100 000 строк, способный скомпилировать ядро Linux 6.9, дает наглядное представление о потенциале и текущих ограничениях многоагентной программной инженерии (multi-agent software engineering).

Эксперимент под руководством исследователя Anthropic Николаса Карлини был разработан для стресс-тестирования возможностей «Команд агентов» (Agent Teams) модели Opus 4.6. В отличие от стандартных помощников по кодингу, которые требуют постоянных подсказок от человека, эти агенты работали автономно в течение почти 2 000 сеансов выполнения. Они брали задачи в работу, писали код, запускали тесты и итерировали решения при ошибках с минимальным вмешательством человека, при этом стоимость использования API составила около $20 000.

Эксперимент: Создание компилятора с нуля

Цель была амбициозной: создать на Rust компилятор C, который мог бы успешно скомпилировать ядро Linux 6.9 для архитектур x86, ARM и RISC-V. Эта задача требует высокоточной логики, глубокого понимания системных архитектур и строгого соблюдения стандартов — областей, в которых большие языковые модели (LLM) исторически испытывали трудности с последовательностью на длительных интервалах.

Исследовательская группа развернула 16 агентов Claude Opus 4.6, работающих параллельно. Чтобы управлять этой распределенной рабочей силой, они спроектировали среду совместной работы, в которой агенты действовали в независимых контейнерах Docker. Система использовала механизм lock-файлов для резервирования задач и Git для контроля версий, имитируя рабочий процесс элементарной человеческой команды разработчиков.

Ключевые показатели проекта

Метрика Значение Описание
Используемая модель Claude Opus 4.6 Новейшая передовая модель Anthropic, предназначенная для долгосрочных задач
Размер команды 16 параллельных агентов Автономные экземпляры, работающие одновременно
Всего сессий ~2 000 Количество автономных циклов выполнения
Общая стоимость ~$20 000 Расчетные затраты на API для всего проекта
Объем кода ~100 000 строк Размер результирующего компилятора на базе Rust
Критерий успеха Ядро Linux 6.9 Успешно скомпилированные загрузочные ядра для x86, ARM, RISC-V

Инженерия автономности: Валидация как способ контроля

Важнейшим выводом этого эксперимента является смещение механизмов контроля. В традиционной разработке программного обеспечения менеджеры-люди координируют задачи и проверяют код. В этом агентном рабочем процессе валидация стала основной плоскостью управления. Агенты в значительной степени полагались на надежные наборы тестов и «заведомо верные оракулы» (known-good oracles) для проверки своего прогресса.

Когда агенты сталкивались с препятствиями, такими как огромная сложность компиляции всего ядра Linux, система использовала стратегию дифференциального тестирования. Сравнивая вывод своего компилятора с установленным компилятором GCC (служащим оракулом), агенты могли изолировать несоответствия и самокорректироваться. Эта стратегия «декомпозиции» позволила агентам разбить монолитную задачу компиляции ядра на более мелкие, проверяемые единицы, что обеспечило устойчивое параллельное выполнение без постоянной поддержки со стороны человека.

Возможности и «правда» о командах агентов

Успешная компиляция ядра Linux, наряду с другими сложными проектами с открытым исходным кодом, такими как QEMU, FFmpeg, SQLite и Redis, подчеркивает несколько «истин» о текущем состоянии автономного ИИ:

  • Длительное выполнение возможно: При правильной поддержке ИИ-агенты могут сохранять контекст и продвигать прогресс в течение недель, а не минут. Система выносила состояние вовне — в кодовую базу и логи сборки, что позволяло агентам непрерывно продолжать работу.
  • Параллелизм требует независимости: Агенты работали эффективно, когда задачи можно было разделить. Использование стандартных протоколов (например, lock-файлов) позволяло им работать одновременно, хотя они часто сталкивались с конфликтами слияния — весьма человеческой проблемой в программной инженерии.
  • Чистовая реализация (Clean-Room Implementation): Компилятор создавался без прямого доступа к интернету во время разработки, опираясь исключительно на стандартную библиотеку Rust и обучающие данные модели, что продемонстрировало усвоенные моделью знания теории компиляторов и семантики C.

«Вызов»: Ограничения и инженерные реалии

Несмотря на громкий успех, проект выявил значительные ограничения, которые определяют «вызов» (dare) для будущих разработок. Результат, хотя и был функциональным, не являлся коммерчески жизнеспособным кодом.

  • Эффективность и оптимизация: Сгенерированный код был заметно неэффективным. Даже с включенными оптимизациями результат работы ИИ-компилятора был медленнее, чем результат GCC с отключенными оптимизациями. Агенты отдавали приоритет корректности (прохождению тестов), а не производительности.
  • Архитектурные пробелы: Агенты испытывали трудности с компонентами системы на «последней миле». Им не удалось реализовать 16-битный бэкенд x86, необходимый для загрузки Linux, что потребовало возврата к GCC для этого конкретного компонента. Аналогично, компоненты ассемблера и линковщика содержали ошибки и были неполными.
  • Авторитет человека: «Автономия» была ограниченной. Исследователям-людям по-прежнему приходилось определять архитектуру, устанавливать рамки и вмешиваться, когда агенты заходили в тупик (например, проблема с 16-битным компилятором). Высокоуровневое проектирование системы оставалось исключительно обязанностью человека.

Анализ сдвига: от помощника к члену команды

Этот эксперимент представляет собой фундаментальный сдвиг в том, как мы рассматриваем ИИ в жизненном цикле разработки ПО (SDLC). Мы переходим от модели «копилота» (copilot), где ИИ предлагает варианты в режиме реального времени, к «агентной» модели, где ИИ получает задачу и возвращает готовый запрос на слияние (merge request).

Сравнение моделей разработки с ИИ

Характеристика Модель Copilot / Помощник Модель команды агентов
Взаимодействие Синхронное (человек в цикле) Асинхронное (человек над циклом)
Масштаб Уровень функции/фрагмента Уровень модуля/проекта
Контекст Текущий файл/открытые вкладки Весь репозиторий и логи сборки
Контроль Проверка каждой строки человеком Автоматические тесты и конвейеры CI/CD
Основное узкое место Концентрация внимания человека Качество набора тестов и декомпозиция

Путь вперед

Для разработчиков и технических директоров (CTO) последствия очевидны, но имеют свои нюансы. Технологии для полной замены разработчиков-людей не существует; отсутствие архитектурного предвидения и возможностей оптимизации в компиляторе, созданном агентами, доказывает это. Однако возможность переложить «рутину» (toil) — повторяющуюся реализацию четко определенных спецификаций — становится реальностью.

Успех эксперимента Anthropic в значительной степени опирался на инженерию валидации (validation engineering). Агенты были ровно настолько эффективны, насколько эффективны были тесты, которые ими руководили. Это говорит о том, что будущая роль старшего инженера по программному обеспечению будет все больше смещаться в сторону проектирования этих «каркасов» — архитектурных границ, наборов тестов и критериев успеха, которые позволяют автономным агентам безопасно выполнять тяжелую работу.

Как отмечают аналитики The Futurum Group, хотя эти результаты основаны на внутренних экспериментах создателей модели в «чистых условиях», они создают доказательство концепции (proof-of-concept) для промышленного масштаба агентного ИИ. Теперь задача переходит из плоскости «может ли ИИ писать код?» в плоскость «можем ли мы проектировать системы, которые позволяют ИИ писать код безопасно?».

Эра автономных программных агентов еще не наступила в полной мере, но с компиляцией ядра Linux она определенно «загрузилась».

Рекомендуемые