Production agent operations: launch, control, incidents and postmortems
A production-readiness checklist, a promotion flow with eval gates, runbooks and symptom-based alerts, and a blameless postmortem loop that turns every incident into a new guard and eval case.
Lesson content is currently available in Russian.
What you will learn
- →Проверять агента по чеклисту production-readiness: владелец, SLO, runbook, kill switch, бюджет.
- →Строить promotion flow: версии как артефакты, eval gates, canary, мгновенный rollback.
- →Проводить blameless postmortem и закрывать петлю: guard + eval-кейс + регрессионный тест.
Что значит production-ready: чеклист
Production-ready агент — это не «модель хорошо отвечает в демо». Это система, у которой закрыты организационные и технические пункты, и каждый проверяется буквально, а не «в целом да»:
- Владелец: конкретный человек/команда, отвечающие за агента, с полномочиями его остановить. «Агент общий» = «агент ничей».
- SLO и метрики: качество (онлайн-eval score), latency p95, error rate, cost per day — с дашбордом и порогами, а не «посмотрим по ощущениям».
- Runbook: письменная инструкция on-call — как диагностировать, как деградировать, как остановить (следующий раздел).
- Kill switch: проверенный, срабатывающий за секунды, доступный on-call без эскалаций.
- Audit trail: append-only журнал действий, включая отклонённые (урок про безопасность).
- Бюджет с жёстким потолком: дневной лимит расходов на модель, при достижении — деградация или остановка, а не сюрприз в счёте.
- Approval-петля для рискованных действий и человек, который реально её разбирает: очередь подтверждений, которую никто не смотрит, — это театр безопасности.
- Проверенные границы: red-team прогон инъекций и лимитов пройден на текущей версии.
Простой тест на честность: если некому нажать стоп в три часа ночи в субботу — агент не production-ready, какими бы ни были его метрики качества. Автономность агента без операционной обвязки — это не автоматизация, а неуправляемый процесс с правами в ваших системах.
Этот чеклист — ворота: он проходится до выдачи агенту прав на реальные действия, и повторно — при каждом расширении этих прав.
Promotion flow: от staging до prod
У агента больше движущихся частей, чем у обычного сервиса: промпты, версии моделей, схемы инструментов, retrieval-конфигурация, пороги маршрутизации. Правило номер один: всё это — версионируемые артефакты в git, а изменение любого из них — релиз, проходящий полный путь. «Быстро подкрутили промпт в проде» — самый частый источник инцидентов вида «вчера работало».
Путь релиза:
- Dev: изменение в ветке, ревью diff-а промпта наравне с ревью кода.
- Offline eval gate в CI: golden set, включая red-team кейсы; регрессия блокирует мерж (урок про evals).
- Staging: агент с реальными инструментами, направленными на sandbox-окружения (тестовая CRM, почтовый ящик-ловушка). Здесь проверяется то, чего не видит offline-набор: реальные тайминги инструментов, ошибки интеграций, поведение цикла на живых данных.
- Canary в prod: доля трафика или ограниченный сегмент пользователей, с включённой approval-петлёй даже для действий, которые планируется автоматизировать — первые недели человек подтверждает и попутно размечает качество решений агента. Это дешёвый способ набрать доверие и данные одновременно.
- Постепенное расширение автономии: снятие approval с классов действий — по накопленной статистике (например, 98%+ одобрений без правок за две недели), а не по нетерпению.
Rollback — переключение на предыдущую версию артефакта за секунды, потому что предыдущая версия никуда не удалялась. Если откат требует «вспомнить, какой был промпт», у вас нет отката. Каждый ответ агента в проде несёт версии всех артефактов в trace — иначе инциденты нельзя привязать к релизам.
Runbooks, алерты и эскалация
Алерты для агента строятся по симптомам, а не по причинам — причин много, симптомов мало. Минимальный набор:
- Рост доли ошибок tool calls (интеграция сломалась или агент стал генерировать невалидные вызовы).
- Рост доли провалов валидации вывода / repair rate (деградация модели или промпта).
- Всплеск отклонённых approvals (агент стал предлагать плохие действия — самый тревожный сигнал).
- Латентность p95 и глубина очереди approvals (люди не успевают разбирать — агент фактически стоит).
- Скорость расхода бюджета (зацикливание или всплеск трафика).
- Онлайн-eval score на выборке ответов (тихая деградация качества).
Runbook пишется до инцидента и отвечает на три вопроса без размышлений в три ночи:
- Как диагностировать: где дашборд, как найти trace по жалобе, как отличить «сломалась интеграция» от «деградировала модель» (подсказка: по error-типам tool calls).
- Как деградировать частично: перевести агента в suggest-only режим (готовит действия, но всё через approval), отключить конкретный инструмент, переключить на резервную модель. Частичная деградация почти всегда лучше полной остановки — сервис живёт, риск снят.
- Как остановить полностью: kill switch, что произойдёт с задачами в полёте, куда пойдут пользователи, как сохраняется журнал.
Эскалация должна называть роли и сроки: on-call инженер (минуты) → владелец агента (если причина не найдена за 30 минут) → владелец бизнес-процесса (если затронуты клиенты или деньги). Отдельно — правило для approvals: если очередь подтверждений не разбирается, действия по таймауту отклоняются, не одобряются. Тишина — это «нет».
Инциденты и postmortem-петля
Инциденты с агентами будут — вопрос не «если», а «насколько быстро вы учитесь». Порядок реакции: стоп-кран по runbook (suggest-only или полная остановка) → фиксация traces и журнала → оценка масштаба по audit trail: что агент реально сделал, какие действия прошли, какие были отклонены, затронуты ли данные или деньги → коммуникация затронутым → и только потом спокойный разбор.
Postmortem обязательно blameless: вопрос всегда «какая дыра в системе это позволила», never «кто виноват». Причина прагматичная: в системе с LLM корневая причина почти никогда не «человек ошибся» — это промпт, допускающий трактовку, инструмент без лимита, отсутствующий eval-кейс, слишком рано снятый approval. Поиск виноватых гарантирует, что следующий инцидент будут скрывать до последнего.
Структура документа: timeline из audit trail (когда началось, когда заметили, когда остановили — разрыв «началось → заметили» сам по себе метрика зрелости мониторинга); корневая причина через цепочку «почему» до системного уровня; и action items трёх обязательных типов:
- Guard: новый лимит, суженный scope, allowlist, изменение схемы инструмента — архитектурная защита, а не «поправили формулировку в промпте».
- Eval-кейс: сценарий инцидента добавлен в golden set / red-team набор и с этого момента гоняется на каждом релизе.
- Обновление runbook/алертов: если инцидент заметили позже, чем могли, — какой сигнал должен был сработать.
Критерий закрытия жёсткий: инцидент закрыт, когда регрессионный тест, воспроизводящий сценарий, зелёный на текущей версии — не когда «починили и вроде работает». Через пару кварталов такой петли red-team набор агента становится главным активом его надёжности: это конденсированная история всех способов, которыми он ломался, прогоняемая на каждый релиз.
Practice
Production agent runbook
Возьмите hardened-агента из урока по безопасности и доведите до production-readiness: чеклист (владелец, SLO, бюджет с потолком), очередь approvals с таймаут-отклонением, kill switch и suggest-only режим, алерты по 4+ симптомам, письменный runbook (диагностика/деградация/остановка) и схема эскалации. Затем устройте учебный инцидент (сломайте инструмент или подсуньте инъекцию) и напишите blameless postmortem с тремя типами action items.
Deliverable
Заполненный чеклист, runbook, работающий kill switch и suggest-only, лог учебного инцидента и postmortem с guard + eval-кейсом + регрессионным тестом.
Checkpoint
Что вы делаете, если агент начал выполнять рискованные write-actions, и как гарантируете, что это не повторится?
- ✓ Есть немедленная реакция по runbook: suggest-only или kill switch за секунды, с сохранением журнала.
- ✓ Есть эскалация с ролями и сроками, и очередь approvals с отклонением по таймауту.
- ✓ Постмортем закрывается тройкой guard + eval-кейс + регрессионный тест, а не правкой промпта.
Check yourself
Sources