Цикл многоагентной работы · теория
Multi-agent · dispatch · claim · release
Один агент за раз - это потолок. Когда нужно сделать пять PRD, пройти ревью на трёх ADR и собрать evidence по двум направлениям, последовательная работа становится бутылочным горлышком. Forgeplan даёт три примитива - dispatch, claim, release - которые превращают одну сессию в команду из 2-5 параллельных agent'ов, работающих в одном репо без конфликтов.
01 · Почему solo-agent упирается в потолок
Хирург не оперирует один. Анестезиолог, ассистент, операционная сестра - каждый держит своё поле
В операционной четверо людей работают параллельно. Хирург режет. Анестезиолог следит за жизненными показателями. Ассистент держит крюки и подаёт инструменты. Операционная сестра - стерильность и инструментальный стол. Никто не лезет на чужое поле - иначе коллизия, ошибка, иногда смерть пациента.
Один человек, даже самый опытный, не может одновременно резать и следить за наркозом. То же с агентами в репо: один Claude Code не может одновременно писать PRD и проводить adversarial review этого же PRD - это та же сессия, она защищает свой предыдущий ответ.
- Пишу PRD-001 · 30 мин
- Пишу PRD-002 · ещё 30 мин
- Adversarial review PRD-001 в той же сессии - bias защиты
- Evidence collection · ещё 20 мин
- Score → activate · 10 мин
- worker-1 пишет PRD-001
- worker-2 пишет PRD-002 (другой bucket)
- reviewer в чистой сессии - adversarial review
- Каждый claim'ит свой артефакт · WIP=1
- Orchestrator собирает evidence и активирует
Без координации параллельные агенты столкнутся: двое claim'ят один артефакт, evidence
пишется одновременно в одно место, activate срабатывает дважды. dispatch +
claim + release - это не «фича», это обязательный
протокол, без которого многоагентная работа разваливается за один сессионный заход.
02 · Три примитива координации
Каждый примитив отвечает за один аспект многоагентной работы
Это не «три отдельные команды», которые нужно помнить. Это три фазы одного цикла: planner режет работу на конфликт-free куски (dispatch), worker берёт один под себя с TTL (claim), после завершения возвращает (release). Цикл повторяется.
forgeplan dispatch --agents 3 --jsonrelated_artifacts
и не разделяет связанные узлы по разным worker'ам.
03 · WIP=1 hard limit и pattern адверсариального ревью
Один agent - один claim в каждый момент. И adversarial review - всегда чистая сессия
В операционной у каждого участника бригады одно поле в каждый момент.
Анестезиолог не может одновременно следить за наркозом и помогать держать крюк - иначе
одно из двух будет сделано плохо. То же с агентами: WIP=1 (Work-In-Progress = 1) -
claim не пускает второй активный claim того же агента.
Live claims · текущее состояние
| Artifact | Agent | Task | TTL left |
|---|---|---|---|
| PRD-054 | worker-1 | draft OAuth login PRD | 25m |
| PRD-055 | worker-2 | draft email digest PRD | 12m |
| PRD-056 | worker-3 | draft search v2 PRD | 28m |
| ADR-007 | reviewer | adversarial review (clean session) | 15m |
Когда worker-2 попробует claim'ить PRD-056 - получит ошибку: уже занят
worker-3. CLI вернёт Or: с альтернативой (другая задача из
bucket'а worker-2) или Wait: до release. Это и есть WIP=1
hard limit: ни один artifact не работает с двумя agent'ами одновременно.
Когда worker-1 закончил PRD-054 - adversarial review запускает
reviewer в чистой сессии, с пустым контекстом. Не та же
worker-1, не orchestrator. Это hard rule из BMAD: в той же сессии модель защищает свой
предыдущий ответ. Multi-agent протокол даёт естественный способ соблюсти правило -
для review всегда отдельный agent.
Полный цикл на одной волне · 3 worker'а + reviewer
Параллельная разработка трёх фич: OAuth, email digest, search v2. Orchestrator (вы) делит работу через dispatch, три worker'а ведут PRD, reviewer проводит adversarial review.
forgeplan dispatch --agents 3 --json
Planner возвращает 3 bucket'а: worker-1 (OAuth, 4 артефакта), worker-2 (digest, 3 артефакта), worker-3 (search, 3 артефакта). Buckets конфликт-free, проверены по DAG.
Каждый worker в своей сессии Claude Code → claim --ttl 30
worker-1 claim'ит PRD-054. worker-2 - PRD-055. worker-3 - PRD-056. forgeplan claims показывает 3 активных claim'а. WIP=1 у каждого worker'а соблюдён.
Параллельная работа в 3 сессиях · drafting, evidence, validate
Каждый worker отвечает за свой bucket. Если TTL подходит к концу, а работа не закончена - forgeplan claim <id> --extend 30. Если worker свободен раньше - release и claim следующий артефакт из bucket'а.
Каждый завершённый PRD → reviewer claim'ит в чистой сессии
reviewer открывает PRD-054, в новой Claude Code сессии без контекста worker-1, запускает adversarial review. Находит 5-7 проблем, 2 реальные. Возвращает worker-1 с правками. Цикл повторяется.
Порядок работы завершён → release возвращает в pool
После activate каждого PRD worker делает release. Orchestrator видит, что bucket опустел, запускает следующую волну dispatch или закрывает сессию.