用于EVM链交易和原始签名的智能体钱包。当用户需要创建钱包、转账代币、在DEX上交易或进行交互操作时使用此技能。
Vincent - 代理的钱包是一项面向实际任务的技能,主要用于使用这一技能来安全创建代理可以用于转账、互换和任何EVM链交易的钱包, 而不向代理披露私钥。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。
执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
使用本技能可安全地为智能体创建一个钱包,使其能够执行转账、兑换及任意 EVM 链上的交易,且**永不暴露私钥给智能体**。创建钱包、设置支出策略后,智能体即可在您定义的边界内完成代币转账、兑换以及与智能合约的交互。
智能体永远无法看到私钥。 所有交易均通过 ZeroDev 智能账户在服务端执行。智能体仅获得一个作用域受限的 API 密钥,该密钥只能执行钱包所有者所设定策略允许的操作。私钥始终保留在 Vincent 服务器中,不会离开。
所有命令均依赖 @vincentai/cli 包。API 密钥由 CLI 自动存储与解析——您无需手动处理原始密钥或文件路径。
本技能面向以服务端控制实现人类监督的自主智能体运行而设计。理解该模型至关重要:
无需配置环境变量。 本技能采用“智能体优先”的接入方式:智能体在运行时调用 Vincent API 创建自己的钱包,API 将返回一个作用域受限的 API 密钥。不存在需预先配置的已有凭证。CLI 在创建钱包时自动保存返回的 API 密钥。密钥持久化所用的配置路径(${OPENCLAW_STATE_DIR:-$HOME/.openclaw}/credentials/agentwallet/ 或 ./agentwallet/)已在本技能元数据中声明。
智能体持有的 API 密钥并非私钥。 它是一个作用域受限的 Bearer Token,仅能执行钱包所有者策略所允许的交易。所有策略均由 Vincent 服务端强制执行——无论智能体发送何种请求,均无法绕过策略。若某笔交易违反策略,服务端将直接拒绝;若交易需人工审批,则服务端暂存该交易,并通过 Telegram 向钱包所有者发送通知,以完成带外人工审批。
模型调用能力被有意启用。 本技能的核心目标是赋予 AI 智能体自主的钱包操作能力。智能体被期望在人类操作员所定义的边界内,自主发起钱包操作(如转账、兑换、合约调用)。人类通过策略(支出限额、地址白名单、代币白名单、函数白名单、审批阈值等)控制智能体的行为权限,而非对单次调用进行闸门式管控。所存储的密钥本身即已限定作用域并受策略约束——即使其他进程读取到该密钥,也仅能执行钱包所有者策略所允许的操作,且所有者可随时立即撤销该密钥。
所有 API 请求均仅通过 HTTPS/TLS 发送至 heyvincent.ai。 不访问任何其他端点、服务或外部主机。智能体除钱包操作所必需的数据外,不读取、不收集、不传输任何额外信息。
Vincent 开源且经过审计。 负责策略执行、私钥管理及交易执行的服务端代码,在 github.com/HeyVincent-ai/Vincent 公开可审计。Vincent 后端持续接受涵盖密钥管理、策略执行、交易签名及 API 认证等维度的安全审计。您可以自行验证策略如何执行、私钥如何存储、作用域 API 密钥如何校验、以及密钥撤销机制如何运作——全程无黑盒。若您希望自托管 Vincent,而非信任其托管服务,该仓库亦提供完整的部署说明。
密钥生命周期:
secret create —— CLI 自动保存 API 密钥,并返回 keyId 和 claimUrl。https://heyvincent.ai 随时撤销智能体的 API 密钥。被撤销的密钥将被服务端即时拒绝。secret relink 命令将其兑换为新密钥。| 类型 | 适用场景 | 网络 | Gas |
|---|---|---|---|
EVM_WALLET |
转账、兑换、DeFi、合约调用 | 任意 EVM 链 | 赞助(免费) |
RAW_SIGNER |
特殊协议所需的原始消息签名 | 任意(Ethereum + Solana) | 用户承担 |
请选用 EVM_WALLET(默认)用于:
仅当需要以下功能时,才选用 RAW_SIGNER:
在创建新钱包前,请先检查是否已存在钱包:
npx @vincentai/cli@latest secret list --type EVM_WALLET
若返回密钥,则将其 id 作为后续所有命令的 --key-id 参数。若无密钥存在,则创建新钱包。
npx @vincentai/cli@latest secret create --type EVM_WALLET --memo "My agent wallet" --chain-id 84532
返回 keyId(供后续所有命令使用)、claimUrl(需分享给用户)和 address。
创建完成后,请告知用户:
“这是您的钱包认领链接:
。请使用该链接认领钱包所有权、设置支出策略,并在 https://heyvincent.ai 上监控智能体的钱包活动。”
npx @vincentai/cli@latest wallet address --key-id
# 查询所有支持链上的全部余额 npx @vincentai/cli@latest wallet balances --key-id# 筛选特定链 npx @vincentai/cli@latest wallet balances --key-id --chain-ids 1,137,42161
返回所有 ERC-20 代币及原生资产余额,含符号、小数位数、图标及 USD 估值。
# 转账原生 ETH npx @vincentai/cli@latest wallet transfer --key-id--to 0xRecipient --amount 0.01 # 转账 ERC-20 代币 npx @vincentai/cli@latest wallet transfer --key-id --to 0xRecipient --amount 100 --token 0xTokenAddress
若交易违反策略,服务端将返回错误信息,明确指出触发了哪项策略;若交易需人工审批(依据审批阈值策略),服务端将返回 status: "pending_approval",钱包所有者将收到 Telegram 通知以批准或拒绝。
使用 DEX 流动性(由 0x 提供支持)将一种代币兑换为另一种。
# 预览兑换(仅报价,不执行) npx @vincentai/cli@latest wallet swap preview --key-id--sell-token 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE --buy-token 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 --sell-amount 0.1 --chain-id 1 # 执行兑换 npx @vincentai/cli@latest wallet swap execute --key-id --sell-token 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE --buy-token 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 --sell-amount 0.1 --chain-id 1 --slippage 100
0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE 表示原生 ETH。--sell-amount:人类可读金额(例如 0.1 表示 0.1 ETH)。--chain-id:1 = Ethereum,137 = Polygon,42161 = Arbitrum,10 = Optimism,8453 = Base,等等。--slippage:滑点容忍度(单位为基点,100 = 1%)。默认为 100,仅限执行命令使用。预览命令返回预期买入数量、路由信息及费用,但不执行交易;执行命令将实际完成兑换,并自动处理 ERC-20 授权。
通过发送自定义 calldata,与任意智能合约交互。
npx @vincentai/cli@latest wallet send-tx --key-id--to 0xContract --data 0xCalldata --value 0
在您拥有的 Vincent Secrets 之间转账(例如从一个 EVM 钱包转至另一个,或转至 Polymarket 钱包)。Vincent 将验证您同时拥有源和目标 Secrets,并自动处理代币转换或跨链桥接。
# 预览(获取报价但不执行) npx @vincentai/cli@latest wallet transfer-between preview --key-id--to-secret-id --from-chain 8453 --to-chain 8453 --token-in ETH --amount 0.1 --token-out ETH # 执行 npx @vincentai/cli@latest wallet transfer-between execute --key-id --to-secret-id --from-chain 8453 --to-chain 8453 --token-in ETH --amount 0.1 --token-out ETH --slippage 100 # 查询跨链转账状态 npx @vincentai/cli@latest wallet transfer-between status --key-id --relay-id
行为说明:
EVM_WALLET 或 POLYMARKET_WALLET。CLI 命令将 JSON 输出至 stdout。成功响应包含相关数据:
{
"address": "0x...",
"balances": [
{
"token": "ETH",
"balance": "0.5",
"usdValue": "1250.00"
}
]
}
交易类命令返回:
{
"transactionHash": "0x...",
"status": "confirmed"
}
对于需人工审批的交易:
{
"status": "pending_approval",
"message": "Transaction requires owner approval via Telegram"
}
| 错误 | 原因 | 解决方法 |
|---|---|---|
401 Unauthorized |
API 密钥无效或缺失 | 确认 key-id 是否正确;必要时执行重绑定 |
403 Policy Violation |
交易被服务端策略拦截 | 用户需在 heyvincent.ai 调整策略 |
400 Insufficient Balance |
代币余额不足 | 转账前请先检查余额 |
429 Rate Limited |
请求过于频繁 | 等待后重试,并加入退避策略 |
pending_approval |
交易超出审批阈值 | 用户将收到 Telegram 通知以批准/拒绝 |
Key not found |
API 密钥已被撤销或从未创建 | 由钱包所有者生成新重绑定令牌,智能体执行重绑定 |
若交易被拒绝,请提示用户前往 https://heyvincent.ai 检查其策略设置。
钱包所有者可通过 https://heyvincent.ai 的 claim URL 设置策略,从而控制智能体可执行的操作。所有策略均由 Vincent API 在服务端强制执行——智能体无法绕过或修改。若交易违反策略,API 将直接拒绝;若交易触发审批阈值,API 将暂存交易并向钱包所有者发送 Telegram 通知,以完成带外人工审批。策略执行逻辑开源且可审计,详见 github.com/HeyVincent-ai/Vincent。
| 策略 | 作用 |
|---|---|
| 地址白名单 | 仅允许向特定地址转账/调用 |
| 代币白名单 | 仅允许转账特定 ERC-20 代币 |
| 函数白名单 | 仅允许调用特定合约函数(按 4 字节函数选择器) |
| 单笔支出限额 | 每笔交易最高 USD 价值 |
| 日支出限额 | 滚动 24 小时内最高 USD 价值 |
| 周支出限额 | 滚动 7 天内最高 USD 价值 |
| 强制审批 | 每笔交易均需通过 Telegram 进行人工审批 |
| 审批阈值 | 超过指定 USD 金额的交易需通过 Telegram 进行人工审批 |
在钱包被认领前,智能体可在无策略限制下运行。此为设计使然:“智能体优先”接入模式允许智能体立即开始积累和管理资金。一旦人类操作员通过 claim URL 认领钱包,即可添加任意组合的策略以约束智能体行为。钱包所有者亦可随时彻底撤销智能体的 API 密钥。
若智能体丢失其 API 密钥,钱包所有者可在前端生成一个重绑定令牌(re-link token),智能体随后可使用该令牌兑换新的 API 密钥。
工作流程:
https://heyvincent.ai 的钱包详情页生成重绑定令牌npx @vincentai/cli@latest secret relink --token
CLI 将该令牌兑换为新的 API 密钥,自动保存,并返回新的 keyId。请在后续所有命令中使用该 keyId。
注意: 重绑定令牌为一次性使用,10 分钟后自动过期。
https://heyvincent.ai 检查策略设置。status: "pending_approval"。钱包所有者将收到 Telegram 通知以批准或拒绝。当智能账户不适用时,用于原始 ECDSA/Ed25519 签名。
npx @vincentai/cli@latest secret create --type RAW_SIGNER --memo "My raw signer"
响应中包含基于同一助记词派生的 Ethereum(secp256k1)与 Solana(ed25519)地址。
npx @vincentai/cli@latest raw-signer addresses --key-id
返回 ethAddress 和 solanaAddress。
npx @vincentai/cli@latest raw-signer sign --key-id--message 0x --curve ethereum
--message:待签名的十六进制编码字节(必须以 0x 开头)--curve:指定 ethereum(secp256k1 ECDSA)或 solana(ed25519)返回十六进制编码的签名。对于 Ethereum,格式为 r || s || v(65 字节);对于 Solana,为 64 字节的 ed25519 签名。
相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 134.1万人学习
共49课时 | 82.6万人学习
最新文章