
Cursor опубликовала результаты эксперимента со вторым поколением своего "роя агентов" — системы, в которой сотни ИИ-агентов параллельно работают над одной кодовой базой. Задача — реализовать на Rust движок базы данных по 835-страничной документации SQLite. Без исходников, без готовых тестов, без бинарника оригинала и без доступа в интернет. Самая дешевая связка моделей уложилась в счет $1339 за четырехчасовой прогон. Главная находка — экономическая: та же задача с теми же моделями в других конфигурациях стоила до $10 565, и всю разницу сделала организация работы.
Прогресс мерили по sqllogictest — тестовому набору самого проекта SQLite с миллионами запросов и известными правильными ответами. Рой о существовании тестов не знал, а после каждого прогона авторы вручную проверяли код на читерство и убеждались, что система построена равномерно, а не только там, куда "смотрят" тесты.
Рой строится вокруг дерева задач, а агенты делятся на две роли. Планировщики на самых умных моделях режут цель на куски и делегируют их вниз, воркеры на быстрых и дешевых моделях исполняют. Смысл в том, что контекст каждого агента остается маленьким: планировщик никогда не пишет код и не забивает память деталями, воркер никогда не планирует и тратит весь контекст на свою задачу. По мнению Cursor, именно это объясняет, почему одиночные агенты на длинных задачах "плывут" — им приходится держать в голове и общую цель, и конкретный кусок работы одновременно.

Цену координации нагляднее всего показали прогоны Grok 4.5 — модели, которую Cursor обучала вместе с xAI (ныне SpaceXAI). Под старой версией роя Grok 4.5 выдал 68 000 коммитов за первые два часа, в 70 раз быстрее нового роя, — но это была не продуктивность, а агония: накопилось больше 70 000 конфликтов слияния, копились они все быстрее, и прогон остановили, не дожидаясь конца второго часа (новый рой за полные четыре часа собрал меньше тысячи).
Вскрытие показало ровно те же болезни, что у больших человеческих команд:
Раздвоение архитектуры: планировщики, не знавшие друг о друге, реализовали одни и те же концепции по несколько раз — проект расползся на 54 пакета-крейта, включая три независимых SQL-пакета, тогда как новый рой рано зафиксировал девять и больше не добавил ни одного.
Войны за территорию: планировщики раз за разом переписывали правки друг друга в одних и тех же файлах.
Мегафайлы: популярные файлы бесконтрольно росли, потому что каждый агент добавлял понемногу, а следить за размером было некому, — один такой файл собрал 7771 конфликт от 1173 разных агентов, тогда как в новом рое самый горячий файл пережил 47.
И "окостенение": агенты, наученные работой в человеческих кодовых базах, боялись трогать код ядра системы, даже когда его надо было менять.
Лечили это, по сути, корпоративным менеджментом. Планировщики теперь обязаны сами принимать дизайн-решения и следить, чтобы два поддерева не решали один и тот же вопрос. Решения фиксируются в общих дизайн-доках, а в коде стоит ссылка на документ, которую проверяет компилятор; если доки противоречат друг другу, их сводит отдельный агент-примиритель. Конфликты слияния разруливает нейтральный агент-арбитр — аналог merge queue в командах. Раздувшийся файл любой воркер может пометить флажком: новые коммиты в него блокируются, и внешний агент режет его на модули. Наконец, разрешена "намеренная поломка": агент может сознательно сломать код ядра ради нужного изменения, оставив комментарий с обоснованием, — компилятор разнесет ошибки по системе, и каждый, кто на них наткнется, прочитает причину и обновит свой кусок.
Под это перестроили и инфраструктуру. Git с блокировками на уровне всего репозитория не выдерживал темпа, поэтому Cursor написала собственную систему контроля версий: старый рой на Git в пике выдавал около 1000 коммитов в час, новая VCS — около 1000 коммитов в секунду. Поверх работает многослойное ревью: одни агенты-ревьюеры видят полный транскрипт воркера, другие только результат, третьи только кодовую базу, часть работает на других моделях. Ни одна "линза" не ловит все, но некоррелированные линзы складываются — Cursor сравнивает это с компонентами автопилота. А еще агенты ведут Field Guide — общую папку заметок для будущих агентов, которую курируют сами; авторы называют это стигмергией, по аналогии с тем, как муравьи координируются через изменение среды.
По оценке Cursor, новая версия роя обошла старую во всех четырех конфигурациях: GPT-5.5 соло, Grok 4.5 соло, Opus 4.8 как планировщик с Composer 2.5 в роли воркеров и Fable 5 с теми же воркерами. Связка с Fable 5 прошла около двух третей тестов уже за первый час. К четырехчасовой отсечке новые прогоны показывали 73–85% против 11–77% у старых, а при продолжении работы все новые конфигурации дошли до 100%. Кода при этом понадобилось в разы меньше: связке с Fable 5 хватило 9908 строк движка там, где старый рой написал 64 305; у связки с Opus — 4645 строк против 19 013.
Теперь экономика — ради нее, судя по заголовку, пост и писался. Качество у всех конфигураций сопоставимое, а счета — от $1339 у связки Opus 4.8 + Composer 2.5 до $10 565 у GPT-5.5, работавшего и планировщиком, и воркером (Grok 4.5 соло — $1928, связка с Fable 5 — $2234). Токены при этом жгут в основном воркеры: минимум 69% во всех прогонах, а в большинстве — больше 90%. Формула выгоды простая: моментов, где реально нужна самая умная модель, в большой задаче немного — декомпозиция, дизайн-решения, компромиссы. Когда дорогая модель приняла спорные решения и свела задачу к явной инструкции, дешевой остается только исполнять. В прогоне, где воркерами был GPT-5.5, они одни стоили $9373; флот воркеров Composer 2.5 в связке с Opus обошелся в $411. Любопытная сноска: GPT-5.6 Sol, которую изначально хотели взять как самую сильную конфигурацию, из сравнения убрали — модель оказалась слишком чувствительной к буквальным и акцентированным формулировкам промптов и уходила в "неуправляемые спирали", каких не выдавала ни одна другая.
Заканчивают авторы красиво: автодополнение позволяло работать на уровне строки, ранние модели — на уровне блока, агенты — на уровне файла или фичи, а с роями единицей работы становится спека — развернутое описание того, что должно получиться. Дефицитом, по их прогнозу, будет не написание кода, а точное описание намерения.
P.S. Поддержать меня можно подпиской на канал "сбежавшая нейросеть", где я рассказываю про ИИ с творческой стороны.
Комментарии (17)

Void-Cowboy
20.07.2026 22:27Ага, и нейросеть не обучали на коде самого sqlite и прочих открытых базах данных, а так же гигиайтов переписок и тематических форумов
Притом что та самая документация на 800+ станиц служила простым фактчекингом, что нейросети умеют отлично (смотрим что должно быть и подгняем под это результат). То есть такое АИ-решение максимум соотвествует только документации (и то сомнительно, на таком обьеме в мелочах будут проблемы, даже после сотни прогонов и перепроверок), но никто не говорит за оптимальность и полноценное использование всех фишек языка

EgorSharin
20.07.2026 22:27Ну, вот. Я хотел это написать, а Вы меня опередили. Поэтому, просто плюсую.

Gapon65
20.07.2026 22:27Прикольно было бы если бы модели тренировали не на существующем коде, а книгах, наподобие:
"Relational Database Design and Implementation" by Jan L. Harrington
-
Database Systems: The Complete Book
by Hector Garcia-Molina (Author), Jeffrey Ullman (Author), Jennifer Widom (Author)
Любопытно было бы посмотреть на результат :)

EgorSharin
20.07.2026 22:27Было бы интересно почитать перлы, которые этот ИИ выдавал бы.
Скорее всего, “SELECT * FROM table_name” было бы почти что абсолютным максимумом доступной ИИ мудрости.

DmitryR1974
20.07.2026 22:27Это будет следующим большим этапом развития ИИ. Современный ИИ пока что слишком маленький для того, чтобы учить его, как человека, на энциклопедиях, и на текущих вычислительных мощностях такое обучение заняло бы слишком много времени.

krote
20.07.2026 22:27Учитывая столь подробное и притом непротиворечивое ТЗ, по сути можно говорить о трансляции с человеческого языка Rust.
Впрочем подобное все-равно конечно впечатляет.

Cenn
20.07.2026 22:27Очень интересная новость, но есть небольшая кучка вопросов, а именно: производительность, размер (как самого решения, так в оперативной памяти при работе), насколько полным было тестирование полученного результата (особено транзакционного механизма).
И самое главное, а пробовали внести изменения в тз, для получения новой версии (с фичей) , при сохранении совместимости хотя-бы по структуре хранения (про совместимость самого sql надеюсь говорить не надо).

kuza2000
20.07.2026 22:27А новый вариант sqllite для тестов выложен?

Dhwtj
20.07.2026 22:27https://github.com/cursor/minisqlite
100.000 строк кода если суммировать размер трейтов
И столько же непонятно чего, видимо тестов

Dhwtj
20.07.2026 22:27835 страниц ТЗ
Видимо, всё же 200.000 строк, судя по https://github.com/cursor/minisqlite
9000 строк это про какой-то кусок
9000 строк кода - контекст удержится целиком10.000-30.000$
Не впечатляет!
Разве что время решения, ради которого и создавался рой.

Dhwtj
20.07.2026 22:27И там замечание прилетело
Заголовок поста гласит, что тесты sqllogictest на 100% соответствуют заявленному стандарту . Это действительно важный шаг, но, исходя из многолетнего опыта работы над соответствием стандарту SQLite, я бы осторожно возразил против того, чтобы рассматривать это как «паритет SQLite», потому что sqllogictest и собственный набор тестов TCL для SQLite имеют совершенно разные уровни сложности , и эту разницу легко недооценить.
sqllogictest почти полностью состоит из проверок корректности строк результатов для правильно сформированных запросов .
Пакет тестов TCL для SQLite проверяет документированное поведение SQLite : точный текст сообщений об ошибках

LuciusWill
20.07.2026 22:27Прогресс. Это хорошо. Но как многие точно подметили, сама подробнейшая спека это уже почти готовый код.
Интересно посмотреть, как такие рои могли бы сами автономно разрабатывать подобные системы. Без готовых спеков.
Если они всё ещё слабы в этом, то надо прокачивать их в данном направлении.
corw
Я не очень понимаю, как выражение "с нуля" соотносится с документацией на 835 страниц. Это можно трактовать как угодно, но не с нуля. Кхм.
beskov
по тз — это условно с 0, тк ни одной строчки кода не было
Wesha
whoisking
А вы полагаете, что эти 835 страниц все родились то того, как была написана первая строчка кода?