Формы и подтверждения
Как агент задаёт человеку структурированные вопросы: карточки в чате, кнопка в мессенджере, форма в браузере по одноразовой ссылке — и как всё это валидируется.
Когда агенту не хватает данных или нужно подтверждение значимого действия, он задаёт вопрос человеку (ask_human). Вопрос доезжает туда, где человеку удобно: в чат карточкой с полями, в мессенджер кнопкой, в крайнем случае — текстом со ссылкой.
#Откуда берутся формы
Агент описывает вопрос декларативно — JSON-схемой полей:
{
"question": "Параметры релиза billing-service?",
"schema": {
"type": "object",
"properties": {
"channel": { "type": "string", "enum": ["canary", "stable"], "title": "Канал" },
"version": { "type": "string", "minLength": 5, "title": "Версия" },
"window": { "type": "array", "minItems": 2, "maxItems": 2,
"items": { "type": "string", "format": "date" }, "title": "Окно" },
"confirm": { "type": "boolean", "title": "Подтверждаю выкат" }
},
"required": ["channel", "version", "confirm"]
}
}
Поддерживаются: строки (с перечнем вариантов, длиной, регуляркой), целые и дробные числа с границами, булевы флаги, массивы (мультивыбор и диапазоны дат), форматы даты/времени/почты/ссылки и маскированный ввод. Лимиты — 20 полей и 8 КБ на схему: форма — это вопрос человеку, а не база данных.
Сервер проверяет ответ по той же схеме до возобновления задачи — некорректное значение не возобновит работу, а вернётся агенту как ошибка.
#Где человек видит форму
Во встроенном чате — карточка прямо в диалоге: варианты кнопками, свободный ответ, полный набор полей для форм. Появляется в момент вопроса, закрывается автоматически при ответе.

В Matrix — HTML-карточка: таблица полей с форматами и обязательностью, ответ текстом в комнате по шаблону поле: значение, либо кнопка «Заполнить форму».
В Telegram — вопрос и inline-кнопка «Заполнить форму»: тап открывает форму в браузере.
Универсальный путь — по кнопке из любого мессенджера открывается хостед-форма: отдельная минималистичная страница по одноразовой ссылке. Ей не нужен аккаунт в системе — ссылка и есть доступ, ровно к одному вопросу, на ограниченный срок. Заполнил, отправил, закрыл.
Ссылки выдаются с сроком жизни и умирают вместе с вопросом: отвечено, отменено или истекло — форма больше не принимает. Один вопрос — одна отправка.
#Что происходит после ответа
Ответ валидируется сервером, сворачивается в JSON и передаётся агенту как результат вопроса. Агент продолжает работу с этими данными. Вся цепочка — вопрос, ответ, кто и когда ответил — остаётся в журнале.
Если вопрос важный (выкатка, внешнее письмо), агент обязан запросить отдельное подтверждение — и получит его той же механикой.
#Если оценочный контур не готов
Применение предложений эволюции агента охраняется оценочным гейтом (см. Эволюция и качество). Если у агента ещё нет оценочных кейсов, применить можно с письменным обоснованием — обход фиксируется в журнале аудита. Это осознанный баланс: человек прочитал предложение и берёт решение на себя, система лишь требует оставить след.