16 нейросетей собрались в чате и написали ядро Linux
Шестнадцать автономных ИИ-агентов Claude совместно написали новый компилятор языка C и даже смогли собрать рабочее ядро Linux. Эксперимент обошелся примерно в 20 000 долларов, занял две недели и выглядел впечатляюще, но без плотного контроля со стороны человека дело все же не обошлось.
Исследователь компании Anthropic Николас Карлини рассказал о проекте, в котором запустил 16 экземпляров модели Claude Opus 4.6 в общей среде разработки. Каждому агенту выдали доступ к одному хранилищу кода и набор задач. Они сами выбирали, что исправлять и что добавлять дальше, синхронизировали изменения и разрешали конфликты версий без центрального управляющего узла. Всего прошло почти 2000 сеансов работы, а итоговый объем кода превысил 100 000 строк. Компилятор написан на языке Rust и способен собирать загружаемое ядро Linux версии 6.9 для архитектур x86, ARM и RISC-V.
Разработчики выложили результат в открытый доступ. Компилятор смог собрать ряд крупных открытых проектов, среди них PostgreSQL, SQLite, Redis, FFmpeg и QEMU. Он прошел около 99% проверок из стрессового набора тестов для компиляторов GCC и даже справился со сборкой и запуском игры Doom, что сам автор эксперимента назвал показательной проверкой для разработчика.
При этом задача была во многом удобной именно для ИИ. Спецификация языка C давно устоялась, существуют подробные тестовые наборы и эталонные компиляторы для сверки результата. В реальной разработке чаще всего сложнее не написать код, а правильно сформулировать требования и проверки, чего здесь не требовалось.
Ограничений у проекта тоже немало. Компилятор не умеет генерировать 16-битный код для x86, который нужен на ранней стадии загрузки Linux, поэтому на этом шаге используется GCC. Собственные ассемблер и компоновщик пока работают с ошибками. Даже при включенных оптимизациях результат получается менее эффективным, чем код GCC без оптимизаций. Качество исходников на Rust остается рабочим, но заметно уступает уровню опытного разработчика. По словам Карлини, по мере роста проекта исправление одних ошибок часто ломало уже работающие части.
Автор называет реализацию «чистой», потому что агенты не имели доступа к интернету во время работы. Однако сами модели обучались на огромных массивах открытого исходного кода, где почти наверняка были и GCC, и Clang, и другие компиляторы. В классическом понимании «чистая» разработка означает, что создатели не видели оригинальную реализацию, поэтому такое определение вызвало споры среди программистов.
Сумма в 20 000 долларов покрывает только расходы на обращения к интерфейсу модели. В нее не входят затраты на обучение самой модели, а также ручная работа по подготовке среды. Карлини пришлось создать специальные стенды тестирования, систему непрерывных проверок и механизмы обратной связи. Например, подробные журналы тестов перегружали рабочий контекст модели и мешали ей, поэтому вывод пришлось сокращать до коротких сводок.
Также выяснилось, что модель не ощущает время и может часами гонять проверки без прогресса, поэтому добавили ускоренный режим с выборочной проверкой 1-10% тестов. Когда все агенты застряли на одной и той же ошибке в ядре Linux, в схему включили GCC как эталон для сравнения, чтобы распределить задачи по разным файлам.
Исследователь отмечает, что год назад языковые модели не могли приблизиться к созданию рабочего компилятора даже при неограниченном бюджете и постоянном присмотре. Подход с группой параллельных агентов и координацией через систему контроля версий он считает перспективным. В то же время его беспокоит тенденция к внедрению программ, которые разработчики не проверяли лично. По его мнению, это может стать новой зоной риска в безопасности программного обеспечения.