ADR-0003: Three-Tier Agent Hierarchy
Status
Accepted (2026-04-14)
Context
Исходная концепция: плоская структура — 30-50 агентов под одним оркестратором (CEO).
Проблемы плоской структуры:
- Контекст оркестратора раздувается при 30+ ролях в системном промпте
- Стоимость токенов для routing растёт квадратично (CEO должен знать все роли)
- Отладка сложна: один уровень, непонятно кто отвечает за что
- Agent coupling: все зависят от одного CEO промпта
Требования к решению:
- Узкий контекст для каждого агента
- Clear ownership: кто за что отвечает
- Добавление новых агентов без изменения core
- Аналогия реальной компании (понятно людям)
Decision
3-tier иерархия + cross-cutting agents:
L1: CEO (1) — единственный с доступом к user
L2: Directors (5-7) — по департаментам
L3: Executors (15-30) — узкие исполнители
X: Cross-cutting (2-3) — Judge, Librarian
Агенты общаются только через task queue. CEO не видит executors — только Directors. Directors не видят друг друга (только через CEO).
Alternatives Considered
Option A: Flat — CEO → 30+ Agents
- Pros: простая routing логика, один уровень
- Cons: context bloat (CEO промпт = 30+ ролей), quadratic routing cost (каждое сообщение = выбор из 30), tight coupling (новый агент = изменение CEO промпта), debug nightmare
Option B: 4-tier — CEO → VPs → Directors → Executors
- Pros: больше decoupling, VP уровень для cross-department coordination
- Cons: overkill для 30-50 агентов (у нас не 500), больше latency на каждый tier, сложнее понимать и объяснять, VP уровень = overhead без ценности на этом масштабе
Option C: 3-tier + Cross-cutting ← chosen
- Pros: sweet spot complexity (не слишком плоско, не слишком глубоко), аналогия SMB-компании (CEO → Directors → Employees), легко добавлять executors не затрагивая CEO, clear ownership (Intel Director отвечает за intel), context per agent стабильный
- Cons: Directors — потенциальный bottleneck при fan-out/fan-in, новый департамент = weight decision (новый Director), cross-department workflows только через CEO
- Why chosen: оптимальный баланс для масштаба 30-50 агентов. Плоский не масштабируется, 4-tier — overkill. Реальный мир: SMB с 50 сотрудниками работает именно так.
Consequences
Positive
- CEO context стабильный: 6-7 Directors, не 30+ executors
- Директора знают только свой домен — узкий, качественный контекст
- Executors stateless, горизонтально масштабируемы
- Новый executor = добавить в roles.yaml + inform Director. CEO не трогаем.
- Понятная ментальная модель: “как компания”
Negative / Trade-offs
- Новый департамент = новый Director (весомое решение, ADR)
- Cross-department workflows через CEO-посредник (дополнительный hop)
- Directors — bottleneck если один домен доминирует (все задачи в Intel)
Mitigations
- Cross-cutting agents (Judge, Librarian) работают поперёк без CEO
- Несколько instance одного Director типа для параллелизма (Phase 2)
- Monitor: какие Directors bottleneck → data-driven решение о restructure
Follow-ups
- MVP: validate на 5 агентах (CEO + IntelDir + 2 executors + Judge)
- Phase 2: добавить Sales, Marketing, Ops Directors
- Monitor: escalation rate и queue depth per Director
- Evaluate: нужен ли cross-department shortcut (Director → Director без CEO)?
References
- _Roles-Index — полный реестр агентов
- Orchestration-Model — механика коммуникации через tasks
- 4. Специализация превыше универсальности — принцип
- System-Overview — Agent Layer в архитектуре