catalog/repos/abstract-foundation--agw-cli.md

15 KiB
Raw Blame History

AI智能钱包命令行工具

CLI工具 Web3 AI代理 钱包 区块链 MCP

AGW CLI Banner

AGW CLI

AGW 是专为 Abstract Global Wallet 打造的以代理为核心的命令行工具。它使 Claude 等 AI 代理能够自主与你的 Abstract Global Wallet 交互——查看钱包余额、发送交易、与部署在 Abstract 上的应用进行交互。

快速开始

将以下提示词复制粘贴给你的 AI 代理Claude Code、Codex 等):

按照以下说明安装并配置 AGW CLI请使用 curl 获取该文件,而非 WebFetchhttps://raw.githubusercontent.com/Abstract-Foundation/agw-cli/main/docs/guide/installation.md

或者直接阅读安装指南

功能特性

  • 代理优先设计 — 每条命令均采用结构化 JSON 输入/输出,专为 LLM 工具调用而构建
  • 内置 MCP 服务器 — 可接入 Claude Code、Gemini 或任何兼容 MCP 的宿主环境
  • 预览优先写入 — 所有改变状态的命令均需在 --dry-run 之后显式添加 --execute
  • 会话密钥认证 — 通过配套应用审批实现委托签名,私钥不暴露给代理
  • Schema 自省 — 使用 agw-cli schema <command> 获取机器可读的输入/输出规范
  • 分页与字段裁剪 — 使用 fields 缩小读取范围,使用 --page-all 分页
  • 代理技能 — 可安装的技能包,教会 AI 代理安全使用 CLI 的模式

前置条件

  • Node.js 18+
  • npm 10+

安装

npm install -g @abstract-foundation/agw-cli

认证

配套应用负责处理认证。运行初始化流程,创建与你钱包关联的会话密钥:

agw-cli auth init --json '{"chainId":2741}' --execute

这将在浏览器中打开页面,让你连接现有 AGW 或创建新的 AGW然后批准该机器的代理签名者。

验证

agw-cli session status --json '{"fields":["status","readiness","accountAddress"]}'

工作原理

AGW CLI 使用由 Privy 提供支持的委托签名者架构,使你的 AI 代理能够代表你的钱包执行操作,而无需持有钱包私钥。

整体架构

你的 Abstract Global Wallet 是一个智能合约钱包。其签名密钥由 Privy 在可信执行环境TEE中管理——它从不以完整形式存在于飞地之外,也从不暴露给 CLI 或代理。

取而代之的是AGW CLI 在本地生成一个设备授权密钥,并通过密钥仲裁将其注册为钱包上的已认证签名者。该签名者受限于你在入门流程中批准的 Privy 策略,该策略精确定义了签名者被允许使用的 RPC 方法和交易参数。

认证流程

┌──────────┐                                     ┌──────────────┐
│  AGW CLI  │  1. 生成 P-256 密钥对               │  本地磁盘    │
│ (设备)    │────────────────────────────────────▶│  ~/.agw/     │
│           │     私钥 → privy-auth.key            └──────────────┘
│           │
│           │  2. 携带公钥打开浏览器
│           │────────────────────────────────────▶┌──────────────┐
│           │                                     │  配套应用    │
│           │  3. 用户连接 AGW审批签名者          │  cli.abs.xyz │
│           │     并选择策略预设                   └──────┬───────┘
│           │                                            │
│           │  4. 签名回调令牌EdDSA                  │
│           │◀───────────────────────────────────────────┘
│           │
│           │  5. 验证签名、指纹、
│           │     链 ID → 保存 session.json
└──────────┘
  1. 密钥生成 — CLI 在本地生成 P-256 ECDSA 密钥对。私钥以 0o600 权限写入 ~/.agw/privy-auth.key。公钥Base64 编码的 DER 格式)传递给配套应用。
  2. 浏览器审批 — CLI 在浏览器中打开配套应用。你连接 AGW或创建新的然后选择限制代理操作范围的策略预设。
  3. 签名者注册 — 配套应用在后台以你设备的 P-256 公钥为授权密钥创建 Privy 密钥仲裁,并将该密钥仲裁作为签名者添加到你的钱包,并绑定一个策略来定义允许的 RPC 方法、价值限制和目标合约限制。
  4. 回调验证 — 配套应用发回一个经过加密签名的令牌EdDSA。CLI 验证签名,检查签名者指纹是否与本地密钥匹配,并确认链 ID。
  5. 会话实例化 — 经验证的会话数据(账户地址、签名者绑定、策略 ID、能力摘要保存到 ~/.agw/session.json

运行时签名原理

当代理发送交易或签署消息时:

  1. CLI 读取本地 P-256 私钥,并对 RPC 请求的规范化表示方法、URL、请求体、Privy 头部)计算授权签名
  2. 签名后的请求发送至 Privy 钱包 RPC API,签名放在 privy-authorization-signature 头部。
  3. Privy 根据密钥仲裁中注册的公钥验证授权签名,然后依据签名者的策略规则评估请求。
  4. 若两项检查均通过Privy 在 TEE 内重建钱包密钥,执行操作并返回结果。密钥在使用后立即销毁。

你的钱包私钥永远不会离开 Privy 的 TEE。 设备密钥仅证明本机器有权在批准策略范围内请求特定操作。

策略预设

入门时,你选择一个策略预设,该预设映射到 Privy 策略,用于管理签名者可调用的 RPC 方法和工具:

预设 典型能力
payments 代币转账、余额查询
trading 兑换、转账、合约写入
gaming 游戏内交易
contract_write 任意合约交互
deploy 合约部署
signing 消息和交易签名
full_app_control 全部能力
custom 细粒度工具选择

Privy 通过策略规则在服务端强制执行这些限制(默认拒绝,DENY 优先于 ALLOW。CLI 也在本地强制执行——两者必须同时同意才能执行任何操作。

撤销

运行 agw-cli auth revoke 可移除签名者。这将打开配套应用,让你确认移除操作。签名者从 Privy 的密钥仲裁中注销,本地会话和密钥文件也会被清理。你可以随时重新运行 auth init 来创建新会话。

命令列表

分组 命令 描述
wallet addressbalancestokens list 查询钱包身份、余额和代币列表
tx previewsendcallstransfer-tokensign-messagesign-transaction 预览和执行交易
contract writedeploy 与智能合约交互或部署合约
auth initrevoke 管理会话密钥认证
session statusdoctor 检查和排查会话状态
app listshow 发现部署在 Abstract 上的应用
portal streams listuser-profile get 浏览 Portal 内容和用户资料
schema listget 自省命令 Schema
mcp serve 启动内置 MCP 服务器
mcp-config 打印可直接粘贴的 MCP 配置片段

运行 agw-cli schema <command> 可获取任意命令的详细输入/输出 Schema。

使用示例

查询钱包余额:

agw-cli wallet balances --json '{"fields":["native","tokens"]}'

发送前预览交易:

agw-cli tx send --json '{"to":"0x...","data":"0x1234","value":"0"}' --dry-run

审查预览后执行:

agw-cli tx send --json '{"to":"0x...","data":"0x1234","value":"0"}' --execute

流式分页获取代币列表:

agw-cli wallet tokens list \
  --json '{"pageSize":25,"fields":["items.symbol","items.value","nextCursor"]}' \
  --page-all --output ndjson

发现 Abstract 上的应用:

agw-cli app list --json '{"pageSize":10,"fields":["items.id","items.name"]}'

MCP 服务器

AGW 内置了一个 MCP 服务器,由与 CLI 相同的命令注册表生成。使用以下命令启动:

agw-cli mcp serve --sanitize strict

或生成配置片段,粘贴到你的代理宿主中:

agw-cli mcp-config        # 本地二进制
agw-cli mcp-config --npx  # 基于 npx无需全局安装

代理技能

本仓库附带代理技能包,教会 AI 代理如何安全使用 CLI。使用以下命令安装

npx skills add https://github.com/Abstract-Foundation/agw-cli/tree/main/packages/agw-cli/skills -y

可用技能:

技能 覆盖内容
authenticating-with-agw 会话引导、检查与故障排查
reading-agw-wallet 钱包身份、余额和代币列表
executing-agw-transactions 签名和发送的预览优先执行规则
discovering-abstract-portal 应用和 Portal 流发现
trading-on-aborean Aborean Finance 协议工作流
trading-on-uniswap Abstract 上的 Uniswap V2+V3 兑换和流动性
bridging-to-abstract 原生跨链桥和第三方跨链桥选项
building-on-abstract 开发者入门、部署、Paymaster、会话密钥
managing-agent-identity ERC-8004 代理注册与声誉
upvoting-on-abstract Abstract Portal 链上投票
mining-with-bigcoin Bigcoin 虚拟挖矿模拟器

代理宿主扩展

预构建配置支持:

  • Claude Code — MCP 配置脚手架位于 packages/agw-cli/extensions/claude-code/
  • Gemini — 扩展指南位于 packages/agw-cli/extensions/gemini/

两者均假设 agw-cli 已安装且在 PATH 中。

配置

通过环境变量进行运行时配置:

变量 描述
AGW_HOME 覆盖 AGW 主目录(默认:~/.agw/
AGW_CHAIN_ID 默认链 ID
AGW_RPC_URL RPC URL 覆盖
AGW_APP_URL 配套应用 URL 覆盖
AGW_OUTPUT 默认输出模式(jsonndjson
AGW_SANITIZE_PROFILE 净化配置(offstrict

也可使用 CLI 标志:--home--chain-id--rpc-url--app-url--output--sanitize

安全性

  • 会话密钥以严格的文件权限(0o600)存储在本地
  • 所有写操作默认拒绝——没有匹配策略,任何操作均不会执行
  • 改变状态的命令需在预览后显式添加 --execute
  • 配套应用回调载荷在会话实例化前经过签名和验证
  • 日志中不包含任何密钥或会话材料

详见 SECURITY.mdTHREAT_MODEL.md

常见问题

我的 AI 代理能访问钱包私钥吗?

不能。你的钱包私钥由 Privy 在可信执行环境TEE中管理。它从不以完整形式存储仅在签名时临时在飞地内重建。CLI 持有的是单独的设备授权密钥P-256该密钥向 Privy 证明身份——它无法提取或推导出你的钱包密钥。

如果我的机器被入侵了怎么办?

攻击者获取到你的设备授权密钥(~/.agw/privy-auth.key)后,只能执行你在入门时批准的 Privy 策略所允许的操作。他们无法提取钱包私钥、更改策略或添加新签名者。你可以在任何设备上立即运行 agw-cli auth revoke 或通过配套应用直接撤销被入侵的签名者。

代理会花费超过我授权的金额吗?

不会。绑定到你签名者的 Privy 策略定义了在服务端强制执行的硬性限制——允许哪些 RPC 方法、每笔交易的价值上限、手续费限制以及可选的合约调用限制。CLI 也在本地强制执行工具限制两层必须同时同意。如果代理尝试策略之外的操作Privy 将拒绝该请求。

配套应用是什么?

配套应用(cli.abs.xyz)是一个托管的 Web 界面,你可以在此审批或撤销代理签名者。它处理 Privy 签名者注册流程,并向 CLI 发回经过加密签名的回调令牌。你只在 auth initauth revoke 时需要它——正常的 CLI 使用无需打开浏览器。

可以不用 AI 代理直接使用 AGW CLI 吗?

可以。CLI 是一个标准命令行工具,接受 JSON 输入并产生 JSON 输出。你可以直接在终端中用它进行钱包查询、交易预览和应用发现。无论是你手动输入命令还是代理在操作,--dry-run / --execute 标志的工作方式完全相同。

MCP 服务器有什么用?

模型上下文协议服务器将 AGW 命令作为工具暴露给兼容 MCP 的 AI 宿主Claude Code、Gemini 等)直接调用。它由与 CLI 相同的命令注册表生成,因此工具接口完全一致。使用 agw-cli mcp serve 启动,或使用 agw-cli mcp-config 为你的宿主生成配置片段。

如何更改代理被允许执行的操作?

重新运行 agw-cli auth init,在配套应用中选择不同的策略预设。这将创建一个带有更新策略的新签名者。之前的签名者在你显式撤销之前仍保持注册状态。

会话数据存储在哪里?

会话数据默认存储在 ~/.agw/(可通过 AGW_HOME--home 覆盖):

  • session.json — 账户地址、签名者绑定、策略元数据、能力摘要
  • privy-auth.key — 设备授权私钥

两个文件均以 0o600 权限写入(仅所有者可读写)。目录本身权限为 0o700

AGW CLI 支持测试网吗?

支持。传入 --chain-id 或设置 AGW_CHAIN_ID 以指向不同网络。使用 --rpc-urlAGW_RPC_URL 指向测试网 RPC 端点。

项目状态

持续开发中 — v1.0 之前可能有破坏性变更。

贡献

欢迎在 github.com/Abstract-Foundation/agw-cli 提交 Issue 和 Pull Request。

许可证

MIT — Abstract Foundation