Глава 25

Делегируйте пакет задачи, а не тему

Узкому агенту нельзя бросить тему - только пакет. Фраза "изучи конкурентов" рождает дублирование и пробелы. Хорошая делегация фиксирует objective, границу, входы, tools, evidence, формат, бюджет и stop condition.

JSON
{
  "task_id": "market-pricing",
  "objective": "Сравнить публичные тарифы трёх указанных продуктов",
  "in_scope": ["текущие цены", "лимиты плана", "дата проверки"],
  "out_of_scope": ["отзывы", "оценка качества", "другие продукты"],
  "inputs": { "products": ["A", "B", "C"], "region": "EU" },
  "tools": ["web_search", "web_open"],
  "source_policy": "официальные pricing pages; secondary only if official missing",
  "output_schema": "PricingComparisonV2",
  "budget": { "tool_calls": 12, "deadline_ms": 90000 },
  "stop_condition": "каждый продукт имеет price + source или status=not_found"
}

Именно из-за расплывчатой делегации synthesis превращается в склеивание. Разберём сбои и их причины.

  • Все workers делают одно. Причина - scope задан темой. Лечение - непересекающиеся deliverables.
  • Ответы нельзя сравнить. Причина - нет общей schema. Лечение - единые поля, units и evidence contract.
  • Оркестратор выбирает красивый текст. Причина - нет source quality policy. Лечение - сравнение provenance и дат.
  • Бесконечный второй раунд. Причина - нет stop condition. Лечение - gap budget и явный status=not_found.

И про параллельность отдельно.

Параллельность требует независимости. Google ADK подчёркивает: parallel workers не обмениваются историей во время выполнения, а порядок результатов может быть недетерминированным. Не проектируйте скрытые зависимости между ветвями.

Ссылки