mcpField
M
metamask-agent-wallet

metamask-agent-wallet

github.com/metamask其他301.2k 次安装6 天前更新
代码仓库

关于 metamask-agent-wallet

metamask-agent-wallet 是一项说明 MetaMask Agent Wallet 的 `mm` 命令行界面用法的技能,供 Agent 按需查阅命令参考和工作流。内容涵盖钱包、链上交易、市场数据、兑换、桥接、收益及预测市场操作。

主要功能

  1. 01按用户意图路由到命令参考
  2. 02提供登录、钱包和策略操作说明
  3. 03覆盖转账、签名及原始交易
  4. 04涵盖代币、价格和 AI 市场摘要
  5. 05说明永续合约与预测市场流程
  6. 06提供兑换、跨链桥和收益工作流

适用场景

  1. 01为钱包登录或初始化选择命令
  2. 02查询余额、价格和代币信息
  3. 03按流程执行兑换或跨链转移
  4. 04查阅预测市场下单及收益操作步骤

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/metamask/agent-skills --skill metamask-agent-wallet

安装后在 Claude Code 中输入/metamask-agent-wallet确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
auth.md
chain.md
decode.md
doctor.md
earn.md
errors.md
market-data.md
perps.md
plugins.md
polling.md
predict.md
signing.md
swap.md
transaction.md
transfer.md
tx-history.md
wallet.md
x402.md
scripts/
amount_to_hex.py
x402_pay.py
workflows/
bridge.md
earn-supply.md
earn-withdraw.md
login.md
market-data.md
onboarding.md
perps-close-position.md
perps-modify-position.md
perps-open-position.md
predict-funding.md

详细介绍

MetaMask Agentic CLI Skill

本 skill 记录了 mm CLI 的功能范围,涵盖 MetaMask Agent Wallet 身份验证、钱包生命周期、余额查询、代币转账、消息与类型化数据签名、原始交易、链发现、市场数据、代币发现、代币化现实世界资产、AI 市场与资产摘要、永续合约交易、预测市场交易、预测交易/赎回历史、代币兑换、跨链桥、DeFi 赚取/收益金库,以及 EVM calldata 解码。

使用路由表选择相关的参考文件。CLI 行为位于 references/ 中。可重复的操作模式位于 workflows/ 中。

命令路由

将用户意图匹配到命令和参考文件,然后在构建命令之前阅读参考文件。如果意图跨越多个领域,请按依赖顺序依次加载它们。

用户意图命令参考
查看身份验证状态mm auth statusauth.md
登录 MetaMask Agentic CLImm loginauth.md
选择钱包模式并设置策略mm initauth.md
显示当前初始化设置mm init showauth.md
使用 MetaMask Mobile 扫描二维码登录mm login qrauth.md
通过浏览器登录(Google 或 Email)mm login browserauth.md
登出mm logoutauth.md
重置 CLI 会话mm resetauth.md
显示 CLI 配置mm config getauth.md
设置 CLI 配置mm config setauth.md
设置 BYOK 助记词加密密码mm wallet password setauth.md
更改 BYOK 助记词加密密码mm wallet password changeauth.md
移除 BYOK 助记词加密密码mm wallet password removeauth.md
解读原始 CLI 错误代码AuthError, ValidationError, WALLET_ERRORerrors.md
检查 CLI、技能、环境和会话的运行状况mm doctordoctor.md
列出已安装的 CLI 插件mm pluginsplugins.md
检查已安装的 CLI 插件mm plugins inspectplugins.md
安装 CLI 插件mm plugins installplugins.md
更新 CLI 插件mm plugins updateplugins.md
卸载 CLI 插件mm plugins uninstallplugins.md
移除所有用户安装的 CLI 插件mm plugins resetplugins.md
链接本地插件目录以进行开发mm plugins linkplugins.md
启用或禁用插件测试版mm config set experimentalPluginsplugins.md
将 EVM calldata 解码为易读的意图mm decodedecode.md
创建钱包mm wallet createwallet.md
列出所有钱包mm wallet listwallet.md
切换当前钱包mm wallet selectwallet.md
显示当前钱包详情mm wallet showwallet.md
显示当前钱包地址mm wallet addresswallet.md
查看当前钱包余额mm wallet balancewallet.md
显示用于为当前钱包注资的二维码和地址mm wallet add-fundwallet.md
显示当前交易模式mm wallet trading-mode getwallet.md
将交易模式设为 guard 或 beastmm wallet trading-mode setwallet.md
查看钱包策略mm wallet policy getwallet.md
设置钱包策略mm wallet policy setwallet.md
显示项目策略模板mm wallet policy templatewallet.md
签署纯文本消息mm wallet sign-messagesigning.md
签署 EIP-712 类型化数据mm wallet sign-typed-datasigning.md
发送原始 EVM 交易mm wallet send-transactiontransaction.md
转移原生代币或 ERC-20 代币mm transfertransfer.md
列出 CLI 支持的链mm chains listchain.md
列出待处理的钱包请求mm wallet requests listpolling.md
监视钱包轮询 IDmm wallet requests watchpolling.md
查询现货或历史价格mm price ...market-data.md
发现代币、代币网络或代币元数据mm token ...market-data.md
列出代币化现实世界资产,例如股票、ETF 和 CEFmm token rwasmarket-data.md
获取精选的 AI 市场动态mm pulsemarket-data.md
获取单项资产的 AI 生成摘要mm pulse assetmarket-data.md
获取 AI 生成的全市场概览mm pulse marketmarket-data.md
列出永续合约市场mm perps marketsperps.md
查看永续合约账户余额mm perps balanceperps.md
列出未平仓的永续合约仓位mm perps positionsperps.md
列出账户的资金费支付记录mm perps fundingperps.md
显示市场资金费率历史记录mm perps funding-ratesperps.md
获取永续合约订单报价mm perps quoteperps.md
列出挂单中的永续合约订单mm perps ordersperps.md
开立永续合约仓位mm perps openperps.md
平掉永续合约仓位mm perps closeperps.md
修改杠杆、止盈或止损mm perps modifyperps.md
取消挂单中的永续合约订单mm perps cancelperps.md
将 USDC 存入永续合约平台mm perps depositperps.md
从永续合约平台提取 USDCmm perps withdrawperps.md
在现货账户和永续合约账户之间转移 USDCmm perps transferperps.md
列出永续期货平台mm perps list-venuesperps.md
列出平台可用的 DEXmm perps dexsperps.md
列出钱包的金库权益mm perps vault listperps.md
显示 Hyperliquid 金库详情mm perps vault infoperps.md
将 USDC 存入 Hyperliquid 金库mm perps vault depositperps.md
从 Hyperliquid 金库提取 USDCmm perps vault withdrawperps.md
显示 Hyperliquid 账户模式mm perps account mode getperps.md
切换 Hyperliquid 账户模式mm perps account mode setperps.md
设置 Predict 交易模式mm predict modepredict.md
一次性 Predict 设置mm predict setuppredict.md
创建或刷新 Predict 凭证mm predict authpredict.md
修复 Predict 授权mm predict approvepredict.md
检查 Predict 后端状态和账户设置mm predict statuspredict.md
检查你的 IP 是否因地理限制而无法访问 Polymarketmm predict geoblockpredict.md
列出预测市场mm predict markets listpredict.md
搜索预测市场mm predict markets searchpredict.md
查看预测市场详情mm predict markets getpredict.md
列出 Polymarket 事件mm predict events listpredict.md
查看 Polymarket 事件详情mm predict events getpredict.md
列出 Polymarket 事件系列mm predict series listpredict.md
查看 Polymarket 事件系列详情mm predict series getpredict.md
列出 Polymarket 标签mm predict tags listpredict.md
查看 Polymarket 标签详情mm predict tags getpredict.md
预览预测订单费用mm predict quotepredict.md
下达预测市场订单mm predict placepredict.md
取消预测订单mm predict cancelpredict.md
查看预测市场仓位mm predict positionspredict.md
查看未结预测订单mm predict orderspredict.md
显示完整的 Predict 投资组合快照mm predict portfoliopredict.md
列出可赎回的获胜仓位mm predict redeem listpredict.md
赎回获胜仓位mm predict redeempredict.md
查看 Predict 存款钱包余额mm predict balancepredict.md
为 Predict 存款钱包注资mm predict depositpredict.md
从 Predict 存款钱包提取 pUSDmm predict withdrawpredict.md
获取预测订单簿mm predict bookpredict.md
监视 Predict 作业mm predict watchpredict.md
列出 Predict 交易或赎回历史记录mm predict historypredict.md
查看特定市场的 Predict 历史记录mm predict history getpredict.md
按哈希查询交易mm txtx-history.md
列出当前钱包的近期交易mm tx historytx-history.md
获取兑换或跨链桥报价mm swap quoteswap.md
执行代币兑换或跨链桥操作mm swap executeswap.md
查看兑换或跨链桥状态mm swap statusswap.md
将代币跨链桥接到另一条链mm swap executeswap.md
支付 HTTP 402 / x402 付费墙请求python3 scripts/x402_pay.pyx402.md
支付受 x402 限制的 MCP 工具调用python3 scripts/x402_pay.pyx402.md
列出收益金库和 APYmm earn marketsearn.md
查看收益金库仓位mm earn positionsearn.md
向收益金库存入代币mm earn supplyearn.md
从收益金库提取代币mm earn withdrawearn.md

工作流

CLI 行为位于 references/。可重复的模式位于 workflows/。当用户的请求是一个模式,而不是单条命令时,加载相应的工作流文件。

模式工作流
首次设置与入门onboarding.md
登录流程login.md
故障排查决策troubleshooting
Swap 报价-复核-执行流程swap.md
Bridge 报价-复核-执行流程bridge.md
开仓永续合约流程perps-open-position.md
平仓永续合约流程perps-close-position.md
修改永续合约仓位流程perps-modify-position.md
Predict 首次设置与凭据predict-setup.md
从 Predict 钱包存入或提取 pUSDpredict-funding.md
搜索和浏览预测市场predict-markets.md
报价并下单预测订单predict-place-order.md
查看或取消 Predict 订单和仓位predict-manage-orders.md
查看 Predict 投资组合并兑换奖金predict-portfolio.md
查看 Predict 交易与兑换历史predict-history.md
Token 发现、价格和市场数据market-data.md
提供 Token 以赚取收益earn-supply.md
从收益金库提取 Tokenearn-withdraw.md
支付 HTTP 402(x402)付费墙请求x402-pay.md
支付 x402 门控的 MCP 工具调用x402-mcp.md

全局标志

每条 mm 命令都接受以下标志:

标志短标志描述
--format-f输出格式:text、json 或 toon。在 TTY 中默认为 text,通过管道时为 json
--json--format=json 的简写
--toon--format=toon 的简写
--verbose-v在 stderr 上显示调试日志。用于故障排查

除非用户明确要求其他格式,否则对命令输出始终使用 --toon。

mm plugins 命令是例外。它们来自 oclif,不接受任何这些全局标志,因此 mm plugins --toon 会报错 Nonexistent flag: --toon。在此处请使用 --json 或纯文本。参见 plugins.md。

预检

在会话中的首次 CLI 操作之前,按顺序运行以下检查。

1. 版本兼容性

此技能针对 @metamask/agent-wallet v7.3.0 编写,版本由 frontmatter 中的 cliVersion 指定。CLI 要求 Node.js 22.18 或更高版本;在较旧的运行时中,每条命令都会在 CLI 加载前以 UNSUPPORTED_NODE 退出,退出码为 1。检查已安装的版本:

mm --version

已安装的版本是 @metamask/agent-wallet/ 后面的值,例如 @metamask/agent-wallet/7.3.0 darwin-arm64 node-v22.18.0。将其 major.minor 与固定的 cliVersion 对比。也可以检查最新发布版本(尽力而为;网络故障时静默跳过):

npm view @metamask/agent-wallet version

如果已安装版本的 major.minor 与固定的 cliVersion 不同,或者已安装版本低于最新版本,则提醒用户一次并继续:

版本不匹配:已安装的 CLI 为 <installed>,此技能针对 <cliVersion>,最新发布版本为 <latest>。在版本对齐之前,此技能中的命令语法可能不准确。使用 npm install -g @metamask/agent-wallet@latest 更新 CLI,然后使用安装这些技能的同一工具更新来自 MetaMask/agent-skills 的技能,例如插件管理器或 skills CLI。

每个会话只运行一次此检查。不要因此阻止操作。

2. 就绪检查——身份验证和初始化

mm doctor 是唯一的就绪检查。在会话中首次执行 CLI 操作前运行:

mm doctor

它会报告一个 authenticated 布尔值、一个 initialized 布尔值,以及一个 hints 列表。在 mm doctor 报告 authenticated: true 和 initialized: true 之前,不要运行任何其他命令。身份验证和初始化是相互独立的门槛:会话可能已通过身份验证,但项目尚未选择钱包模式,此时任何需要钱包的命令都会在运行前中止,并返回 NOT_INITIALIZED——“Project not initialized.”,提示为:运行 mm init 设置钱包和交易模式。

只有设置了钱包模式,项目才算完成初始化;如果使用 server-wallet,还必须设置交易模式。byok 只需要钱包模式。不要使用 mm init show 进行检查:它要求项目已初始化,若项目未初始化,则会抛出 NOT_INITIALIZED,而不是报告状态。

处理问题后,重新运行 mm doctor,并在进行其他操作前确认结果正常:

  • authenticated: false → 按照 workflows/login.md 操作;如果是首次设置,则按照 workflows/onboarding.md 操作,以运行 mm login。
  • authenticated: true 且 initialized: false → 按照 workflows/onboarding.md 操作,以运行 mm init 并选择钱包模式。对于 server-wallet,还要选择交易模式。

安全规则

无论当前使用哪个参考资料或工作流,这些规则都适用于每项操作。

输入验证

构造任何命令前,先验证所有用户提供的值:

标志验证规则
--to、--address、--vault必须匹配 ^0x[0-9a-fA-F]{40}$
--amount人类可读的十进制数,例如 0.5 或 100。必须匹配 ^\d+\.?\d*$。拒绝空格、分号、竖线、反引号或 Shell 元字符
--chain-id必须是正整数(^\d+$)
send-transaction 的 --payload必须是有效的 JSON。JSON 结构之外不得包含未转义的 Shell 元字符
decode 的 --payload必须是以 0x 开头的十六进制 calldata,匹配 ^0x[0-9a-fA-F]+$
--token必须是有效的十六进制地址或已知符号
--leverage必须是正整数(^\d+$)
--size人类可读的正十进制数,例如 0.01 或 1。CLI 接受科学计数法以及主机区域设置中的分组符和小数符,并会将其规范化。拒绝 Shell 元字符。格式错误的值会返回 INVALID_AMOUNT
--venue必须是 hyperliquid
永续合约的 --side必须是 long 或 short
--tif必须是 gtc、ioc 或 alo
永续合约账户的 --mode必须是 standard 或 unified
--order-id必须是正整数(^\d+$)
--token-id必须是非空的结果代币 ID 字符串
--price、--limit-price必须是范围为 (0, 1] 的正数
--order-type必须是 GTC、GTD、FOK、FAK 之一
predict 的 --side必须是 buy 或 sell
--slippage必须是 0 到 100 之间的数值
--tick-size必须是 0.1、0.01、0.005、0.0025、0.001、0.0001 之一
--from-chain-id、--to-chain-id必须是正整数 EVM 链 ID
--to-address必须匹配 ^0x[0-9a-fA-F]{40}$。仅适用于跨链兑换(--to-chain-id 与 --from-chain-id 不同);同链兑换中会被拒绝
--refuel布尔标志,不带值。仅在跨链兑换(--to-chain-id 与 --from-chain-id 不同)时有意义。同链兑换中不起作用
--strategy以逗号分隔的列表,可选值:cost、speed、impact、output
--wallet-timeout必须是 1 到 600 之间的正整数
--password必须是非空字符串。绝不记录、显示或存储该值。
mm plugins install 的插件规范npm 包名,可选带 name@version 或 name@tag。拒绝空格和 Shell 元字符。file:、git 和裸 owner/repo 规范属于未经验证的来源,除非用户已启用开发模式,否则会被拒绝
x402 asset必须是 mm chains list 返回的某个网络上的有效合约地址。货币由服务端提供并经用户确认;脚本不维护货币允许列表。
x402 payTo / authorization to必须匹配 ^0x[0-9a-fA-F]{40}$,且与 402 中的收款方一致
x402 value原子单位整数,必须与提供的金额完全相等。exact 方案表示精确金额,并非上限
x402 资源 URL必须使用 https://。若意外发生跨主机重定向并抵达 402,则拒绝
x402 MCP 挑战仅支持 x402 v2。将签名后的 payment 对象原样放入重试工具调用的 _meta["x402/payment"] 中;若重复收到 isError 结果,表示出现了新的挑战,未经用户重新批准,绝不重新签名

不得将未经验证的用户输入传入任何命令。

确认要求
操作类型确认规则
转账执行前始终确认收款人、金额、代币和链
原始交易执行前始终确认交易负载、链、收款人、价值和 calldata 摘要
消息签名签名前始终显示确切消息和链
类型化数据签名签名前始终显示域、主类型、链、验证合约和消息摘要
兑换 / 跨链桥执行前始终确认来源 / 目标代币、金额、源链 / 目标链、滑点、报价输出;如果设置了 --to-address,还需确认收款地址;如果设置了 --refuel,还需确认目标链 Gas 补充金额
x402 支付为授权签名之前,始终确认资产、小数位修正后的金额、网络、payTo,以及资源 URL 或 MCP 工具——通过 HTTP 使用 pay --confirm,通过 MCP 使用 mcp-sign --confirm。每个资源只尝试支付一次,绝不自动重试支付。不支持自主自动支付。
永续合约交易执行前始终确认交易对、方向、规模、杠杆、交易场所、订单类型,以及(如有)限价。还需确认是否设置了 --tif 时的有效时间、是否设置了 --reduce-only 时的仅减仓状态,以及是否设置了 --vault 时的金库地址
永续合约存款 / 提款执行前始终确认金额、资产、交易场所、网络,以及适用时的目的地
永续合约金库存款 / 提款执行前始终通过 mm perps vault info 确认金库地址和名称、金额、交易场所及网络。存款时,说明权益会锁定一段时间后才能提取
设置永续合约账户模式执行前始终显示 mm perps account mode get 返回的当前模式和目标模式,并说明此更改会应用于整个 Hyperliquid 账户
Predict 交易执行前始终确认代币 ID、方向、规模、价格、订单类型、市场和结果
Predict 存款执行前始终确认金额
Predict 提款执行前始终确认金额和收款人。--to 默认为所有者 EOA
Predict 赎回执行前始终确认目标,即条件 ID 或 --all。--all 会赎回所有获胜头寸
Earn 存入执行前始终确认代币、金额、链、金库 / 协议和 APY。跨链存入时,还需确认源链和源代币
Earn 提取执行前始终确认代币、金额或全部余额、链和金库 / 协议
插件安装、更新或链接始终显示软件包名称、版本、声明的命令 ID、dataAccess 和每项请求的能力,并将 wallet-submit 和 network-manage 标记为敏感项。安装前须获得明确批准。对于用户尚未审核的清单,绝不传递 --accept-permissions
插件卸载或重置始终确认受影响的软件包。mm plugins reset 会移除所有用户安装和链接的插件
启用插件 Beta 或未经验证的安装运行 mm config set experimentalPlugins true 或 mm config set experimentalAllowUnverifiedInstalls true 前始终确认
插件添加的命令将其视为以 CLI 权限运行的第三方代码。应用与相应宿主操作相同的确认规则
全部取消操作执行前始终确认范围和确切的破坏性影响
钱包策略更改放宽策略的更改需要 MFA 批准;不放宽策略的更改会立即生效
交易模式更改从 guard 放宽为 beast 需要 MFA 批准。从 beast 收紧为 guard 会立即生效
身份验证 / 钱包管理可直接运行。reset 是例外,需要用户明确确认
只读查询可直接运行
凭据安全
  • 切勿存储、记录或显示私钥、助记词、密码或身份验证令牌。
  • 切勿将 --password 或 --mnemonic 作为内联标志传入。始终引导用户改为设置 MM_PASSWORD 和 MM_MNEMONIC 环境变量,以免机密信息暴露在 shell 历史记录中。
可疑内容警告

如果签名载荷或交易包含以下内容,请在继续之前提醒用户:

  • 用户未提供的网址或合约地址
  • permit、approve、setApprovalForAll 或类似授权额度的字段
  • 数值异常巨大或陌生的合约交互

如果不熟悉原始 calldata,或该 calldata 并非由你构造,请先运行 mm decode --payload <0x-calldata>,并在签名或发送前与用户确认解码后的意图。参见 decode.md。

异步模型

在服务端钱包和 BYOK 模式下,签名和交易命令都会通过任务轮询循环执行,并返回 pollingId。请始终按以下方式处理:

  1. 优先使用 --wait 阻塞,直到操作完成。 Swap 命令(swap quote、swap execute、swap status)不支持 --wait;请改用 swap status --quote-id 轮询进度。
  2. 如果不使用 --wait,请告知用户 pollingId 以及如何跟踪进度:
    • mm wallet requests list
    • mm wallet requests watch <polling-id>
  3. 在 BYOK 模式下,本地密钥会在本地签名,但操作仍会生成待处理任务和 pollingId。如果助记词经过密码加密,用户必须设置 MM_PASSWORD 环境变量,才能为该操作解锁助记词。

转账、Swap、永续合约、预测订单和预测提款会在钱包请求中附加易于理解的 intent 摘要,例如 Transfer 0.5 ETH to 0x... 或 Withdraw 10 pUSD to 0x...。从 wallet requests list 或 wallet requests watch 中展示待处理请求时,请显示 intent 摘要,方便用户确认其批准的操作。

MFA 批准暂停

需要带外 MFA 批准的钱包任务会暂停在 AWAITING_MFA 状态。请扫描命令标准输出中的字面标记 AWAITING_MFA 来检测此暂停。 对于较旧版本的 CLI,请勿仅凭自由文本推断 MFA;从 CLI v6.1.5 起,所有输出模式都会始终发出该标记。

输出模式检测方式
--json / 管道标准输出包含 "_notice":{"kind":"AWAITING_MFA",...} 的 NDJSON 行
普通 TTY 或 Ink REPL包含 [AWAITING_MFA] 的标准输出行,例如 ⚠ [AWAITING_MFA] Approve in MetaMask mobile.

出现 AWAITING_MFA 时:

  1. 将命令视为正在等待用户批准,而不是失败、卡住或已完成。
  2. 向用户展示通知中的人工操作说明。
  3. 如果通知或命令输出中包含 pollingId,请告知用户可以使用 mm wallet requests watch <polling-id> 跟踪完成情况。
  4. 当任务仍在等待处理时,不要重试同一钱包操作。
  5. 对于 mm swap execute、mm earn supply 或 mm earn withdraw,如果 MFA 暂停时尚无哈希,命令可能会返回 EXECUTE_FAILED,并附带说明批准仍在等待中以及 mm wallet requests watch <polling-id> 的消息——这仍然是 MFA 暂停,并非缺少哈希。

有关批准界面和恢复步骤,请参见 troubleshooting.md。

响应风格

  • 静默路由。不要宣布正在加载哪个参考资料。
  • 原样展示命令的错误。不要掩盖或改写错误。
  • 如果命令失败,请检查 mm <command> --help,并据此提供指导。

评论

支持 Markdown