Перейти к содержимому
Экосистема AI Vibe

Разборы

Как выстроить human-in-the-loop для AI-рассылок: когда «подтвердить» уже не спасает

Редакция 31 августа 2026 г.

Как выстроить human-in-the-loop для AI-рассылок: когда «подтвердить» уже не спасает

Один неверный догон, ушедший агентом клиенту, не откатывается как коммит: письмо в ящике, агент фиксирует успех и планирует следующие шаги по уже испорченной версии событий. Соло-разработчик, который один ведёт почтового агента, разбор не обязан жить в бесконечных «ОК/Отмена». Нужны контроли, где ошибка ловится до массовой рассылки.

Следующие ходы агента после «успешной» отправки

Сценарий из практики: агент шлёт follow-up клиенту с неверным текстом. Письмо ушло. Код можно откатить, email «impossible to unsend». Агент логирует успех, планирует следующий шаг, может запустить retry-loop и размножить ошибку.

В отличие от revert в репозитории, внешняя отправка асимметрична: легко отправить, отозвать почти нереально. Hill сравнивает blast radius bulk-рассылки с публичным инцидентом: «10 000 customers» или «entire list» в одном runaway loop. Для агентного воркфлоу это не метафора: retry-bug без rate cap шлёт сотни копий или на весь список.

Human-in-the-loop здесь — не «спросить человека на каждый черновик», а спроектировать, где человек успевает изменить исход до того, как blast radius вырастет.

Два провальных режима: автосенд и бесконечные подтверждения

Hill выделяет два симметричных провала.

Auto-sending with no undo — внешние сообщения уходят мгновенно, recovery path отсутствует. Агент в email, Slack и других исходящих каналах действует как в продакшене: ставки репутации, не локальный тест.

Over-gating — столько подтверждений, что люди перестают читать. Alert-Fatigue Spiral: каждый G1-черновик за гейтом, на десятом «send to all?» — Rubber Stamp, vague prompt вместо реального preview. Lone approval на массовую рассылку Hill называет «liability transfer dressed up as a control».

Для соло-workflow с одним оператором второй режим особенно коварен: вы и единственный human-in-the-loop, и единственный, кто устаёт кликать «approve».

Градация G1–G3: reversibility и blast radius

Перед контролами — оценка действия агента по трём осям: reversibility (обратимость), blast radius (масштаб охвата), stakes (ставки). Итоговый grade — по наивысшей оси.

Действие агента Обратимость Blast radius Grade
Черновик (не отправлен) Полная Один внутренний получатель G1 low
Отправка себе / коллеге Сложно отозвать, низкие stakes Внутренний, 1–несколько людей G1–G2
Отправка клиенту / внешнему Почти невозможно отозвать Один внешний получатель G2 high
Bulk / broadcast Необратимо в масштабе Сотни–тысячи G3 critical

Логика разная для G2 и G3. На G2 (external customer) human + preview + undo window ещё могут поймать ошибку. На G3 bulk «you cannot un-send to 10 000 people» — prevent, don't review: approval alone недостаточен, нужны cap, stage/throttle, отказ от lone approve click.

Фреймворк RAIL (Reversible, Authorized, Interruptible, Logged) — чеклист того, что логировать: что, кому, когда, на чьём authority.

Send-delay, caps и preview: контроли в инструменте, не в промпте

Hill перечисляет механизмы, которые работают как инженерный контур, а не как надежда на промпт.

Send-delay + undo-send window — удержание отправки на 30–120 секунд с one-click cancel. Самый дешёвый контроль с максимальным эффектом: люди ловят «wait, that's wrong» после commit лучше, чем approve/deny «в абстракции».

Preview — показ точного subject, body и списка получателей. Не summary и не «send the follow-up?».

Hard recipient and rate caps — max recipients per send, max sends per minute, max total sends per run. Caps enforce в tool, не в prompt: агент физически не может обойти лимит. Пример из статьи: cap 50 получателей превращает runaway в «50, а не 50 000».

Approval gate — обязателен для G2 external и G3 bulk; для рутинных G1 internal drafts — не гейтить, pre-authorize.

Reversible send опускает grade — worst case становится «поймали и откатили», а не «уже улетело».

Массовая рассылка G3: prevent, don't review

Для G3 Hill предлагает staged / throttled bulk send: canary batch, пауза, подтверждение человека перед остальной рассылкой. Automation bias на массовых approve — не абстрактный риск: люди кликают approve на 10-м «send to all?» без проверки.

Четыре шага практики из takeaways: Grade, Guard, Show, Prove — с отсылкой к practitioner playbook и cheatsheet LoopRails. LoopRails — free, sourced framework для проектирования human-in-the-loop oversight AI-агентов; центральный вопрос: can a human realistically catch this mistake before it lands? На looprails.dev есть interactive grader для прогона исходящих действий агента через G0–G3.

Тратить human attention только там, где человек меняет outcome; ниже — safe by design. Для агентного email это ближе к оркестрации coding agents в продакшене, чем к маркетинговому how-to: grade → guard → show → prove.

Если агент шлёт email и Slack как внешние действия — проектируйте oversight как для любого tool-calling в проде: не «ещё один prompt», а физические лимиты и окна отмены.

Источники

  • @brennhill, «How to Build a Good Human-in-the-Loop for AI Email and Outbound Messaging» — Dev.to (дата доступа: 2026-08-31)
  • Оригинальная публикация LoopRails — https://looprails.dev/article-hitl-email-agents.html (дата доступа: 2026-08-31)