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

Агентная коммерция — это проблема грамматики делегирования, а не витрины

Walmart и Amazon спорят не о ботах. Они дают разные ответы на вопрос о том, как мандат покупателя выражается, ограничивается и подтверждается при оформлении заказа.

Крупный план ретро-печатной платы с замысловатыми медными дорожками и электронными компонентами

Два периметра, один недостающий слой

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

Этот вопрос не «может ли агент покупать вещи?». Он звучит так: «по чьему полномочию, в каких границах и откуда продавец это знает?». Набор правил Walmart — попытка определить условия, при которых агент может действовать. Периметр Amazon — попытка отказать в действии, пока эти условия не установлены. Оба — позиции авторизации. Ни одна из них не является позицией витрины.

Тот же пробел проявляется в инфраструктурной работе: Cloudflare и Commerce.com, выстраивающие готовность витрин к агентному трафику, делают полезное дело, но готовность — не то же самое, что делегирование. Терминация запроса агента, его rate-limiting, подпись или публикация машиночитаемого фида товаров — всё это описывает, как запрос прибывает. Ничто из этого не описывает, что агенту разрешено обязаться сделать от имени покупателя. Недостающий слой находится между идентификацией и оформлением заказа.

Что на самом деле должен нести мандат

Мандат — это артефакт, который замещает покупателя в момент обязательства. Это не сессионный cookie и не API-ключ. Чтобы быть пригодным при оформлении заказа, он должен нести как минимум:

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

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

Close-up of a high-precision CNC milling machine cutting a metal piece

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

Почему лимит расходов — не мандат

Числовой потолок ограничивает количество. Он не ограничивает намерение, а именно намерение покупатель и делегировал.

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

Ограничения по категориям и продавцам — это то, что кодирует намерение. «Заменить сломавшийся чайник, у этого ритейлера, на этой неделе» — это делегирование, о котором покупатель может рассуждать, а продавец может проверить. «Потратить до X» — нет, потому что это делегирует суждение о том, что покупать, вместе с полномочием покупать. Это различие — вся причина, по которой мандат является более богатым объектом, чем лимит.

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

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

Close-up of brutalist architecture with geometric concrete shapes and rough textures

Вопрос оценки, который никто не оценивает

Большинство бенчмарков для агентов покупок оценивают выполнение задачи. Нашёл ли агент товар? Оформил ли заказ? Прошёл ли заказ? По этой мере покупка, совершённая вне мандата, — успех, потому что покупка состоялась. Это неправильная функция оценки для системы, которая должна действовать в рамках делегированных полномочий.

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

  • Была ли каждая совершённая транзакция внутри области продавцов, потолка расходов и ограничений по товарам?
  • Пытался ли агент совершить обязательство после истечения срока или после отзыва, и было ли попытке отказано?
  • Привела ли повторная попытка к дублирующему обязательству, или она была дедуплицирована относительно исходного намерения?
  • Когда мандат и задача конфликтовали, чему следовал агент?

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

Вот почему значка доверия недостаточно. Значок утверждает, что агент прошёл чью-то оценку в какой-то момент. Отчёт о соответствии позволяет продавцу проверить, что агент делал относительно предъявленного им мандата, по транзакциям, которые он действительно пытался совершить. Первое — заявление; второе — доказательство. Продавцам, интегрирующим агентные эндпоинты, нужно второе, потому что первое нельзя проверить после факта.

О чём на самом деле этот раскол

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

Эта грамматика — не функция витрины. Её не выпустят, открыв каталог или подписав заголовки запросов, и её не решит тот ритейлер, кто двинется первым. Это проблема спецификации о делегировании, и те студии и органы стандартизации, которые отнесутся к ней именно так, произведут нечто, что продавцы действительно смогут проверять. Остальные продолжат строить периметры вокруг вопроса, который они ещё не записали.

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

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

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

Why is agent commerce described as a delegation problem rather than a storefront problem?

Because the unresolved question is not how an agent reaches a catalogue but how a shopper's authority is expressed, bounded and proved at the moment of commitment. Storefront readiness describes how a request arrives; a mandate describes what the agent may commit.

What should a purchasing mandate contain?

A principal the merchant can verify independently, merchant scope, a spend ceiling, item constraints that encode intent, an expiry window, and a revocation channel the merchant checks at commit time. It also needs replay resistance so that an agent retry is not charged as a duplicate order.

Why are spend limits insufficient on their own?

A ceiling bounds quantity, not intent. Several small orders can each sit inside the limit while together exceeding the harm of one large blocked order. Category and merchant constraints are what encode what the purchase was actually for.

How should shopping agents be evaluated?

Primarily on mandate conformance rather than task completion. A correct purchase made outside the mandate is a failure, and a conformance report that a merchant can audit is more useful than a trust badge asserting a past evaluation.