Skip to content

Цикл многоагентной работы · теория

Multi-agent · dispatch · claim · release

Один агент за раз - это потолок. Когда нужно сделать пять PRD, пройти ревью на трёх ADR и собрать evidence по двум направлениям, последовательная работа становится бутылочным горлышком. Forgeplan даёт три примитива - dispatch, claim, release - которые превращают одну сессию в команду из 2-5 параллельных agent'ов, работающих в одном репо без конфликтов.

01 · dispatch
Planner делит работу
Конфликт-free buckets · JSON-ответ
02 · claim
Agent берёт под себя
TTL · WIP=1 · exclusive ownership
03 · release
Возвращает в pool
Порядок работы завершён · готов следующий claim

01 · Почему solo-agent упирается в потолок

Концепция 01 · аналогия операционной бригады

Хирург не оперирует один. Анестезиолог, ассистент, операционная сестра - каждый держит своё поле

В операционной четверо людей работают параллельно. Хирург режет. Анестезиолог следит за жизненными показателями. Ассистент держит крюки и подаёт инструменты. Операционная сестра - стерильность и инструментальный стол. Никто не лезет на чужое поле - иначе коллизия, ошибка, иногда смерть пациента.

Один человек, даже самый опытный, не может одновременно резать и следить за наркозом. То же с агентами в репо: один Claude Code не может одновременно писать PRD и проводить adversarial review этого же PRD - это та же сессия, она защищает свой предыдущий ответ.

Solo · последовательно
Один агент, пять задач - поочерёдно
  • Пишу PRD-001 · 30 мин
  • Пишу PRD-002 · ещё 30 мин
  • Adversarial review PRD-001 в той же сессии - bias защиты
  • Evidence collection · ещё 20 мин
  • Score → activate · 10 мин
~1.5 часа · paradox of bias · контекст-window переполнен
Multi · параллельно
Три agent'а, одна сессия-orchestrator
  • worker-1 пишет PRD-001
  • worker-2 пишет PRD-002 (другой bucket)
  • reviewer в чистой сессии - adversarial review
  • Каждый claim'ит свой артефакт · WIP=1
  • Orchestrator собирает evidence и активирует
~30 мин · no bias · каждая сессия со свежим контекстом
Параллельность ≠ хаос

Без координации параллельные агенты столкнутся: двое claim'ят один артефакт, evidence пишется одновременно в одно место, activate срабатывает дважды. dispatch + claim + release - это не «фича», это обязательный протокол, без которого многоагентная работа разваливается за один сессионный заход.

02 · Три примитива координации

Концепция 02 · dispatch / claim / release

Каждый примитив отвечает за один аспект многоагентной работы

Это не «три отдельные команды», которые нужно помнить. Это три фазы одного цикла: planner режет работу на конфликт-free куски (dispatch), worker берёт один под себя с TTL (claim), после завершения возвращает (release). Цикл повторяется.

01 · planner
forgeplan dispatch --agents N
Возвращает план: какие артефакты разделить между N agent'ами так, чтобы они не пересекались. JSON-ответ с группами файлов и их owner'ом.
когда - в начале параллельной волны
02 · worker
forgeplan claim <id> --agent <name> --ttl-minutes 30
Берёт артефакт под себя с истечением через N минут. Другие agent'ы видят claim и не трогают. Если TTL вышел и release не было - claim авто-снимается.
когда - перед началом работы над артефактом
03 · worker
forgeplan release <id>
Возвращает артефакт в общий pool. После release другой agent (или вы сами) может его claim'ить. Если работа не завершена и TTL близок - продлеваем claim, не release.
когда - после завершения работы над артефактом
Пример вывода · forgeplan dispatch --agents 3 --json
worker-1 4 задачи
PRD-054 · OAuth login
EVID-018 · benchmark JWT
ADR-007 · auth strategy
RFC-012 · token rotation
worker-2 3 задачи
PRD-055 · Email digest
SPEC-009 · template engine
EVID-019 · render perf
worker-3 3 задачи
PRD-056 · Search v2
RFC-013 · BM25 vs vec
EVID-020 · index size
Buckets конфликт-free: ни один артефакт не в двух bucket'ах. Внутри bucket'а порядок - по зависимостям DAG (parent перед child). Planner смотрит related_artifacts и не разделяет связанные узлы по разным worker'ам.
Терминал · полный цикл dispatch → claim → work → release $ forgeplan dispatch --agents 3 --json Returns 3 buckets · no overlap # Worker-1 (новая сессия Claude Code) $ forgeplan claim PRD-054 --agent worker-1 --ttl-minutes 30 Claimed by worker-1, expires in 30m # ...работа над PRD-054... $ forgeplan release PRD-054 Released · available for next claim Next: forgeplan claim EVID-018 --agent worker-1 --ttl 30 # Orchestrator смотрит общее состояние $ forgeplan claims 3 active claims · worker-1: PRD-054 (25m left) · worker-2: PRD-055 (12m) · worker-3: PRD-056 (28m)

03 · WIP=1 hard limit и pattern адверсариального ревью

Концепция 03 · правила и анти-паттерны

Один agent - один claim в каждый момент. И adversarial review - всегда чистая сессия

В операционной у каждого участника бригады одно поле в каждый момент. Анестезиолог не может одновременно следить за наркозом и помогать держать крюк - иначе одно из двух будет сделано плохо. То же с агентами: WIP=1 (Work-In-Progress = 1) - claim не пускает второй активный claim того же агента.

Live claims · текущее состояние

$ forgeplan claims live snapshot · обновляется в реальном времени
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'ами одновременно.

Adversarial review - обязательно отдельный 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.

01 · dispatch

forgeplan dispatch --agents 3 --json

Planner возвращает 3 bucket'а: worker-1 (OAuth, 4 артефакта), worker-2 (digest, 3 артефакта), worker-3 (search, 3 артефакта). Buckets конфликт-free, проверены по DAG.

02 · claim ×3

Каждый 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'а соблюдён.

03 · work

Параллельная работа в 3 сессиях · drafting, evidence, validate

Каждый worker отвечает за свой bucket. Если TTL подходит к концу, а работа не закончена - forgeplan claim <id> --extend 30. Если worker свободен раньше - release и claim следующий артефакт из bucket'а.

04 · adversarial

Каждый завершённый PRD → reviewer claim'ит в чистой сессии

reviewer открывает PRD-054, в новой Claude Code сессии без контекста worker-1, запускает adversarial review. Находит 5-7 проблем, 2 реальные. Возвращает worker-1 с правками. Цикл повторяется.

05 · release

Порядок работы завершён → release возвращает в pool

После activate каждого PRD worker делает release. Orchestrator видит, что bucket опустел, запускает следующую волну dispatch или закрывает сессию.