Summary

  • Проект AACP поручает сервису подтверждения показать все обязательные параметры через программный интерфейс вне работы языковой модели, получить ответ человека и подписать его.
  • Исполнитель сверяет подпись с фактической операцией, адресатом доказательства, свежим вызовом и сроком действия. Подписанный отказ и невозможность связаться с человеком ведут к разным решениям.

Фразу «пользователь согласился» агент напишет за секунду. Цена этой фразы возрастает, когда за ней стоит перевод денег или удаление записи. Проект Agent Action Confirmation Protocol от 2 ноября переносит доказательство согласия к самой операции. Исполняющий агент составляет структурированное описание действия. Сервис подтверждения показывает отмеченные поля, даёт человеку явный выбор между согласием и отказом, затем подписывает полученный ответ. Сервис может работать внутри клиентского приложения, корпоративной системы авторизации или отдельной программы. Экран и сбор решения должны действовать программно, без участия языковой модели.

Кто выбирает поля для экрана, тот влияет на смысл согласия. Для параметров, требующих решения человека, описание содержит confirm=true и понятную метку. Сервис обязан показать их все до появления кнопок. Метки и значения считаются данными: встроенные ссылки и команды не управляют интерфейсом. Агенту разрешено предложить платеж; красивым пересказом он не может заменить сумму, получателя или последствия действия, которые человек должен увидеть.

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

Отказ здесь не превращается в техническую заминку. Denied — подписанное решение человека; повторить запрос можно только по его инициативе. Unobtainable сообщает без подписи решения, что ответа получить не удалось. Просроченное, повторное, перенаправленное или относящееся к другой операции доказательство получает собственный результат. Частично принять квитанцию, провалившую проверку и всё же выполнить действие проект запрещает. Платёжной системе нужно знать, закрыла ли человек дверь или связь просто не состоялась: автоматическая реакция будет разной.

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