Fan-out агентов и git worktree: параллельные правки без конфликтов
Пообещать параллелизм легко, сделать его безопасным — сложно. Muse Code решает задачу старой и скучной технологией git, применённой ровно там, где надо.
Паттерн: один родитель, много детей с правом записи
В основе Muse Code лежит простое правило: если работа распадается на несколько независимых задач, они автоматически разлетаются по отдельным агентам. Родительский агент порождает по одному дочернему агенту с правом записи на каждую задачу. Ничего настраивать не нужно, никакого специального «параллельного режима» нет — декомпозиция и раздача задач включены по умолчанию всегда, когда объём работы того стоит.
И тут же возникает очевидный вопрос: если несколько агентов одновременно пишут код в одном репозитории, почему всё не заканчивается мердж-конфликтами и затёртыми файлами?

Реальная сессия с fan-out: шесть задач по одной игре, четыре уже смерджены, две ещё в работе — каждая в своём worktree внутри .muse/worktrees/, а основная рабочая копия не тронута.
Worktree: изоляция средствами самого git
Каждый дочерний агент получает собственный git worktree — отдельный чекаут репозитория, который делит историю с вашей основной копией, но имеет свою рабочую директорию и свою ветку. Два агента могут править один и тот же файл, каждый в своём worktree, и ни один не увидит незавершённых изменений другого. Коллизия невозможна структурно.
Не менее важно другое: ваша рабочая копия остаётся чистой. Директория, открытая у вас в редакторе, — никогда не та, в которой сейчас что-то меняет агент. Ничего не ползёт под курсором, в вашем diff не всплывают полусырые правки, а выбросить работу агента стоит ровно столько же, сколько удалить его worktree. Изменения попадают в вашу ветку только тогда, когда работа закончена и проверена.
Почему не просто ветки? Или контейнеры?
Обычные ветки делят одну рабочую директорию — переключение ветки посреди задачи выдернуло бы ковёр из-под работающего агента. Полноценные контейнеры или клоны репозитория сработали бы, но это тяжёлая артиллерия: дублирование хранилища объектов, медленный старт, неудобный мердж. Worktree — золотая середина. Создаются почти мгновенно, используют общую базу объектов git, а слить готовую ветку дочернего агента обратно — это обычный git: ни кастомного слоя синхронизации, которому надо доверять, ни проприетарного состояния, которое придётся дебажить.
Шесть фич одновременно — и это можно показать
Демо на запуске опирались на этот механизм по полной: в примере с разработкой игры Muse Code строил шесть игровых фич одновременно, каждый агент в своём worktree, и все ветки слились без конфликтов. В этом и есть практический выигрыш — время многофичевого спринта по часам схлопывается до длительности самой долгой задачи, а не суммы всех.
Попробуйте рецепт
Fan-out агентов — один из трёх паттернов, для которых Meta публикует рецепты в кукбуке: разбейте одну большую работу на субагентов так, чтобы ничто не сталкивалось на лету. Запускаемая версия — в кукбуке. А поскольку разветвлённую работу вам наверняка захочется потом проаудировать, каждый спавн дочернего агента, каждый вызов инструмента и каждый мердж фиксируются в журнале событий — ничего не происходит «за кадром» только потому, что происходило параллельно.