Перейти к основному содержимому

Человеческий консьерж — это резервный путь, а не функция

Маршрутизация сбоев агента к человеку работает только тогда, когда контракт эскалации явно определён: какое состояние передаётся, что оператор может изменить и как исправление возвращается агенту.

Three business professionals in discussion over a contract in a modern office setting.

Тихая деградация human-in-the-loop

Human-in-the-loop часто описывают как функцию безопасности. На практике это резервный путь, а резервные пути деградируют незаметно. Деградация редко проявляется как явный сбой; она выглядит как растущая задержка, непоследовательные решения и растущий бэклог нерешённых краевых случаев. Механизм одинаков в разных внедрениях: эскалация происходит без передачи состояния, поэтому оператор вынужден восстанавливать контекст по транскрипту. Восстановление теряет информацию. Оператор принимает локально разумное решение, запрос движется дальше, а первопричина остаётся нетронутой.

Конкретный механизм иллюстрирует проблему. Агенту поручено сверить запись об отправке со счётом. Он вызывает инструмент retrieval, получает двух кандидатов на совпадение и не может выбрать. В транскрипте видны оба кандидата и финальный вопрос пользователю. Человек-оператор, читая этот транскрипт, видит кандидатов, но не видит внутреннюю уверенность агента, оценки retrieval, параметры инструментов или правило политики, которое заблокировало автоматический выбор. Оператор выбирает одного кандидата. Задача завершается. В памяти агента ничего не меняется, поэтому следующая отправка с такой же неоднозначностью упирается в тот же тупик. Человек поглотил сбой, а не исправил его.

Это первый режим отказа: эскалация без передачи состояния вынуждает к восстановлению. Второй — исправление человека не записывается обратно как обновление политики или памяти, поэтому тот же сбой повторяется. Третий — давление объёма. Когда эскалации поступают быстрее, чем операторы успевают разбираться, «одобрить» становится путём наименьшего сопротивления. Штампование превращает надзор в налог на задержку: организация платит за человеческое внимание, но не получает дополнительной безопасности, потому что человек больше не оценивает решение, а лишь закрывает его.

Контракт эскалации

Контракт эскалации состоит из трёх частей: триггер, полезная нагрузка и возврат. Каждая часть должна быть явной и машиночитаемой, а не подразумеваться по соглашению.

Триггер

Триггер определяет, когда агент останавливается и передаёт управление. Полезные классы включают:

  • Пороги уверенности: калиброванная уверенность агента в следующем действии падает ниже заданной границы.
  • Ошибки инструментов: инструмент возвращает ошибку, пустой результат или нарушение схемы, которое агент не может устранить в пределах своего бюджета повторных попыток.
  • Необратимые действия: следующий шаг удалит, опубликует, переведёт или иным образом зафиксирует изменение состояния, которое нельзя откатить.
  • Отказы политики: guardrail блокирует действие, и у агента нет разрешённого альтернативного пути.

Триггеры следует объявлять рядом с определениями инструментов агента, а не разбрасывать по тексту промпта. Триггер, существующий только в промпте, — это предложение; триггер, существующий в коде, — это контракт.

Полезная нагрузка

Colorful light trails create an abstract, dynamic pattern with vibrant hues.

Полезная нагрузка — это то, что получает оператор. Транскрипт — не полезная нагрузка. Полезная нагрузка содержит:

  • Цель в том виде, как её понял агент, включая исходный запрос и все уже применённые уточнения.
  • План на данный момент: какие шаги выполнены, какие успешны, какие пропущены и почему.
  • Действия-кандидаты, которые рассмотрел агент, с параметрами, которые он использовал бы.
  • Доказательства для каждого кандидата: оценки retrieval, выходы инструментов, ссылки на политики и конкретная неопределённость, вызвавшая эскалацию.

Проверка полезной нагрузки: сможет ли оператор, никогда не видевший задачу, принять решение, не открывая другую систему. Если ему приходится запрашивать CRM, повторно запускать retrieval или спрашивать заявителя, что тот имел в виду, полезная нагрузка неполна.

Возврат

Возврат определяет, что оператор может сделать и какой артефакт порождает решение. Три исхода покрывают большинство случаев:

  • Одобрить: оператор подтверждает предложенное агентом действие. Артефакт — подписанная запись об одобрении, привязанная к параметрам действия и снимку доказательств.
  • Изменить: оператор меняет действие, параметры или цель. Артефакт — diff между предложением агента и решением оператора плюс код причины.
  • Прервать: оператор останавливает задачу. Артефакт — терминальное состояние с кодом причины и флагом, указывающим, следует ли перепланировать задачу или вернуть её заявителю.

Каждый исход должен порождать долговечный артефакт. Одобрение, существующее только как клик в очереди, не долговечно; его нельзя проверить, воспроизвести или использовать как обучающий сигнал. Артефакт — это выход контракта, и именно он делает цикл обучаемым.

Замыкание цикла

Ценность контракта эскалации не в том, что он даёт лучшие единичные решения. Она в том, что он даёт данные. Каждое человеческое изменение — кандидат в регрессионный тест в наборе eval. Изменение кодирует случай, в котором агент ошибся, и исправление, которое человек одобрил. Эта пара — ровно форма тест-кейса: вход, ожидаемое действие и обоснование.

Конвейер механический. Когда оператор изменяет действие, diff и код причины записываются в хранилище. Этап ревью продвигает выбранные изменения в набор eval, где они прогоняются против текущего агента при каждом изменении. Если агент теперь выдаёт для этого входа изменённое оператором действие

Здесь цикл либо учится, либо нет. Отслеживайте частоту эскалаций по классам задач. Постоянная частота со временем говорит о том, что цикл не учится: одни и те же классы продолжают доходить до людей, а исправления не меняют поведение агента. Падающая частота в классе при стабильном качестве говорит о том, что исправления усваиваются. Растущая частота говорит о дрейфе класса задач или о расширении области агента без соответствующего обновления его политик.

A detailed view of a financial trading graph featuring candlestick and line charts for market analysis.

Повторяющаяся эскалация по одному и тому же классу задач — дефект спецификации, а не проблема оператора. Если операторы продолжают исправлять одну и ту же неоднозначность, инструкции, инструменты или guardrails агента недоопределены. Правильный ответ — изменить спецификацию, а затем перезапустить набор eval, а не добавлять операторов или ужесточать очередь.

Честный компромисс

Контракт эскалации стоит инженерного времени, прежде чем что-то сэкономить. Триггер, полезную нагрузку и возврат нужно спроектировать, инструментировать и поддерживать. Особенно дорога полезная нагрузка: сборка цели, плана, кандидатов и доказательств требует, чтобы агент раскрывал внутреннее состояние, которое многие фреймворки держат неявным. Команды, пропускающие эту работу, получают работающее демо и хрупкую продакшн-систему.

Второй компромисс: строгий контракт снижает свободу оператора. Оператор, видящий всю систему, часто может исправить проблему способами, которые контракт не предусматривает. Ограничение его до одобрить, изменить или прервать может казаться искусственным. Ограничение намеренное: неограниченные исправления не порождают долговечных артефактов, а без артефактов цикл не может учиться. Контракт обменивает краткосрочную гибкость оператора на долгосрочное улучшение системы.

Третий компромисс — задержка. Эскалация добавляет человеческий round-trip на критический путь. Контракт не убирает эту задержку; он делает задержку подотчётной. Эскалация, порождающая регрессионный тест, — инвестиция. Эскалация, порождающая клик, — затрата. Разница в том, определён ли путь возврата.

Что инструментировать

Минимальный набор инструментирования для контракта эскалации:

  • Частота эскалаций по классам задач, со скользящим окном.
  • Время до решения на эскалацию, сегментированное по типу триггера.
  • Частота изменений против частоты одобрений, по операторам и по классам задач.
  • Регрессионные тесты, продвинутые из изменений, и их pass rate со временем.
  • Частота повторений: эскалации по классу задач, уже покрытому продвинутым тестом.

Частота повторений — самый резкий сигнал. Если у класса есть продвинутый регрессионный тест, а он всё равно эскалируется, значит тест не улавливает сбой или агент не использует исправление. И то, и другое — инженерные проблемы с инженерными решениями.

Заключение

Человеческий консьерж — не функция для маркетинга. Это резервный путь, который нужно проектировать как любой другой интерфейс: с определённым триггером, полной полезной нагрузкой и возвратом, порождающим долговечные артефакты. Без этого контракта эскалация становится налогом на задержку, а надзор — штампованием. С ним каждое человеческое вмешательство — кандидат в набор eval, и у цикла есть шанс научиться. Мера хорошего пути эскалации — не то, как часто его используют, а то, как часто один и тот же класс сбоя требует его дважды.

ПоделитьсяXLinkedInПостоянная ссылка6 мин чтения

Связанное чтение

На какие вопросы это отвечает

What is an escalation contract in an agent system?

An escalation contract defines three things: the trigger that stops the agent, the payload handed to the human (goal, plan, candidate actions, evidence), and the return (approve, amend, or abort) with a durable artefact for each outcome.

Why does human-in-the-loop degrade over time?

Three mechanisms: escalation without state handover forces operators to reconstruct context from a transcript; fixes that are not written back as policy or memory updates let the same failure recur; and volume pressure turns oversight into rubber-stamping.

How do human corrections improve an agent?

Every amendment is a candidate regression test. The diff between the agent's proposal and the operator's decision, plus a reason code, encodes a case the agent got wrong and a correction a human endorsed, which can be promoted into the eval suite.

What does a flat escalation rate indicate?

A flat escalation rate per task class over time suggests the loop is not learning: the same classes keep reaching humans and the corrections are not changing agent behaviour.