Aomi 交易

aomi-transact
分类编程
作者Agentic Awesome Skills 社区
许可MIT
评分4.70/5
使用5.5K

Aomi Transact

> 仅限授权使用。 此技能代表用户签署并广播链上交易。用户必须明确请求每个签名步骤。除非用户明确请求且 aomi tx list 中有相应的 tx-N 在队列中,否则该技能不会运行 aomi tx sign
>
> 签名门控。 不要将 aomi tx sign 包含在复制或可运行的多命令块中。在列出或模拟队列交易后请停止,总结交易 ID、链、金额、接收者、calldata 用途及模拟结果,然后请求用户给出明确的签名指令(例如 sign tx-1)。仅在获得该独立批准后运行确切的签名命令。

概述

aomi-transact 是一套通过自然语言提示词驱动 Aomi CLI (@aomi-labs/client) 的流程。用户输入类似 *"在 Uniswap 上将 1 ETH 兑换为 USDC"*;智能体选择正确的协议和合约,将“授权+兑换”作为批处理暂存,在分叉链上进行模拟,并返回一个排队的钱包请求供用户签名。钱包只会看到已经通过模拟的 calldata。

该 CLI 优先采用账户抽象 (Account Abstraction):默认通过零配置的 Alchemy 代理进行签名(无需提供商凭据),在以太坊主网使用 EIP-7702,在 L2 上使用 ERC-4337。每次 aomi <subcommand> 调用都会启动、运行并退出 —— 没有长期运行的进程。

完整的技能集(包括参考文档 account-abstraction.md, apps.md, examples.md, session.md, troubleshooting.md, drain-vectors.md)、模板 (aomi-workflow.sh) 和针对不同主机的元数据 (agents/openai.yaml) 位于上游仓库 aomi-labs/skills。本条目仅为规范的 SKILL.md —— 请克隆上游仓库以获取完整包。

何时使用此技能

  • 用户希望在终端与 Aomi 智能体对话。
  • 用户需要查询余额、价格、路由、报价或交易状态。
  • 用户希望构建、模拟、确认、签名或广播钱包请求。
  • 用户希望在签名前模拟一批待处理交易。
  • 用户希望检查或切换应用、模型、链或会话。
  • 用户希望检查或更改账户抽象设置 (EIP-7702 / ERC-4337)。
  • 用户希望签名 EIP-712 类型数据负载(链下协议、意图填充)。

示例

只读 —— 价格查询

bash
aomi --prompt "what is the price of ETH?" --new-session

返回报价且不排队钱包请求。使用 aomi tx list 确认没有待处理项。

单笔交易流程 —— Lido 质押

bash
aomi chat "Stake 0.01 ETH with Lido to get stETH" \
  --public-key 0xUserAddress --chain 1 --new-session
aomi tx list

在 Lido stETH 0xae7ab96520DE3A18 上执行 submit(address(0))
E5e111B5EaAb095312D7fE84value = 0.01 ETH。无需 approve,单笔交易。在此停止,显示排队的交易详情,并在签署前等待用户的明确指令。

多步批处理 — Uniswap V3 兑换

bash
aomi chat "swap 1 USDC for WETH on Uniswap V3, send to my wallet" \
  --public-key 0xUserAddress --chain 1 --new-session
aomi tx list                        # tx-1 = approve, tx-2 = swap
aomi tx simulate tx-1 tx-2          # 多步操作必须执行

模拟器会在分叉链上按顺序运行每笔交易,因此兑换步骤可以看到 approve 的状态变更。不要独立签署步骤 2,否则会导致交易回滚(revert)。模拟结束后停止,总结批处理内容,并在签署前等待用户明确指令并指明两个交易 ID。

跨链 — CCTP Ethereum $\rightarrow$ Base

bash
aomi chat "Bridge 50 USDC from Ethereum to Base via CCTP. Recipient is my wallet." \
  --public-key 0xUserAddress --chain 1 --new-session
aomi tx list
aomi tx simulate tx-1 tx-2

模拟结束后停止,并等待用户明确批准签署指定的交易 ID。签署后,源链销毁(burn)将在 1-2 个区块内确认;目标链铸造(mint)需要 Circle 的链下证明(约 13-19 分钟)。

局限性

  • 需要 @aomi-labs/client v0.1.30 或更高版本。 旧版本缺少 --aa--aa-provider--aa-mode 以及模拟门控。请通过 npm install -g @aomi-labs/client 安装,或通过 npx @aomi-labs/[email protected] ... 按需运行。
  • 需要活跃的后端连接。 该技能驱动的 CLI 与 api.aomi.dev 通信。如果没有网络访问,仅本地读取命令(aomi tx listaomi session log)可用。
  • L2 上的 AA 赞助(Sponsorship)无法保证。 在 v0.1.30 中,零配置代理路径在 Base/Arbitrum/Optimism 上不能可靠地提供赞助。如果 EOA 在目标链上没有原生 Gas,aomi tx sign 将返回 viem 的 insufficient funds for transfer。请为 EOA 充值少量原生 Gas,或配置一个带有赞助策略的真实 BYOK Alchemy/Pimlico 提供商。不要尝试使用 --eoa 重试,因为该路径同样需要 Gas。
  • 单次会话的密钥注入。 需要提供商令牌的应用(如 binancepolymarketdune 等)必须由用户在自己的 shell 中配置凭据,或通过 aomi secret add NAME=<value> 配置。该技能绝不会主动设置凭据。
  • 资金抽干(Drain)向量设有保护拦截。recipient/onBehalfOf/mintRecipient $\neq$ msg.sender 时,代理将拒绝 calldata。这是一个安全特性而非 Bug —— 请将拦截情况告知用户,而不是重新构建提示词。
  • 网络/RPC 故障。 公共 RPC 可能会触发频率限制(429)或认证失败(401)。在生产环境签署时,用户必须通过 --rpc-url 提供可靠且链匹配的 RPC。
  • 实时交易的滑点和截止时间(Deadlines)。 来自带有截止时间路由(如 Across, Khalani fillers)的报价在用户审核期间可能会过期;代理会通过重新构建最新的截止时间来自行修复,但用户应重新检查 aomi tx list 以获取最新的通过批次。

最佳实践

  • 新任务的第一条命令请默认使用 --new-session 在任务中途重复使用它会启动新的对话,导致代理丢失刚刚给出的报价。
  • 在执行 aomi tx sign 之前,务必先执行 aomi tx list 不要假设聊天响应已经排队了交易。
  • 在签署多步批处理之前,务必执行 aomi tx simulate tx-1 tx-2 ... 单笔交易流程中模拟是可选的,但模拟永远没有坏处。
避免在可运行示例中包含签名命令。 仅在用户明确指定待处理的 tx-N ID 并给出单独批准后,才展示或运行 aomi tx sign
  • 仅对 Batch [...] passed 的交易进行签名。 跳过之前失败尝试中遗留的孤立交易(如 failed at step N: 0x...)。
  • --rpc-url 必须与待处理交易的链匹配,而非会话链 (--chain) —— 两者是独立的控制参数。
  • 严禁回显凭据值。 该技能仅通过句柄名称或派生地址来确认凭据设置。

授权免责声明

本技能可以签名并广播具有实际价值的链上交易。请仅在您拥有账户且信任的网络上使用。本技能不托管资金;用户通过 --public-key 和底层钱包完全控制签名密钥。在运行 aomi tx sign 之前,请仔细检查每个待处理的 tx-N

来源

附加资源

有关完整技能的详细信息,包括各流程示例(CCTP 桥、Aave 供应、Lido 质押、Uniswap 兑换)、AA 模式参考、资金流失向量表、故障排除指南以及 bash 工作流模板,请参阅上游仓库: