Получить ментальную модель всей системы: какие группы агентов существуют, как идут потоки управления, какие подсистемы их связывают. После этой главы вы сможете на собеседовании за 5 минут нарисовать архитектуру ControlFlow на доске.
- Агент (agent) — Markdown-файл с YAML-frontmatter, описывающий роль для LLM. Не процесс, не сервис.
- Subagent — агент, который вызывается из другого агента, а не пользователем напрямую. Соглашение в имени:
*-subagent.agent.md. - Оркестратор (Orchestrator) — единственный «дирижёр». Не реализует сам, а делегирует.
- Volнa (wave) — группа фаз плана, исполняемых параллельно. Wave N+1 ждёт окончания wave N.
- Гейт (gate) — точка контроля, в которой проверяется условие и принимается решение GO/REPLAN/ABSTAIN.
- Контракт (schema) — JSON-схема, которой обязан соответствовать выход агента.
flowchart TB
User([Пользователь])
subgraph Entry["Точки входа"]
direction LR
Planner
Orch[Orchestrator]
Researcher[Researcher-subagent]
CM[CodeMapper-subagent]
end
subgraph Review["Адверсариальное ревью плана"]
direction LR
PA[PlanAuditor-subagent]
AV[AssumptionVerifier-subagent]
EV[ExecutabilityVerifier-subagent]
end
subgraph Exec["Исполнители"]
direction LR
Core[CoreImplementer-subagent]
UI[UIImplementer-subagent]
Plat[PlatformEngineer-subagent]
Tech[TechnicalWriter-subagent]
BT[BrowserTester-subagent]
end
subgraph PostReview["Пост-ревью"]
CR[CodeReviewer-subagent]
end
User -->|расплывчатая задача| Planner
User -->|готовый план| Orch
User -->|исследование| Researcher
User -->|разведка кода| CM
Planner -->|handoff| Orch
Orch --> Review
Review --> Orch
Orch --> Exec
Exec --> CR
CR --> Orch
Orch -->|approval gate| User
Planner -.->|context| Researcher
Planner -.->|context| CM
Orch -.->|context| Researcher
Orch -.->|context| CM
ControlFlow содержит 13 агентов, разделённых на 5 функциональных групп:
Это агенты, которых пользователь вызывает напрямую.
| Агент | Когда вызывать |
|---|---|
| Planner | Задача расплывчата или требует разбиения. Выходом будет план. |
| Orchestrator | Готовый план или конкретная задача с понятными требованиями. |
| Researcher-subagent | Глубокое исследование вопроса с цитированием источников. |
| CodeMapper-subagent | Быстрая разведка: «где в коде такая-то логика?» |
Researcher и CodeMapper также являются точками входа, хотя по соглашению в имени — subagent. Это исключение: они достаточно автономны, чтобы вызываться напрямую.
Эти агенты только читают артефакты и только во время PLAN_REVIEW. Они никогда не пишут код и никогда не появляются как executor_agent в фазах плана.
| Агент | Что ищет |
|---|---|
| PlanAuditor-subagent | Проблемы архитектуры, безопасности, рисков, отсутствие отката. |
| AssumptionVerifier-subagent | «Миражи» — утверждения в плане, не подтверждённые кодовой базой. 17 паттернов. |
| ExecutabilityVerifier-subagent | Холодный старт первых 3 задач: достаточно ли в них конкретики, чтобы исполнитель не «застрял»? |
Эти агенты создают и изменяют файлы. Они вызываются Orchestrator-ом по полю executor_agent фазы плана.
| Агент | Домен |
|---|---|
| CoreImplementer-subagent | Бэкенд-код, тесты, любая нон-UI имплементация. Канонический backbone. |
| UIImplementer-subagent | Фронтенд: компоненты, стили, accessibility, responsive. |
| PlatformEngineer-subagent | CI/CD, контейнеры, инфраструктура, deployment с rollback-ом. |
| TechnicalWriter-subagent | Документация, диаграммы, parity между кодом и доками. |
| BrowserTester-subagent | E2E браузерные тесты, accessibility-аудит. |
| Агент | Когда вызывается |
|---|---|
| CodeReviewer-subagent | После каждой фазы исполнения; опционально на финальном этапе для LARGE-задач. |
Единственный, кто видит всю картину и принимает решения о делегировании, ревью, эскалации.
sequenceDiagram
participant U as User
participant P as Planner
participant O as Orchestrator
participant R as Reviewers
participant E as Executor
participant CR as CodeReviewer
U->>P: расплывчатая идея
P->>P: idea interview (если нужно)
P->>U: askQuestions при ambiguity
P->>P: research → design → planning
P->>O: handoff (plan_path)
O->>R: PLAN_REVIEW (по тиру)
R-->>O: verdicts
O->>U: approval gate
U-->>O: approved
loop по фазам
O->>E: delegate phase
E-->>O: execution report
O->>CR: review phase
CR-->>O: verdict
O->>U: phase approval
end
O->>U: completion summary
Когда subagent в исполнении наталкивается на ambiguity, он возвращает NEEDS_INPUT с clarification_request. Orchestrator показывает варианты пользователю через vscode/askQuestions, получает ответ, и повторяет ту же задачу с добавленным контекстом. Подробнее — глава 05.
Каждый сбой получает failure_classification (transient / fixable / needs_replan / escalate). Orchestrator маршрутизирует автоматически по таблице из главы 13: retry, retry с подсказкой, replan, или эскалация к человеку.
| Подсистема | Где живёт | Зачем |
|---|---|---|
| Schemas | schemas/*.json |
Контракты между агентами; основа eval-проверок. |
| Governance | governance/*.json |
Разрешения на инструменты, политики retry, маршрутизация моделей. |
| Skills | skills/patterns/*.md |
Переиспользуемые экспертные знания, выбираемые Planner-ом. |
| Memory | NOTES.md, plans/artifacts/, /memories/ |
Трёхслойная модель: session / task-episodic / repo-persistent. |
| Eval harness | evals/ |
Оффлайн-проверки качества всей системы. |
Каждая из них — отдельная глава пособия (09–14).
- Разделение планирования и исполнения. Planner не пишет код. CoreImplementer не меняет дизайн.
- Адверсариальное ревью до исполнения. Дешевле найти проблему в плане, чем в коде.
- Контракты вместо доверия. Каждое сообщение между агентами — JSON со схемой.
- Гейты человеческого одобрения. На границах фаз и волн пользователь подтверждает продолжение.
- Явная taxonomy сбоев. Любой сбой классифицируется одним из 4 классов и маршрутизируется детерминированно.
- Fail-loud, abstain-safe. Если агент не уверен — он возвращает ABSTAIN, а не угадывает.
- Минимум привилегий. Каждый агент имеет ровно тот набор инструментов, который ему нужен (
governance/agent-grants.json). - Структурированный текст. Агенты не выводят raw JSON в чат — это пустая трата контекста.
- «Subagent — это агент, выполняющий subtask». Нет, это просто соглашение об имени; subagent отличается от не-subagent тем, что обычно вызывается из другого агента, а не пользователем.
- «PlanAuditor исполняет фазы». Нет, это исключительно read-only ревьюер, никогда не появляется в
executor_agent. - «Orchestrator пишет код». Нет, он только дирижирует. Если он начинает писать — это нарушение контракта.
- «Можно вызвать любой исполнитель напрямую». Технически да, но они спроектированы для вызова из Orchestrator-а с готовым контекстом фазы.
- (новичок) Нарисуйте на бумаге диаграмму всех 13 агентов, сгруппированных по 5 категориям. Сверьтесь с диаграммой выше.
- (новичок) Откройте
plans/project-context.md, найдите таблицу «Phase Executor Agents». Совпадает ли она с разделом «Исполнители» из этой главы? - (средний) Какие три агента не могут появиться в поле
executor_agentфазы плана и почему? - (средний) Откройте 3 агентских файла на ваш выбор. Найдите в каждом раздел
Tools → Allowed. Заметили, что у read-only агентов набор существенно меньше? - (продвинутый) Объясните, почему
Researcher-subagentиCodeMapper-subagentмогут быть точками входа, хотя в имени у нихsubagent.
- Перечислите 5 функциональных групп агентов.
- Какой агент является «каноническим backbone» для имплементеров?
- Что делает PLAN_REVIEW и кто в нём участвует?
- Почему Orchestrator не может одновременно быть исполнителем фазы?
- Какая подсистема связывает агентов через формальные контракты?