MetaMask Agent Wallet выполняет обмен токенов в рамках одной сети и их перевод между сетями с помощью набора команд mm swap. Трейдер обращается к агенту с запросом на обмен или перемещение токенов на обычном языке, а агент направляет этот запрос к командам, которые получают котировку, сравнивают маршруты и выполняют транзакцию. В отличие от торговли бессрочными фьючерсами в Agent Wallet, где только депозит обеспечения является EVM-транзакцией, проверяемой MetaMask, своп или бридж сам по себе является транзакцией — это меняет то, что трейдер должен указать заранее, и то, что фактически видят элементы управления на уровне кошелька MetaMask.
Именно в этом переходе торговля под управлением агента отличается от работы через интерфейс. Одно предложение может нести в себе множество невысказанных допущений о допустимом проскальзывании, маршрутизации и целевой сети. В этой статье рассматриваются детали, которые стоит прояснить явно.
Это руководство по механике торговли, а не введение в свопы. О том, как работает проскальзывание и как выбрать допустимый порог, читайте в статье что такое проскальзывание. О том, чем отличаются рыночные и лимитные ордера, включая то, почему допустимое проскальзывание является ближайшим аналогом лимитного ордера в AMM, читайте в статье типы ордеров в криптовалюте. О различиях между DEX, агрегаторами и нативными свопами кошелька читайте в статье лучшие платформы для криптосвопов в 2026 году. О самой категории кошельков читайте в статьях что такое агентский кошелёк и как работают агентские кошельки. О расчёте депозитов обеспечения и о том, какой шаг сделки MetaMask фактически проверяет в другом классе активов, читайте в статье как торговать бессрочными контрактами с MetaMask Agent Wallet.
Обзор возможностей свопа
Ниже перечислены команды, на которые опирается рабочий процесс свопа или бриджа. Понимание этих возможностей поможет точнее формулировать запросы, чтобы они выполнялись именно так, как задумано.
Что вы просите агента | Что выполняется | Что происходит |
«Обменяй 0.1 ETH на USDC» | mm swap quote
| Рассчитывает своп в рамках одной сети без его отправки |
«Переведи 10 USDC из Base в Arbitrum» | mm swap quote --to-chain-id
| Рассчитывает маршрут между сетями без его отправки |
«Покажи все маршруты, отсортированные по стоимости» | mm swap quote --all-quotes
| Возвращает все маршруты-кандидаты с ранжированием |
«Выполни эту котировку» | mm swap execute --quote-id
| Отправляет ранее рассчитанную сделку |
«Выполни своп без запроса подтверждения» | mm swap quote --yes
| Рассчитывает и немедленно выполняет своп, пропуская подтверждение |
«Что происходит с этим свопом» | mm swap status --quote-id
| Проверяет статус выполнения |
Источник: справочник команд MetaMask Agent Wallet
Имея это базовое понимание, рассмотрим 9 советов по использованию MetaMask Agent Wallet для обмена и перевода токенов, включая токенизированные акции и другие активы (часто называемые реальными активами или RWA).
1. Сначала запрашивайте котировку и воспринимайте ответ «недоступно» как нормальный результат
mm swap quote рассчитывает сделку без её отправки. mm swap execute также может принимать те же параметры свопа напрямую и выполнять расчёт с последующим исполнением в одном вызове, однако запуск котировки отдельно является более безопасным подходом по умолчанию: это единственный способ увидеть цену, маршрут и комиссии до того, как что-либо будет подписано. Когда базовый бридж или агрегатор DEX не может найти маршрут, CLI не выдаёт жёсткую ошибку — он возвращает мягкий результат kind: "unavailable" с полем reason (например, AMOUNT_TOO_LOW, SLIPPAGE_TOO_HIGH или NO_QUOTES), полем message и полем hint.
Это различие важно для агента, действующего по запросу. Недоступная котировка — это ответ, с которым можно работать: агент может расширить допустимое проскальзывание, скорректировать сумму или попробовать другой токен, — а не сбой, о котором нужно сообщать дословно. Исключение составляет временный сигнал QUOTE_RETRY, который является настоящей жёсткой ошибкой и требует повторной попытки в исходном виде. В любом случае агент никогда не должен подделывать или повторно использовать quoteId для вызова execute после того, как котировка вернулась как недоступная или устаревшая: шаг выполнения завершится с ошибкой, но транзакция не будет отправлена на основе предположения.
2. Устанавливайте допустимое проскальзывание вместо того, чтобы полагаться на значение по умолчанию
mm swap quote принимает параметр --slippage в виде процента от 0 до 100 и по умолчанию использует значение 0,5%, если параметр не указан. Это значение по умолчанию является разумным компромиссом, однако оно всё равно применяется к каждой сделке вне зависимости от ликвидности токена.
Как описано в статье что такое проскальзывание, жёсткий порог защищает от невыгодного исполнения, но приводит к тому, что больше котировок полностью отклоняется в волатильных условиях, тогда как мягкий порог обеспечивает более надёжное исполнение по менее выгодной цене. Запрос на торговлю парой с высокой ликвидностью, например ETH/USDC, вполне может опираться на значение по умолчанию 0,5%; запрос на торговлю токеном с низкой ликвидностью лучше сопровождать явно указанным порогом — в любую сторону, — чем наследовать значение, которое никогда не выбиралось с учётом этого конкретного токена.
3. Для кросс-чейн бриджей необходимо указывать целевую сеть, а refuel имеет специфический сценарий сбоя
Добавление --to-chain-id превращает своп в рамках одной сети в кросс-чейн бридж; если параметр не указан, целевая сеть по умолчанию совпадает с исходной. --to-address позволяет направить результат на адрес, отличный от кошелька подписанта, но только для кросс-чейн маршрутов — при совпадении исходной и целевой сети этот параметр не имеет эффекта.
--refuel включает небольшое количество нативного газа целевой сети в кросс-чейн котировку, что полезно, когда у трейдера ещё нет газового токена в целевой сети. Этот параметр является опциональным и применяется только для кросс-чейн операций; у него есть один специфический сценарий сбоя: использование параметра, когда целевой токен уже является нативным газовым активом целевой сети (например, при бридже ETH в Arbitrum ETH), возвращает NO_QUOTES. Запрос вида «переведи USDC из Base в Arbitrum и убедись, что у меня там есть немного ETH для работы» описывает именно этот флаг; запрос на бридж непосредственно в нативный токен сети не требует его и завершится ошибкой, если флаг всё равно будет добавлен.
4. Сравнивайте маршруты осознанно, затем выполняйте конкретный
--all-quotes возвращает все маршруты-кандидаты с ранжированием и отмеченным рекомендованным маршрутом, отсортированные по параметру --strategy (через запятую: cost, speed, impact, output; по умолчанию используется cost,speed). Сравнение маршрутов и последующее выполнение конкретного --quote-id — это двухэтапный процесс, и он является намеренным: --all-quotes нельзя сочетать с --yes, поэтому запрос на просмотр всех маршрутов с одновременным пропуском подтверждения требует двух действий, которые CLI не выполнит в одном вызове.
Артефакты котировок автоматически удаляются через 24 часа, поэтому маршрут, актуальный для сравнения сегодня, не будет действителен для выполнения на следующей неделе.
5. Безгазовое выполнение и пакетные подтверждения происходят автоматически, а не по запросу
Когда нативного баланса кошелька недостаточно для покрытия газа, mm swap execute автоматически направляет подходящие котировки с включённым газом через безгазовый ретранслятор с использованием EIP-7702, вычитая комиссию ретранслятора из самого обмениваемого токена. Для этого нет отдельного флага; это резервный механизм, который CLI применяет самостоятельно к подходящим котировкам, а не гарантия для каждого свопа с низким газом.
Отдельно, на подходящих сетях и аккаунтах, CLI объединяет подтверждение ERC-20 и саму сделку в один атомарный вызов с использованием пакетного выполнения ERC-7821, о чём в ответе сообщается как route: "erc7821". Когда пакетирование недоступно, CLI переходит к последовательной отправке. Ни одно из этих поведений не нужно запрашивать в промпте, однако оба стоит знать при анализе фактически выполненных операций — пакетный безгазовый своп и двухэтапный своп с оплатой газа могут удовлетворять одному и тому же запросу, и поля ответа позволяют определить, что именно произошло.
ПРИМЕЧАНИЕ: Безгазовое выполнение может привести к более высоким комиссиям.
6. Помните, что Guard Mode проверяет сам своп, а не отдельный шаг
Это противоположная схема по сравнению с торговлей бессрочными фьючерсами в Agent Wallet, где открытие или закрытие позиции на Hyperliquid происходит вне сети, и только депозит обеспечения является EVM-транзакцией, оцениваемой MetaMask. Своп или бридж не имеет такого разделения: mm swap execute отправляет сделку непосредственно как EVM-транзакцию, поэтому именно она учитывается в скользящем лимите оттока за 24 часа Guard Mode и именно её оценивают сканирование угроз MetaMask, а также списки разрешённых сетей, адресов и токенов.
Своп на $2 000 засчитывается как отток в $2 000 в счёт скользящего лимита в момент подтверждения — независимо от того, является ли это свопом в рамках одной сети или кросс-чейн бриджем. Если лимит превышен или сканирование угроз выявляет проблему, задание приостанавливается в состоянии AWAITING_MFA для подтверждения двухфакторной аутентификации — push-уведомление MetaMask Mobile для входа через QR-код или ссылка по электронной почте для входа через браузер — и агент не может продолжить до получения ответа. Это применяется в режиме серверного кошелька; торговые режимы не распространяются на конфигурации с собственным кошельком. Практический вывод: дисциплина в выборе размера свопа — это не отдельная привычка, отличная от того, что уже обеспечивает кошелёк, как в случае с депозитом для бессрочных контрактов: сумма свопа сама по себе является числом, за которым следит Guard Mode.
7. Не запускайте execute повторно вслепую после тайм-аута
Своп может приостановиться для двухфакторной аутентификации до того, как появится хэш транзакции, переходя в состояние AWAITING_MFA с прикреплённым идентификатором опроса. Если опрос MFA завершается по тайм-ауту на этапе безгазового ретранслятора или последовательного этапа серверного кошелька, это проявляется как RELAY_TIMEOUT или JOB_TIMEOUT — оба несут одинаковую подсказку по восстановлению: выполните mm wallet requests watch для получения хэша и не вызывайте execute повторно, пока исходное задание ещё может завершиться.
Повторный запуск execute в этом окне рискует создать вторую, избыточную отправку вместо того, чтобы исправить ситуацию. Правильный путь восстановления — подтвердить ожидающий запрос и отслеживать задание.
8. Для свопов нет режима пробного запуска — сравнение котировок является ближайшим аналогом
В отличие от mm perps open, который принимает --dry-run для проверки ордера без его подписания, у mm swap execute нет эквивалентного режима предварительного просмотра. Ближайшее к репетиции свопа — это запрос котировки и, для нестандартных операций, получение --all-quotes для просмотра полного набора маршрутов-кандидатов перед выбором конкретного. Ни то ни другое не заменяет пробный запуск в строгом смысле — котировка может устареть, а рыночные условия могут измениться между расчётом и исполнением, — однако это доступный инструмент для выявления некорректно сформулированного запроса до того, как он что-либо подпишет.
9. Проверяйте поддержку сети и безгазового режима перед запросом котировки
mm chains list возвращает поле features для каждой сети, которое включает информацию о поддержке swap, и флаг relaySupported, указывающий на доступность безгазового ретранслятора. Проверка этого перед запросом котировки позволяет избежать лишнего обращения: запрос котировки для сети без поддержки свопа или предположение о том, что безгазовое выполнение сработает в сети без поддержки ретранслятора, проявляется как ошибка только постфактум, тогда как это можно было исключить заранее.
Это сочетается с двумя специфическими кодами ошибок свопа, которые стоит знать: GASLESS_UNSUPPORTED означает, что ретранслятор недоступен в этой сети, а INSUFFICIENT_GAS означает, что нативного баланса кошелька недостаточно для покрытия газа и безгазовый резервный механизм не применился. Оба случая восходят к одному и тому же вопросу о поддержке сети, на который mm chains list отвечает заранее.
Что Agent Wallet не делает для свопов
Чёткое понимание границ возможностей полезнее, чем намёк на более широкие.
Встроенного повторяющегося или запланированного свопа не существует — нет нативной функции усреднения стоимости в долларах, автоматической ребалансировки портфеля и книги постоянных лимитных ордеров, как на централизованной бирже. Каждый вызов mm swap — это единый цикл расчёта и исполнения; всё повторяющееся — это скрипт или цикл агента, вызывающий этот цикл по расписанию, а не функция кошелька. Трейдеры, желающие реализовать подобную постоянную логику, могут создать её в виде плагина — бета-функции, позволяющей установленному npm-пакету добавлять новые команды в CLI в рамках возможностей с управляемым согласием, — однако это путь самостоятельной разработки, а не встроенная функциональность.
Гарантии наилучшего исполнения между DEX за пределами того, что сообщает шаг расчёта котировки, не существует. --all-quotes и --strategy предоставляют ранжированные кандидаты, однако ранжирование отражает маршруты, доступные на момент расчёта котировки, а не гарантию того, что лучшая цена не появится мгновением позже.
Защита от проскальзывания — это потолок допустимого движения цены, а не защита от того, что сама сделка окажется неудачной идеей. Своп, уложившийся в допустимое проскальзывание, всё равно может исполниться по цене, которую трейдер не выбрал бы задним числом; порог лишь ограничивает, насколько далеко исполнение может отклониться от котировки.
mm chains list возвращает авторитетный актуальный набор для заданной версии CLI, а также поле features, показывающее поддержку swap для каждой сети, и флаг relaySupported для определения права на gasless-транзакции.
Нет, и эта разница важна. В случае с perps только депозит на Hyperliquid является EVM-транзакцией, которую проверяет MetaMask; само открытие или закрытие позиции — нет. Swap или bridge не имеют такого разделения — mm swap execute сам по себе является EVM-транзакцией, поэтому он напрямую проверяется на соответствие лимиту оттока средств, сканированию угроз и allowlists.
Это стандартный ответ CLI, когда мост или DEX не может сформировать маршрут по конкретной причине — ответ включает kind: "unavailable", причину, например AMOUNT_TOO_LOW или SLIPPAGE_TOO_HIGH, и подсказку о том, что следует изменить. Единственным настоящим критическим сбоем является временный сигнал QUOTE_RETRY.
Нет. Это опциональная функция, работающая только в кросс-чейн режиме, и она завершается ошибкой NO_QUOTES, если целевой токен уже является нативным газовым активом целевой сети — поскольку в таком случае пополнять баланс не нужно.
Не напрямую. У команды mm swap execute нет флага пробного запуска, и она может принимать параметры swap напрямую и выполнять обмен без предварительного запроса котировки. Наиболее близкая доступная проверка перед подтверждением — сначала запросить котировку и сравнить маршруты с помощью --all-quotes для всего нестандартного.
Система переходит в состояние AWAITING_MFA с прикреплённым идентификатором опроса. Если время ожидания истекает на этапе безгазового ретранслятора или последовательного серверного кошелька, это отображается как RELAY_TIMEOUT или JOB_TIMEOUT. В любом случае подтвердите ожидающий запрос, затем выполните mm wallet requests watch , чтобы получить хэш транзакции. Повторный запуск execute, пока исходное задание ещё может завершиться, создаёт риск дублирования отправки, а не решения проблемы.
Нет. Когда нативного баланса кошелька не хватает для оплаты газа, mm swap execute автоматически направляет подходящие котировки с включённым газом через gasless relay и вычитает комиссию из обменянного токена; это не гарантируется для каждого свопа с низким газом — только для тех, которые соответствуют критериям котировки. В ответе отображается route: "erc7821", когда CLI также объединяет подтверждение и сделку в один вызов. Ни одно из этих поведений не управляется флагами.