>_ DevTrendsja

言語

ホーム

言語

セクション

フロントエンド バックエンド モバイル DevOps AI / ML ゲーム開発 ブロックチェーン 組み込み セキュリティ
TypeScript

AIエージェントにウォレットを持たせて全額失わない方法

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

Инженеры Stripe выпустили интересную утилиту под названием link-cli. Она решает эту проблему через Link wallet, выдавая одноразовые виртуальные карты или токены для конкретных транзакций только после подтверждения владельцем.

В этой статье разберём, как работает инструмент, как подключить его к LLM через протокол MCP и какие подводные камни нас ждут.

Как устроен процесс

Вся работа строится вокруг сущности запроса на расходы. Агент не получает доступа к банковскому счёту и никогда не видит сохранённые карты.

Алгоритм простой:

  1. Агент анализирует страницу магазина, формирует корзину и собирает параметры заказа.
  2. Через CLI создаётся запрос на покупку с указанием продавца, суммы и подробным контекстом о назначении расхода.
  3. На телефон приходит push-уведомление в приложении Link с просьбой подтвердить.
  4. После одобрения CLI получает временную виртуальную карту или токен.
  5. Агент вставляет полученные реквизиты в форму оплаты и завершает покупку.

Параметр --context — это не для вида. Stripe требует подробное описание минимум в 100 символов, чтобы пользователь точно знал, за что списываются деньги в push-уведомлении. Подтверждение должно быть сделано строго за 10 минут, после чего запрос истекает.

Форматы реквизитов

Утилита может возвращать три типа платёжных данных в зависимости от того, где и как агент совершает оплату.

Первый вариант — стандартная одноразовая виртуальная карта (PAN). Работает с любым онлайн-магазином со стандартной HTML-формой оплаты, даже если сайт никогда не слышал о Stripe.

Второй вариант — Shared Payment Token (SPT). Это для случаев, когда продавец поддерживает Machine Payments Protocol (MPP). Здесь оплата проходит программно через HTTP 402 без эмуляции ввода данных в браузере.

Третий вариант — Link Pay Token (LPT). Если оплата проходит через Stripe и на странице есть специальный блок для AI-агентов, CLI генерирует токен напрямую, привязанный к аккаунту продавца.

Безопасность логов и работа с MCP

Главная головная боль при работе с платежами в LLM — утечка реквизитов. Если утилита выведет полный номер карты и CVC в stdout, эти данные останутся в контексте модели, системных промптах, логах терминала и транскриптах агента.

Разработчики из Stripe обошли это аргументом --output-file. Команда сохраняет полные данные карты в локальный файл с правами доступа 0600, а в стандартный вывод выводит маскированный JSON:

Агент получает путь к файлу, передаёт его внутреннему браузерному раннеру вроде Playwright, и в логах остаётся только бренд карты и последние четыре цифры.

Для интеграции с фреймворками вроде Claude Code или Cursor утилита может работать как MCP-сервер (Model Context Protocol):

Если агент работает в изолированном контейнере или на удалённом сервере, команда link-cli serve запускает локальную HTTP-точку для MCP.

Кстати, для общения с языковыми моделями по умолчанию используется формат toon. Это компактный текстовый вывод без синтаксического шума JSON, который экономит токены в контекстном окне.

Лимиты и ограничения

Инструмент находится на ранней стадии, поэтому команда Stripe заложила строгие границы безопасности:

  • Максимальная сумма одной покупки ограничена $500 (50 000 центов).
  • Дневной лимит расходов также $500, с месячным потолком в $20 000.
  • Выданные карты или токены активны только 12 часов с момента создания запроса.
  • Одновременно может существовать не более 10 подтверждённых активных запросов.

Для локальных экспериментов и интеграционных тестов есть флаг --test. Он генерирует тестовые номера карт (например, 4000009990001984) и не списывает реальные средства с аккаунта Link.

Где это применимо

Утилита создана для конкретной ниши: автономные скрипты и ассистенты, которым периодически нужно выполнять транзакции от имени человека.

Типичные сценарии использования:

  • Персональные агенты для покупки расходников, бронирования билетов или подписок.
  • Автоматическое пополнение баланса в облачных сервисах и сторонних API при достижении лимитов.
  • Оплата премиум-эндпоинтов через Machine Payments Protocol (HTTP 402).
  • Нагрузочное и end-to-end тестирование e-commerce checkout.

После попытки списания агент может отправить отчёт о результате через link-cli report, указав статус (успех, CAPTCHA, блокировка Cloudflare или отказ банка). Это помогает собирать статистику отказов.

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

Главный минус на данный момент: инструмент работает только с аккаунтами Link в США. Если у вас есть доступ к US Link, можете протестировать утилиту прямо сейчас через npx @stripe/link-cli onboard. Остальным придётся изучить TypeScript-исходники в репозитории и ждать географического расширения.

関連プロジェクト