Claude Certified Architect · Модуль 1 · Урок 1.3

Вызов субагентов и передача контекста

Суть

Субагенты порождаются через инструмент Task; у координатора в allowedTools должен быть Task. Изоляция абсолютна: каждый вызов — с нуля, без унаследованного контекста. Контекст передаётся структурированным JSON с сохранением атрибуции источника.

Параллельность и структура

Параллельный запуск — несколько Task-вызовов в одном ответе; разнесение по ходам убивает параллелизм. Передача результатов «сырым» склеенным текстом теряет структуру и метаданные (URL, даты исчезают). Передавайте полный JSON с полями вроде source_url, excerpt, relevance_score, date.

Явная передача контекста синтезатору (CORRECT PATTERN)
// Координатор передаёт структурированный контекст, а не склеенный текст.
findings := make([]map[string]any, 0, len(webResults))
for _, item := range webResults {
	findings = append(findings, map[string]any{
		"content":         item.Summary,
		"source_url":      item.URL,
		"date":            item.PublishedAt,
		"relevance_score": item.Score,
	})
}
synthesisContext := map[string]any{"findings": findings}

client.CreateMessage(MessageRequest{
	Model:     "claude-opus-4-8",
	MaxTokens: 4096,
	Tools:     []Tool{synthesisAgentDef}, // AgentDefinition синтезатора
	Messages: []Message{{
		Role: "user",
		Content: []ContentBlock{{
			Type: "tool_use",
			Name: "Task",
			Input: map[string]any{
				"subagent": "synthesis",
				"context":  synthesisContext, // JSON, метаданные сохранены
			},
		}},
	}},
})

Anti-patterns

ЛовушкаПочему не работаетВерный паттерн
Порождать субагентов разными ходамиКаждый ход последователен — выгоды по задержке нетВсе параллельные Task-вызовы в одном ответе
Передавать сырой склеенный текст результатовТеряются структура и атрибуция (URL, даты)Передавать структурированный JSON с явными полями метаданных
Давать координатору пошаговую процедуруСлишком жёстко; субагенты не адаптируются к находкамЗадавать цели и критерии качества, способ выбирают субагенты

Exam traps

ЛовушкаПочему не работаетВерный паттерн
Думать, что синтезатор унаследует URL из контекста поисковикаНаследования контекста нетЯвно передать URL в структурированном контексте
Ускорять перебором модели вместо параллелизмаСнижает время на агента, но не убирает последовательностьПараллельные Task-вызовы в одном ответе

Практическое задание (T3)

  • Настроить координатора с allowedTools: ["Task", ...] и определить 3 AgentDefinition субагентов.
  • Замерить задержку при последовательном порождении.
  • Замерить задержку при параллельном (несколько Task-вызовов в одном ответе).
  • Передать контекст как JSON с полями content, source_url, date, relevance_score.
  • Убедиться, что синтезатор не имеет доступа к сырой переписке поисковика.

Проверка знаний

Многоагентная исследовательская система

В отчётах синтезатора пропадают ссылки на источники. Поисковый субагент возвращает URL корректно, но синтезатор не может их процитировать. Почему?

  • A В system prompt синтезатора нет инструкции про цитирование
  • B Координатор передаёт результаты простым текстом, отбрасывая структурированные метаданные
  • C Синтезатор наследует контекст поисковика и отбрасывает URL
  • D Поисковый инструмент не возвращает URL

Многоагентная исследовательская система

4 субагента порождаются последовательно, по ~15с каждый — суммарно 60+ секунд. Нужно свести к ~15 секундам. Что сделать?

  • A Взять более быструю модель (45с → 5с на агента)
  • B Добавить кэширование в координаторе
  • C Выдать все 4 Task-вызова в одном ответе для параллельного исполнения
  • D Слить 4 субагентов в одного