- Команда AI-редактора Cursor разработала мультиагентную систему, способную писать код без участия человека, сделавшую 1000 коммитов в час.
- Финальная архитектура системы строится по принципу иерархической команды с планировщиками, воркерами и передачей подробной обратной связи без глобальной синхронизации.
- Для повышения производительности команда пожертвовала 100%-ной безошибочностью, разрешив системе допускать и самостоятельно исправлять незначительные ошибки.
Исследователи из команды AI-редактора Cursor представили детальный разбор архитектуры мультиагентной системы, разработанной для автономного написания кода. В центре эксперимента находился проект веб-браузера, реализованный на языке Rust. Система на пике производительности делала около 1000 коммитов в час и совершила порядка 10 миллионов вызовов инструментов за неделю без какого-либо вмешательства человека.
Разработка системы оказалась нетривиальной: первые попытки применять равноправных агентов, работающих с единым координирующим файлом, привели к серьезным ошибкам с блокировками и потерей производительности. Следующая версия архитектуры, подразумевавшая жесткое разделение ролей на планировщика, исполнителей, воркеров и судью, хоть и повысила эффективность, но упиралась в ограничение самого медленного исполнителя. Третья схема — непрерывный исполнитель, способный самостоятельно планировать — дала патологические сбои: агенты часто «засыпали», не делегировали задачи и преждевременно отмечали их выполнение.
В итоге команда Cursor пришла к модели, напоминающей структуру традиционной команды разработки. Главный планировщик отвечает за общую задачу и порождает подпланировщиков для отдельных направлений. Воркеры получают конкретные задачи и работают в изолированных копиях репозитория, не имея полного представления о системе. По факту выполненной работы они передают подробный «хэндофф» — содержащий комментарии, сомнения и отклонения от плана, что позволяет не использовать глобальную синхронизацию и обеспечивает гибкий обмен информацией по цепочке управления.
Одним из ключевых наблюдений стало выявление того, что требование стопроцентной корректности каждого коммита негативно сказывалось на производительности. Малейшая опечатка или изменение API останавливали работу всей системы: агенты пытались одновременно исправлять одни и те же ошибки, что снижало эффективность. Для решения этой проблемы разработчики сознательно допустили некоторый процент ошибок, которые затем оперативно исправлялись другими агентами. Для релизов оставалась отдельная «зеленая» ветка с финальной проверкой кода.
Также было отмечено, что качество и четкость начальных инструкций важнее даже, чем сама архитектура и модель искусственного интеллекта. Нечеткие формулировки, например, «реализуй спецификацию», приводили к отвлечению агентов на пограничные и редко встречающиеся задачи. На практике лучше срабатывали ограничения вроде «никаких TODO и частичных реализаций» и конкретные числовые диапазоны задач, вместо расплывчатых указаний «сделай много».
По мнению автора исследования Уилсона Лина, к системе искусственного интеллекта стоит относиться как к новому сотруднику, владеющему инженерными знаниями, но незнакомому с конкретной кодовой базой. Такое отношение поможет выстроить эффективное взаимодействие и добиться высокого качества конечного продукта.
