MetaMask Agent Wallet 通过 mm swap 命令集在同一链上兑换代币,并跨链桥接代币。交易者用自然语言告诉 Agent 进行交易或转移代币,Agent 将请求路由到相应命令,完成获取报价、比较路由和执行操作。与 Agent Wallet 上的永续合约交易不同——后者只有抵押品存入是 MetaMask 检查的 EVM 交易——兑换或桥接本身就是交易,这改变了交易者需要提前指定的内容,以及 MetaMask 钱包级别控制实际检查的内容。
这种交接方式,正是 Agent 驱动的交易与点击界面操作的区别所在。一句话可能隐含了大量关于滑点容忍度、路由和目标链的未明确假设。本文将详细介绍值得明确说明的细节。
本文是一份交易机制指南,而非兑换入门教程。关于滑点的原理及如何设置容忍度,请参阅什么是滑点。关于市价单与限价单的比较,包括滑点容忍度如何成为最接近 AMM 限价单的等价物,请参阅加密货币订单类型。关于 DEX、聚合器和钱包原生兑换的区别,请参阅2026 年最佳加密货币兑换平台。关于钱包类别本身,请参阅什么是 Agentic 钱包和Agentic 钱包的工作原理。关于如何调整抵押品存入规模,以及了解 MetaMask 在不同资产类别中实际检查交易的哪个步骤,请参阅如何使用 MetaMask Agent Wallet 交易永续合约。
兑换功能全解析
以下是兑换或桥接工作流所依赖的命令。了解这些功能,有助于更准确地表达请求,确保结果符合预期。
你向 Agent 发出的请求 | 执行的命令 | 功能说明 |
"将 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 命令参考
基于以上基本了解,以下是使用 MetaMask Agent Wallet 兑换和桥接代币(包括代币化股票和其他资产,通常称为现实世界资产或 RWA)的 9 条实用建议。
1. 先获取报价,将"不可用"视为正常结果
mm swap quote 对交易进行报价,不提交交易。mm swap execute 也可以直接接受相同的兑换参数,在一次调用中完成报价和执行,但单独先运行报价是更安全的默认做法:这是在签署任何内容之前查看价格、路由和费用的唯一方式。当底层桥接或 DEX 聚合器找不到路由时,CLI 不会抛出硬错误——它会返回一个软性的 kind: "unavailable" 结果,附带 reason(例如 AMOUNT_TOO_LOW、SLIPPAGE_TOO_HIGH 或 NO_QUOTES)、message 和 hint。
这一区别对于根据提示行动的 Agent 至关重要。不可用的报价是一个可以处理的结果——Agent 可以放宽滑点、调整金额或尝试不同的代币——而不是需要原样反馈的失败。唯一的例外是瞬态 QUOTE_RETRY 信号,这是一个真正的硬错误,值得按原样重试。无论如何,Agent 绝不应在报价返回不可用或已过期后伪造或重用 quoteId 来调用 execute;执行步骤会干净地失败,但不会基于猜测提交任何交易。
2. 设置滑点容忍度,而非依赖默认值
mm swap quote 接受 --slippage 参数,范围为 0 到 100 的百分比,省略时默认为 0.5%。该默认值是一个合理的折中方案,但它仍然是一个适用于所有交易的默认值,不考虑代币的流动性。
正如什么是滑点所述,严格的容忍度可以防止不利成交,但在波动条件下会导致更多报价直接失败;而宽松的容忍度成交更可靠,但价格更差。对于 ETH 兑 USDC 等深度流动性交易对,使用 0.5% 的默认值是合理的;而对于流动性较差的代币,最好明确指定容忍度(无论方向如何),而不是沿用一个从未针对该代币设计的数值。
3. 跨链桥接需要指定目标链,且 refuel 有特定的失败场景
添加 --to-chain-id 是将同链兑换转变为跨链桥接的关键;省略时,目标链默认为源链。--to-address 允许输出发送到签名者自己钱包以外的地址,但仅适用于跨链路由——当源链和目标链相同时,该参数无效。
--refuel 将少量目标链原生 Gas 打包到跨链报价中,适用于交易者在目标链上尚无 Gas 代币的情况。该参数为可选项,仅适用于跨链场景,且有一种特定的失败方式:当目标代币本身就是目标链的原生 Gas 资产时使用该参数(例如,将 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. 无 Gas 执行和批量授权自动发生,无需手动请求
当钱包的原生余额不足以支付 Gas 时,mm swap execute 会自动通过使用 EIP-7702 的无 Gas 中继路由符合条件的含 Gas 报价,从兑换的代币本身扣除中继费用。这没有对应的参数;这是 CLI 自动对符合条件的报价应用的回退机制,而非对每笔低 Gas 兑换的保证。
另外,在符合条件的链和账户上,CLI 使用 ERC-7821 批量执行将 ERC-20 授权和交易合并为一次原子调用,响应中会以 route: "erc7821" 标注。当批量处理不可用时,CLI 会回退到顺序提交。这两种行为都无需在请求中指定,但在查看实际执行结果时值得了解——批量无 Gas 兑换和两步付 Gas 兑换都可以满足同一请求,响应字段是区分两者的依据。
注意:无 Gas 执行可能导致更高的费用。
6. Guard Mode 检查的是兑换本身,而非单独的步骤
这与 Agent Wallet 上的永续合约交易模式相反——后者开仓或平仓 Hyperliquid 头寸发生在链下,只有抵押品存入才是 MetaMask 评估的 EVM 交易。兑换或桥接没有这种分离:mm swap execute 直接将交易作为 EVM 交易提交,因此它是 Guard Mode 滚动 24 小时流出限额计量的交易,也是 MetaMask 威胁扫描以及网络、地址和代币白名单直接评估的对象。
一笔 2,000 美元的兑换在确认的那一刻,就会作为 2,000 美元的流出计入滚动限额,无论是同链交易还是跨链桥接。如果超出限额,或威胁扫描标记该交易,任务将暂停在 AWAITING_MFA 状态,等待双因素身份验证批准——QR 码登录时为 MetaMask Mobile 推送通知,浏览器登录时为电子邮件链接——在有人响应之前,Agent 无法继续操作。这适用于服务器钱包模式;交易模式不适用于自带钱包的设置。实际意义在于:兑换请求中的规模控制,与钱包已执行的规则并无二致,不像永续合约存款那样是独立的习惯——兑换金额本身就是 Guard Mode 监控的数字。
7. 超时后不要盲目重新执行
兑换可能在交易哈希生成之前因双因素身份验证而暂停,进入附带轮询 ID 的 AWAITING_MFA 状态。如果 MFA 轮询在无 Gas 中继环节或顺序服务器钱包环节超时,会显示为 RELAY_TIMEOUT 或 JOB_TIMEOUT,两者都附带相同的恢复提示:运行 mm wallet requests watch 获取哈希,在原始任务可能仍在完成时不要再次调用 execute。
在该窗口期内重新运行 execute,有可能导致第二次重复提交,而非解决问题。批准待处理请求并监控任务,才是正确的恢复路径。
8. 兑换没有模拟运行——比较报价是最接近的替代方案
与 mm perps open 不同——后者接受 --dry-run 参数在不签署的情况下验证订单——mm swap execute 没有等效的预览模式。最接近模拟兑换的方式是请求报价,对于非常规操作,可以拉取 --all-quotes 查看完整的候选路由集,然后再决定执行哪一个。两者都不能严格替代模拟运行——报价可能过期,市场条件可能在报价和执行之间发生变化——但这是在签署任何内容之前发现错误请求的可用工具。
9. 报价前检查链和无 Gas 支持情况
mm chains list 返回每条链的 features 字段,其中包括该链是否支持 swap,以及表示无 Gas 中继是否可用的 relaySupported 标志。在报价前检查这些信息可以节省一次往返:针对不支持兑换的链发出报价请求,或假设无 Gas 执行会在不支持中继的链上生效,只会在事后才显示错误,而这本可以提前排除。
这与两个值得了解的兑换专属错误代码相对应:GASLESS_UNSUPPORTED 表示该链上中继不可用,INSUFFICIENT_GAS 表示钱包的原生余额不足以支付 Gas 且无 Gas 回退未生效。两者都可以追溯到 mm chains list 预先回答的同一个链支持问题。
Agent Wallet 在兑换方面的局限性
明确边界比暗示更广泛的功能更有价值。
目前没有内置的定期或定时兑换功能——没有原生的定投(DCA)功能,没有跨投资组合的自动再平衡,也没有中心化交易所可能提供的常设限价订单簿。每次 mm swap 调用都是一个单次报价和执行周期;任何定期操作都是按计划调用该周期的脚本或 Agent 循环,而非钱包功能。希望实现此类常设逻辑的交易者可以将其构建为插件——这是一项测试版功能,允许已安装的 npm 包在经过同意授权的能力范围内向 CLI 添加新命令——但这是一条自行构建的路径,而非内置功能。
除报价步骤所报告的内容外,没有跨 DEX 最优执行保证。--all-quotes 和 --strategy 会呈现排序后的候选路由,但排名反映的是报价时可用的路由,而非保证片刻后不会出现更优价格。
滑点保护是对可接受价格波动的上限约束,而非对底层交易本身是否合理的保护。满足滑点容忍度的兑换,仍可能以交易者事后不会选择的价格成交;容忍度只限制成交价格偏离报价的幅度。
mm chains list 返回指定 CLI 版本的权威性当前链集合,同时附带 features 字段,显示每条链是否支持 swap 功能,以及用于无 gas 资格判断的 relaySupported 标志。
不,两者之间的区别值得了解。在永续合约(perps)方面,只有 Hyperliquid 的充值操作属于 EVM 交易,会经过 MetaMask 的检查;开仓或平仓本身并不属于此类交易。而 swap 或跨链桥则没有这种拆分——swap 的执行本身就是 EVM 交易,因此会直接针对资金流出限额、威胁扫描和白名单进行检查。
当跨链桥或 DEX 因某个可操作的原因无法生成路由时,CLI 会返回正常响应——该响应包含 kind: "unavailable"、诸如 AMOUNT_TOO_LOW 或 SLIPPAGE_TOO_HIGH 等原因说明,以及相应的调整提示。只有瞬态的 QUOTE_RETRY 信号才是真正的硬错误。
不。它是选择性加入的,且仅限跨链使用。当目标代币已经是目标链的原生 gas 资产时,由于无需补充燃料,操作将以 NO_QUOTES 失败。
不能直接实现。mm swap execute 没有空运行标志,甚至可以直接接受 swap 参数并在没有事先报价的情况下执行。最接近的预提交检查方式是:先请求报价,并对非常规交易使用 --all-quotes 比较路由方案。
它进入带有轮询 ID 的 AWAITING_MFA 状态。如果在无 gas 中继或顺序服务器钱包阶段等待超时,则会显示为 RELAY_TIMEOUT 或 JOB_TIMEOUT。无论哪种情况,请先批准待处理的请求,然后运行 mm wallet requests watch 以获取交易哈希。在原始任务可能仍在执行期间重新运行 execute,存在重复提交的风险,而非解决问题。
不。当钱包的原生余额不足以支付 gas 时,mm swap execute 会自动将符合条件的、已含 gas 费用的报价通过无 gas 中继进行路由,并从兑换所得代币中扣除费用;这并非在所有低 gas 兑换中都有保证,仅适用于报价符合条件的情况。当 CLI 同时将授权和交易合并为一次调用时,响应会报告路由为:"erc7821"。这两种行为均不受功能开关控制。