Claude Certified Architect · Модуль 5 · Урок 5.3

Распространение ошибок в многоагентных системах

Суть

Структурированный контекст ошибки (errorType, attemptedQuery, partialResults, alternativeApproaches, isRetryable) позволяет координатору восстановиться разумно. Различайте пустой результат (успех, нет совпадений) и сбой доступа (ошибка, тайм-аут/недоступность).

Локальный повтор и чек-пойнты

Сначала локальный повтор с экспоненциальной паузой — лишь затем распространять ошибку координатору. Сбой одного субагента не обнуляет всё исследование. Для дорогих стадий (длинная выборка) применяйте чек-пойнты в долговременное хранилище.

Структурированный контекст ошибки субагента
func webSearchError(query string, partial any) map[string]any {
	return map[string]any{
		"errorType":      "timeout", // timeout | invalid_query | unavailable
		"attemptedQuery": query,
		"partialResults": partial, // то, что успели получить
		"alternativeApproaches": []string{
			"narrow_query_by_date_range",
			"use_cached_snapshot",
		},
		"isRetryable": true,
	}
}

Anti-patterns

ЛовушкаПочему не работаетВерный паттерн
Молча гасить ошибки, возвращая пустой результат как успехКоординатор примет недоступность за «тема не покрыта» — восстановление невозможноСбои доступа — как ошибки; пустой результат — лишь для успешных запросов без совпадений
Завершать весь процесс при сбое одного субагентаСбой одного источника не обнуляет всё исследованиеРаспространить структурированную ошибку; координатор решит повтор/альтернативу/частичное
Возвращать общий статус «search unavailable»Координатор не отличит тайм-аут (повторяемый) от неверного запроса (нет)Включить errorType, isRetryable, attemptedQuery, partialResults, альтернативы

Exam traps

ЛовушкаПочему не работаетВерный паттерн
Общий статус скрывает повторяемостьКоординатор не знает, стоит ли повторятьСтруктурированный контекст с isRetryable
Пустой результат как успех при сбое доступаЗакрывает путь восстановленияРазличать пустой результат и сбой доступа
Завершение процесса при одном сбоеПредполагает, что один сбой обнуляет всёРаспространить ошибку, продолжить с остальным

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

  • Реализовать структурированную ошибку в поисковом субагенте: errorType, attemptedQuery, partialResults, alternativeApproaches, isRetryable.
  • Смоделировать тайм-аут; убедиться, что координатор получает контекст и может повторить с изменённым запросом.
  • Смоделировать валидный пустой результат; убедиться, что координатор отличает его от сбоя доступа и не повторяет тот же запрос.
  • Реализовать локальный повтор с экспоненциальной паузой; ошибки распространяются лишь при провале локального восстановления.
  • Внедрить аннотации покрытия в синтез: помечать темы с пробелами из-за сбоев субагентов.

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

Тайм-аут поискового субагента

Поисковый субагент упал по тайм-ауту на сложной теме. Как организовать возврат сбоя координатору для разумного восстановления?

  • A Вернуть структурированный контекст ошибки: тип сбоя, запрос, частичные результаты, возможные альтернативы
  • B Локальный повтор с экспоненциальной паузой, после исчерпания — общий статус «search unavailable»
  • C Поймать тайм-аут и вернуть пустой результат как успешный
  • D Пробросить исключение наверх, завершив весь процесс

Конвейер с частичным выводом субагента

Субагент 3 упал, выполнив 60% назначенных источников. Координатор синтезирует по 5 полным агентам плюс 60% частичного вывода. Что включить?

  • A Полностью исключить вывод субагента 3; отметить пробел в отчёте
  • B Включить 60% вывода с простым флагом частичного завершения
  • C Структурированный блок частичного завершения: выполненные источники, ожидающие, предварительные находки
  • D Перезапустить субагент 3 с начала

Конвейер с 45-минутной стадией выборки

Трёхстадийный конвейер: Retrieval → Analysis → Synthesis. Analysis иногда падает, требуя полного перезапуска. Retrieval занимает 45 минут. Какое архитектурное изменение сократит время восстановления?

  • A Запускать все три стадии параллельно
  • B Кэшировать выводы Retrieval с логикой повтора на Analysis
  • C Чек-пойнтинг: сохранять вывод Retrieval в долговременное хранилище; сбой Analysis возобновляется с чек-пойнта
  • D Слить Retrieval и Analysis в один агент