15 KiB
AI智能钱包命令行工具
CLI工具 Web3 AI代理 钱包 区块链 MCP
AGW CLI
AGW 是专为 Abstract Global Wallet 打造的以代理为核心的命令行工具。它使 Claude 等 AI 代理能够自主与你的 Abstract Global Wallet 交互——查看钱包余额、发送交易、与部署在 Abstract 上的应用进行交互。
快速开始
将以下提示词复制粘贴给你的 AI 代理(Claude Code、Codex 等):
按照以下说明安装并配置 AGW CLI(请使用 curl 获取该文件,而非 WebFetch):https://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
└──────────┘
- 密钥生成 — CLI 在本地生成 P-256 ECDSA 密钥对。私钥以
0o600权限写入~/.agw/privy-auth.key。公钥(Base64 编码的 DER 格式)传递给配套应用。 - 浏览器审批 — CLI 在浏览器中打开配套应用。你连接 AGW(或创建新的),然后选择限制代理操作范围的策略预设。
- 签名者注册 — 配套应用在后台以你设备的 P-256 公钥为授权密钥创建 Privy 密钥仲裁,并将该密钥仲裁作为签名者添加到你的钱包,并绑定一个策略来定义允许的 RPC 方法、价值限制和目标合约限制。
- 回调验证 — 配套应用发回一个经过加密签名的令牌(EdDSA)。CLI 验证签名,检查签名者指纹是否与本地密钥匹配,并确认链 ID。
- 会话实例化 — 经验证的会话数据(账户地址、签名者绑定、策略 ID、能力摘要)保存到
~/.agw/session.json。
运行时签名原理
当代理发送交易或签署消息时:
- CLI 读取本地 P-256 私钥,并对 RPC 请求的规范化表示(方法、URL、请求体、Privy 头部)计算授权签名。
- 签名后的请求发送至 Privy 钱包 RPC API,签名放在
privy-authorization-signature头部。 - Privy 根据密钥仲裁中注册的公钥验证授权签名,然后依据签名者的策略规则评估请求。
- 若两项检查均通过,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 | address、balances、tokens list |
查询钱包身份、余额和代币列表 |
| tx | preview、send、calls、transfer-token、sign-message、sign-transaction |
预览和执行交易 |
| contract | write、deploy |
与智能合约交互或部署合约 |
| auth | init、revoke |
管理会话密钥认证 |
| session | status、doctor |
检查和排查会话状态 |
| app | list、show |
发现部署在 Abstract 上的应用 |
| portal | streams list、user-profile get |
浏览 Portal 内容和用户资料 |
| schema | list、get |
自省命令 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 |
默认输出模式(json 或 ndjson) |
AGW_SANITIZE_PROFILE |
净化配置(off 或 strict) |
也可使用 CLI 标志:--home、--chain-id、--rpc-url、--app-url、--output、--sanitize。
安全性
- 会话密钥以严格的文件权限(
0o600)存储在本地 - 所有写操作默认拒绝——没有匹配策略,任何操作均不会执行
- 改变状态的命令需在预览后显式添加
--execute - 配套应用回调载荷在会话实例化前经过签名和验证
- 日志中不包含任何密钥或会话材料
详见 SECURITY.md 和 THREAT_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 init 和 auth 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-url 或 AGW_RPC_URL 指向测试网 RPC 端点。
项目状态
持续开发中 — v1.0 之前可能有破坏性变更。
贡献
欢迎在 github.com/Abstract-Foundation/agw-cli 提交 Issue 和 Pull Request。
许可证
MIT — Abstract Foundation
