Основные выводы
- AWS Emulator — это локальный эмулятор сервисов AWS, на 100% написанный автономными ИИ-агентами.
- Тысячи автономных агентов пишут тесты, находят проблемы и исправляют код без участия человека.
- Исходный код доступен на GitHub под лицензией CC0 и постоянно обновляется.
Я ужасный художник. Так было всегда. Родители отдали меня в детский сад на год раньше. Однажды воспитательница усадила класс за один из тех длинных столов. Она раскатала по нему гигантский рулон бумаги и попросила нас нарисовать картину о том, как выглядела Земля во времена динозавров. Я усердно принялся за работу над своим участком сцены. Но, будучи одним из самых младших в классе, я еще не обладал достаточной моторикой, чтобы правильно держать восковой мелок. Спустя несколько минут одноклассники кричали на меня. Я все сделал неправильно.
В этом году я часто вспоминал тех одноклассников. Точно так же, как они выходили из себя из-за меня, я ловил себя на том, что ругаю матом своих ИИ-агентов чаще, чем мне хотелось бы признавать. Но ни в одном из случаев дело не в злом умысле. Агенты не пытаются меня ослушаться, точно так же, как я не пытался испортить рисунок с динозаврами моего класса. Дело в нехватке компетенции. Ранее в этом году моя партнерша купила книжку-раскраску, и мы потратили часы на то, чтобы раскрашивать ее вместе. Было в этом что-то утешительное — когда тебе дают четко очерченную область для заполнения, зная, что в итоге сложится большая картина. Я думаю, агентам тоже нужны книжки-раскраски.
Сегодня мы выпустили AWS Emulator — локальный эмулятор сервисов AWS, который вы можете запустить на своем компьютере для создания и тестирования ваших приложений AWS. Эмулятор был написан полностью автономными агентами. Наша команда не написала и не проверила ни строчки кода. Мы смогли это сделать, потому что созданные нами правила безопасности дали агентам простор для самостоятельной работы, а нам — уверенность в том, что они не выходят за эти рамки.
AWS Emulator начинался как эксперимент выходного дня
Ранее в этом году исследователи из Anthropic продемонстрировали, что ИИ-агенты могут автономно создавать C-компилятор. Это стало озарением: если предоставить четко определенную спецификацию и эталонную реализацию, агенты могут автономно создать решение, которое точно реализует эту спецификацию. У AWS есть и то, и другое; модели API AWS — это наша спецификация, а реальное облако AWS — наша эталонная реализация. Чтобы проверить свою гипотезу, я дал Kiro самый простой промпт, какой только смог придумать, без всяких ожиданий, что это сработает:
- Написать тесты на основе интерфейса командной строки AWS (CLI)
- Итеративно дорабатывать эти тесты до тех пор, пока они не начнут проходить успешно на реальном AWS
- Создать реализацию в памяти, против которой эти же тесты будут успешно проходить
Kiro вернулся через 15 минут с приемлемой первой версией Amazon Simple Queue Service (Amazon SQS). Я уточнил свой промпт и заставил Kiro написать остальную часть AWS за выходные. И он это сделал. Очевидно, в нем были пробелы, но они были достаточно незначительными, чтобы моя команда начала использовать его для тестирования нашего ПО уже в понедельник.
Превращение этого в надежный продукт заняло больше, чем одни выходные. В наши дни возникает естественный соблазн увидеть подобные результаты и поверить, что ИИ может создать все что угодно. Возможно, когда-нибудь так и будет. Но создание того, что вы готовы с уверенностью передать в руки клиентов, по-прежнему требует серьезных инженерных усилий. В случае с AWS Emulator это потребовало создания защитных механизмов, которые гарантируют, что агенты работают в рамках наших правил.
Как три команды ИИ-агентов создают AWS Emulator
AWS Emulator в своей основе создается тремя командами агентов. Одна команда управляет набором тестов; одна команда находит проблемы в эмуляторе; и одна команда исправляет эти проблемы. Мы разделяем обязанности агентов по этим командам, потому что заметили: они добиваются больших успехов в решении ограниченных задач.
Иллюстрация, показывающая, как команды ИИ-агентов работают вместе для запуска тестов и решения проблем.
Набор тестов первой команды измеряет соответствие реальному облаку AWS. Каждый тест представляет собой реальный сценарий AWS. Например, тест для Amazon SQS может включать создание очереди, отправку сообщения, его получение, подтверждение приема и удаление очереди. Агенты разрабатывают эти тесты на основе общедоступных моделей API AWS и проверяют каждый из них на реальном AWS перед отправкой. У нас есть десятки тысяч тестов на соответствие для всех сервисов AWS, и этот набор тестов постоянно растет по мере того, как наши агенты открывают новые возможности для работы с AWS. Эти тесты являются одним из самых фундаментальных защитных механизмов в нашей системе, поскольку они предоставляют четкую цель, которой должны достичь агенты, и могут запускаться повторно без нового обращения к AWS.
Вторая команда агентов проигрывает тесты на соответствие, чтобы обнаружить расхождения в эмуляторе. Когда система только создала репозиторий, она сгенерировала пустой веб-сервер, который мог обрабатывать запросы для 438 моделей API AWS, но ничего не делал. Агенты наводняют репозиторий, чтобы выяснить, что не работает. Для запуска процесса первые задачи звучат просто: «создать первую версию Amazon SQS». Как только сервис запущен, агенты проигрывают тесты на соответствие и регистрируют проблемы для упавших тестов. Им поручено анализировать сбои и группировать те из них, которые могут иметь общую первопричину.
Каждая проблема передается агенту из третьей команды, задача которого — исправить эту конкретную проблему. Они выкачивают код, находят первопричину проблемы и редактируют код до тех пор, пока она не будет устранена. Затем они должны пропустить свое изменение кода через шлюз, который гарантирует его соответствие нашим стандартам. Этот шлюз, очевидно, блокирует изменения, которые не компилируются. Но он также включает агентов, которые проверяют код на соответствие стандартам кодирования, убеждаются в его безопасности и гарантируют, что изменение не привело к регрессии соответствия. Если какая-либо из этих проверок не проходит, изменение возвращается агенту на доработку; если все они проходят, оно объединяется в основную ветку. Мы видим, как тысячи проблем исправляются ежедневно, пока сотни агентов параллельно работают с кодовой базой. Без этого шлюза слияния мы бы не доверяли тому, что создают наши агенты. Мы уделяем много внимания его оптимизации, так как это критически важно для скорости и надежности работы агентов.
Как AWS Emulator попадает на GitHub
После слияния с основной веткой изменения проходят через конвейер релиза, построенный полностью на базе AWS Developer Tools, где AWS CodeCommit выступает в роли основного репозитория кода для агентов. Коммиты обычно объединяются, собираются и повторно тестируются перед тем, как мы объединяем их в релизную ветку. Затем мы упаковываем эмулятор в бинарный файл, который вы можете скачать. Только в самом конце процесса релиза мы также публикуем код на GitHub.
Три команды ИИ-агентов создают AWS Emulator.
Мы публикуем код на GitHub, чтобы вы тоже могли увидеть, что агенты сделали при создании этого эмулятора за тысячи коммитов. Каждое созданное задание находится в репозитории. Те, которые они исправили, находятся в директории «issues/things-that-now-work»; те, что в их бэклоге, — в «issues/things-that-do-not-work». Если покопаться, вы найдете много интересного. Наши агенты создавали множество версий этого эмулятора по мере того, как мы дорабатывали систему сборки. Мой личный фаворит — версия из прошлого, когда они решили написать собственный интерпретатор Python для поддержки функций AWS Lambda. С тех пор мы велели им повторно использовать существующие библиотеки — вещь, которая может показаться очевидной кому-то, кому уже не нужна книжка-раскраска. Мне не терпится узнать, к каким еще оригинальным решениям придут агенты в этой версии. Но я уверен в результате благодаря нашим защитным механизмам. Инсайты, полученные за это время, стали главной причиной нашего решения выпустить это программное обеспечение как общественное достояние по лицензии Creative Commons CC0.
Что ждет AWS Emulator в будущем
Это первая часть серии публикаций, в которых я подробнее остановлюсь на таких темах, как проектирование нашего многоагентного рабочего процесса, измерение степени соответствия оригиналу и поддержание стандартов качества и безопасности.
Исходный код и тесты на соответствие доступны на GitHub.












