Тихая деградация human-in-the-loop
Human-in-the-loop часто описывают как функцию безопасности. На практике это резервный путь, а резервные пути деградируют незаметно. Деградация редко проявляется как явный сбой; она выглядит как растущая задержка, непоследовательные решения и растущий бэклог нерешённых краевых случаев. Механизм одинаков в разных внедрениях: эскалация происходит без передачи состояния, поэтому оператор вынужден восстанавливать контекст по транскрипту. Восстановление теряет информацию. Оператор принимает локально разумное решение, запрос движется дальше, а первопричина остаётся нетронутой.
Конкретный механизм иллюстрирует проблему. Агенту поручено сверить запись об отправке со счётом. Он вызывает инструмент retrieval, получает двух кандидатов на совпадение и не может выбрать. В транскрипте видны оба кандидата и финальный вопрос пользователю. Человек-оператор, читая этот транскрипт, видит кандидатов, но не видит внутреннюю уверенность агента, оценки retrieval, параметры инструментов или правило политики, которое заблокировало автоматический выбор. Оператор выбирает одного кандидата. Задача завершается. В памяти агента ничего не меняется, поэтому следующая отправка с такой же неоднозначностью упирается в тот же тупик. Человек поглотил сбой, а не исправил его.
Это первый режим отказа: эскалация без передачи состояния вынуждает к восстановлению. Второй — исправление человека не записывается обратно как обновление политики или памяти, поэтому тот же сбой повторяется. Третий — давление объёма. Когда эскалации поступают быстрее, чем операторы успевают разбираться, «одобрить» становится путём наименьшего сопротивления. Штампование превращает надзор в налог на задержку: организация платит за человеческое внимание, но не получает дополнительной безопасности, потому что человек больше не оценивает решение, а лишь закрывает его.
Контракт эскалации
Контракт эскалации состоит из трёх частей: триггер, полезная нагрузка и возврат. Каждая часть должна быть явной и машиночитаемой, а не подразумеваться по соглашению.
Триггер
Триггер определяет, когда агент останавливается и передаёт управление. Полезные классы включают:
- Пороги уверенности: калиброванная уверенность агента в следующем действии падает ниже заданной границы.
- Ошибки инструментов: инструмент возвращает ошибку, пустой результат или нарушение схемы, которое агент не может устранить в пределах своего бюджета повторных попыток.
- Необратимые действия: следующий шаг удалит, опубликует, переведёт или иным образом зафиксирует изменение состояния, которое нельзя откатить.
- Отказы политики: guardrail блокирует действие, и у агента нет разрешённого альтернативного пути.
Триггеры следует объявлять рядом с определениями инструментов агента, а не разбрасывать по тексту промпта. Триггер, существующий только в промпте, — это предложение; триггер, существующий в коде, — это контракт.
Полезная нагрузка

Полезная нагрузка — это то, что получает оператор. Транскрипт — не полезная нагрузка. Полезная нагрузка содержит:
- Цель в том виде, как её понял агент, включая исходный запрос и все уже применённые уточнения.
- План на данный момент: какие шаги выполнены, какие успешны, какие пропущены и почему.
- Действия-кандидаты, которые рассмотрел агент, с параметрами, которые он использовал бы.
- Доказательства для каждого кандидата: оценки retrieval, выходы инструментов, ссылки на политики и конкретная неопределённость, вызвавшая эскалацию.
Проверка полезной нагрузки: сможет ли оператор, никогда не видевший задачу, принять решение, не открывая другую систему. Если ему приходится запрашивать CRM, повторно запускать retrieval или спрашивать заявителя, что тот имел в виду, полезная нагрузка неполна.
Возврат
Возврат определяет, что оператор может сделать и какой артефакт порождает решение. Три исхода покрывают большинство случаев:
- Одобрить: оператор подтверждает предложенное агентом действие. Артефакт — подписанная запись об одобрении, привязанная к параметрам действия и снимку доказательств.
- Изменить: оператор меняет действие, параметры или цель. Артефакт — diff между предложением агента и решением оператора плюс код причины.
- Прервать: оператор останавливает задачу. Артефакт — терминальное состояние с кодом причины и флагом, указывающим, следует ли перепланировать задачу или вернуть её заявителю.
Каждый исход должен порождать долговечный артефакт. Одобрение, существующее только как клик в очереди, не долговечно; его нельзя проверить, воспроизвести или использовать как обучающий сигнал. Артефакт — это выход контракта, и именно он делает цикл обучаемым.
Замыкание цикла
Ценность контракта эскалации не в том, что он даёт лучшие единичные решения. Она в том, что он даёт данные. Каждое человеческое изменение — кандидат в регрессионный тест в наборе eval. Изменение кодирует случай, в котором агент ошибся, и исправление, которое человек одобрил. Эта пара — ровно форма тест-кейса: вход, ожидаемое действие и обоснование.
Конвейер механический. Когда оператор изменяет действие, diff и код причины записываются в хранилище. Этап ревью продвигает выбранные изменения в набор eval, где они прогоняются против текущего агента при каждом изменении. Если агент теперь выдаёт для этого входа изменённое оператором действие
Здесь цикл либо учится, либо нет. Отслеживайте частоту эскалаций по классам задач. Постоянная частота со временем говорит о том, что цикл не учится: одни и те же классы продолжают доходить до людей, а исправления не меняют поведение агента. Падающая частота в классе при стабильном качестве говорит о том, что исправления усваиваются. Растущая частота говорит о дрейфе класса задач или о расширении области агента без соответствующего обновления его политик.

Повторяющаяся эскалация по одному и тому же классу задач — дефект спецификации, а не проблема оператора. Если операторы продолжают исправлять одну и ту же неоднозначность, инструкции, инструменты или guardrails агента недоопределены. Правильный ответ — изменить спецификацию, а затем перезапустить набор eval, а не добавлять операторов или ужесточать очередь.
Честный компромисс
Контракт эскалации стоит инженерного времени, прежде чем что-то сэкономить. Триггер, полезную нагрузку и возврат нужно спроектировать, инструментировать и поддерживать. Особенно дорога полезная нагрузка: сборка цели, плана, кандидатов и доказательств требует, чтобы агент раскрывал внутреннее состояние, которое многие фреймворки держат неявным. Команды, пропускающие эту работу, получают работающее демо и хрупкую продакшн-систему.
Второй компромисс: строгий контракт снижает свободу оператора. Оператор, видящий всю систему, часто может исправить проблему способами, которые контракт не предусматривает. Ограничение его до одобрить, изменить или прервать может казаться искусственным. Ограничение намеренное: неограниченные исправления не порождают долговечных артефактов, а без артефактов цикл не может учиться. Контракт обменивает краткосрочную гибкость оператора на долгосрочное улучшение системы.
Третий компромисс — задержка. Эскалация добавляет человеческий round-trip на критический путь. Контракт не убирает эту задержку; он делает задержку подотчётной. Эскалация, порождающая регрессионный тест, — инвестиция. Эскалация, порождающая клик, — затрата. Разница в том, определён ли путь возврата.
Что инструментировать
Минимальный набор инструментирования для контракта эскалации:
- Частота эскалаций по классам задач, со скользящим окном.
- Время до решения на эскалацию, сегментированное по типу триггера.
- Частота изменений против частоты одобрений, по операторам и по классам задач.
- Регрессионные тесты, продвинутые из изменений, и их pass rate со временем.
- Частота повторений: эскалации по классу задач, уже покрытому продвинутым тестом.
Частота повторений — самый резкий сигнал. Если у класса есть продвинутый регрессионный тест, а он всё равно эскалируется, значит тест не улавливает сбой или агент не использует исправление. И то, и другое — инженерные проблемы с инженерными решениями.
Заключение
Человеческий консьерж — не функция для маркетинга. Это резервный путь, который нужно проектировать как любой другой интерфейс: с определённым триггером, полной полезной нагрузкой и возвратом, порождающим долговечные артефакты. Без этого контракта эскалация становится налогом на задержку, а надзор — штампованием. С ним каждое человеческое вмешательство — кандидат в набор eval, и у цикла есть шанс научиться. Мера хорошего пути эскалации — не то, как часто его используют, а то, как часто один и тот же класс сбоя требует его дважды.
