Каждый агент будет ошибаться. Вопрос не в том, произойдёт ли это — а в том, насколько грациозно.
Большинство агентных фреймворков относятся к ошибкам как к исключениям. Что-то ломается, пайплайн останавливается, человека вызывают. Для классического софта это работает. Для агентов — это дизайн-провал.
Почему агенты ломаются иначе
Классический софт ломается на известных границах: таймауты сети, null-ссылки, несовпадения типов. Ошибки агентов — семантические: результат выглядит корректно, но означает не то.
Три категории ошибок агентов:
- Жёсткие ошибки: агент бросает исключение или не возвращает ничего. Легко ловятся, легко обрабатываются.
- Мягкие ошибки: агент возвращает результат, который структурно корректен, но семантически ошибочен. Отрефакторенная функция компилируется, но меняет поведение.
- Каскадные ошибки: мягкая ошибка на шаге 3 портит контекст для шагов 4-7, производя цепочку всё более неправильных результатов.
Мягкие и каскадные ошибки составляют 78% агентных инцидентов в наших продакшн-системах.
Паттерн самовосстановления
interface RecoveryStrategy {
detect: (output: AgentOutput) => ValidationResult;
classify: (error: ValidationError) => ErrorCategory;
recover: (category: ErrorCategory, context: PipelineContext) => RecoveryAction;
escalate: (failure: UnrecoverableError) => EscalationPath;
}
Ключевой инсайт: обнаружение должно быть отделено от исполнения. Агент, который произвёл результат, не может надёжно его валидировать. Нужен второй взгляд — другой агент, правило-валидатор или детерминированная проверка.
Слои обнаружения
Мы используем три слоя обнаружения, каждый ловит то, что пропустил предыдущий:
Слой 1: Валидация схемы
Соответствует ли выход ожидаемой структуре? Ловит жёсткие ошибки и очевидные деформации. Быстро, дёшево, ~40% проблем.
Слой 2: Семантические проверки
Имеет ли выход смысл в контексте? Если агент рефакторил функцию, проходит ли она те же тесты? Ловит мягкие ошибки. Медленнее, дороже, ~35% проблем.
Слой 3: Кросс-агентный ревью
Отдельный агент ревьюит результат с доступом к исходному намерению. Ловит тонкий семантический дрифт. Самый дорогой, оставшиеся ~25%.
Действия по восстановлению
Не все ошибки заслуживают одинакового ответа:
| Категория ошибки | Действие | Стоимость |
|---|---|---|
| Нарушение схемы | Повтор с жёсткими ограничениями | Низкая |
| Семантический дрифт | Повтор с обогащённым контекстом | Средняя |
| Испорченный контекст | Откат к чекпоинту, повторное выполнение | Высокая |
| Фундаментальное непонимание | Эскалация на человека | Максимальная |
Результаты
После внедрения самовосстанавливающихся пайплайнов по всей агентной инфраструктуре:
- Невосстановимые ошибки упали с 23% до 3%
- Среднее время восстановления: 45 секунд (было: ручное, 15+ минут)
- Эскалация на человека: 1 из 50 задач (было: 1 из 3)
«Цель — не ноль ошибок. Цель — ноль необработанных ошибок.»
Система не мешает агентам делать ошибки. Она делает ошибки дешёвыми, а восстановление — автоматическим. В этом разница между хрупким пайплайном и устойчивой системой.
