Если бы компилятор умел варить чай, он, наверное, налил бы идеально — и, как выяснилось, иногда даже лучше, чем я: 16 агентов Claude написали 100 000 строк кода компилятора на Rust. Эта история от Николаса Карлини — одновременно инженерный отчёт и маленький эксперимент по проверке, что получится, если дать LLM не просто подсказку, а целую команду и бесконечный цикл работы.
Идея проста и дерзка: запустить множество экземпляров Claude в контейнерах, дать каждому локальную копию репозитория и оставить их в «бесконечном цикле» — когда агент закончил задачу, он берёт следующую. Координация решается через git‑замки в папке current_tasks: кто‑то создал файл — задача занята; произошёл конфликт — агент умеет мержить. Такой подход позволил параллелить багфиксинг, специализировать роли (документация, оптимизация, слияние дубликатов) и в итоге собрать компилятор, способный собирать Linux 6.9 на x86, ARM и RISC‑V.
Ключевые уроки: тесты должны быть почти безупречны — агент ровно так и будет исправлять то, что проверяется; среда должна «думать» в удобном для модели формате (короткие логи, машинно‑читаемые ERROR‑строки, README с прогрессом); и при параллельной работе полезна идея «орукла» — использовать GCC как эталон, чтобы разделить область поиска ошибок при сборке ядра. Ссылки на исходники и тесты есть в репозитории: https://github.com/anthropics/claudes-c-compiler и на GCC: https://gcc.gnu.org/.
Есть и ограничения: нет собственного ассемблера/линкера, 16‑битный загрузочный код для реального режима x86 автор отдал GCC, а качество сгенерированного кода уступает оптимизированному GCC. Но результат — серьёзный веховый сигнал: агентские команды расширяют рамки задач, которые можно поручить LLM, и тянут нас в новый мир разработки, где люди задают цели и проверяют результаты, а агенты выполняют массу рутинной и творческой работы.
