Claude Certified Architect · Модуль 1 · Урок 1.3
Вызов субагентов и передача контекста
Суть
Субагенты порождаются через инструмент Task; у координатора в allowedTools должен быть Task. Изоляция абсолютна: каждый вызов — с нуля, без унаследованного контекста. Контекст передаётся структурированным JSON с сохранением атрибуции источника.
Параллельность и структура
Параллельный запуск — несколько Task-вызовов в одном ответе; разнесение по ходам убивает параллелизм. Передача результатов «сырым» склеенным текстом теряет структуру и метаданные (URL, даты исчезают). Передавайте полный JSON с полями вроде source_url, excerpt, relevance_score, date.
// Координатор передаёт структурированный контекст, а не склеенный текст.
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 корректно, но синтезатор не может их процитировать. Почему?
Верный ответ: B
B верно. Виноват формат передачи: преобразование JSON в строку молча теряет URL. Исправление — передавать полный структурированный JSON. A вторично, C неверно (наследования нет), D противоречит условию.
Многоагентная исследовательская система
4 субагента порождаются последовательно, по ~15с каждый — суммарно 60+ секунд. Нужно свести к ~15 секундам. Что сделать?
Верный ответ: C
C верно. Несколько Task-вызовов в одном ответе исполняются параллельно (~15с вместо 60с). A уменьшает время на агента, но не убирает последовательность. B помогает лишь повторам. D жертвует специализацией.