Vincent - Wallet
Vincent - 专为智能体设计的钱包
使用此功能可安全创建钱包,供智能体进行转账、兑换及任何EVM链交易,同时确保私钥永不暴露给智能体。创建钱包并设置支出策略后,您的智能体即可在您设定的权限范围内转移代币、执行兑换操作并与智能合约交互。
智能体始终无法查看私钥。所有交易均通过ZeroDev智能账户在服务器端执行。智能体获得的是受限API密钥,仅能执行钱包所有者策略所允许的操作。私钥始终不会离开Vincent服务器。
所有指令均使用@vincentai/cli软件包。API密钥的存储与解析均自动完成——您无需手动处理原始密钥或文件路径。
安全模型
本功能专为通过服务器端控制实现人工监督的自主智能体运行而设计。理解此模型至关重要:
无需配置任何环境变量因为此技能采用代理优先的启动方式:代理在运行时通过调用Vincent API创建自己的钱包,该API返回一个限定范围的API密钥。无需预先配置任何凭证。CLI在钱包创建过程中会自动存储返回的API密钥。密钥所保存的配置路径(${OPENCLAW_STATE_DIR:-$HOME/.openclaw}/credentials/agentwallet/或./agentwallet/)已在此技能的元数据中声明。
代理的API密钥并非私钥。它是一个限定范围的Bearer令牌,仅能在钱包所有者设定的策略范围内执行交易。Vincent服务器在服务器端强制执行所有策略——无论代理发送什么请求,都无法绕过这些策略。若交易违反策略,服务器会予以拒绝。若交易需要批准,服务器会暂存该交易,并通过Telegram通知钱包所有者进行带外人工批准。
模型调用功能已明确启用。此技能旨在赋予AI代理自主的钱包操作能力。代理可在人类操作者设定的边界内自主调用钱包操作(转账、兑换、合约调用)。人类通过策略(支出限额、地址白名单、代币白名单、函数白名单、审批阈值)控制代理的权限范围——而非通过逐条审批来限制。存储的密钥具有明确的作用域且受策略约束——即使被其他进程读取,也只能执行钱包所有者策略所允许的操作,且所有者可立即撤销其权限。
所有API调用仅指向heyvincent.ai并通过HTTPS/TLS协议进行。不会联系任何其他端点、服务或外部主机。除钱包操作必需的数据外,代理不会读取、收集或传输任何其他数据。
Vincent为开源项目并经过审计。用于执行策略、管理私钥和处理交易的服务器端代码已公开可审计,地址为github.com/HeyVincent-ai/Vincent。Vincent后端持续接受涵盖密钥管理、策略执行、交易签名和API认证的安全审计。您可以验证策略执行机制、私钥存储方式、作用域API密钥的校验流程以及撤销处理机制——所有环节均保持透明。若希望自行托管Vincent而非依赖托管服务,代码库中包含完整的部署指南。
密钥生命周期:
- 创建:代理程序运行
secret create——CLI会自动存储API密钥,并返回一个keyId和claimUrl。 - 认领:操作员使用认领URL来取得所有权并配置策略。
- 撤销:钱包所有者可以随时从
https://heyvincent.ai撤销代理的API密钥。被撤销的密钥会立即被服务器拒绝。 - 重新链接:如果代理丢失了其API密钥,钱包所有者可以生成一个一次性重新链接令牌,代理通过
secret relink将其交换为新密钥。 - 轮换:钱包所有者可以随时撤销当前密钥并签发一个重新链接令牌来轮换凭据。
应使用哪种密钥类型
| 类型 | 用例 | 网络 | Gas费 |
|---|---|---|---|
EVM_WALLET | 转账、兑换、DeFi、合约调用 | 任何EVM链 | 赞助(免费) |
RAW_SIGNER | 为特殊协议进行原始消息签名 | 任何(以太坊 + Solana) | 您支付 |
选择EVM_WALLET(默认)用于:
- 发送ETH或代币
- 在DEX上兑换代币
- 与智能合约交互
- 任何标准的EVM交易
选择RAW_SIGNER仅在您需要时:
- 为不兼容智能账户的协议提供原始ECDSA/Ed25519签名
- 用于签署您将自行广播的交易哈希
- 索拉纳签名
快速开始
1. 检查现有密钥
在创建新钱包前,请检查是否已存在钱包:
npx @vincentai/cli@latest secret list --type EVM_WALLET
如果返回了密钥,请将其id作为--key-id用于所有后续命令。如果不存在任何密钥,则创建一个新钱包。
2. 创建钱包
npx @vincentai/cli@latest secret create --type EVM_WALLET --memo "My agent wallet" --chain-id 84532
返回keyId(用于所有未来命令)、claimUrl(与用户分享)和address(地址)。
创建后,请告知用户:
“这是您的钱包领取网址:
<claimUrl>。请使用此网址来认领所有权、设置支出策略,并在https://heyvincent.ai上监控您代理的钱包活动。”
3. 获取钱包地址
npx @vincentai/cli@latest wallet address --key-id <KEY_ID>
4. 检查余额
# All balances across all supported chains
npx @vincentai/cli@latest wallet balances --key-id <KEY_ID>
# Filter to specific chains
npx @vincentai/cli@latest wallet balances --key-id <KEY_ID> --chain-ids 1,137,42161
返回所有 ERC-20 代币和原生代币余额,包含代币符号、小数位数、图标和美元价值。
5. 转账 ETH 或代币
# Transfer native ETH
npx @vincentai/cli@latest wallet transfer --key-id <KEY_ID> --to 0xRecipient --amount 0.01
# Transfer ERC-20 token
npx @vincentai/cli@latest wallet transfer --key-id <KEY_ID> --to 0xRecipient --amount 100 --token 0xTokenAddress
如果交易违反了某项策略,服务器将返回一个错误,说明触发了哪条策略。如果交易需要人工批准(基于批准阈值策略),服务器将返回状态:"待批准"并且钱包所有者会收到一条 Telegram 通知,以批准或拒绝该交易。
6. 兑换代币
使用 DEX 流动性(由 0x 提供支持)将一种代币兑换为另一种。
# Preview a swap (no execution, just pricing)
npx @vincentai/cli@latest wallet swap preview --key-id <KEY_ID> \
--sell-token 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE \
--buy-token 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 \
--sell-amount 0.1 --chain-id 1
# Execute a swap
npx @vincentai/cli@latest wallet swap execute --key-id <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 = 以太坊,137 = Polygon,42161 = Arbitrum,10 = Optimism,8453 = Base 等。--slippage: 1 = Ethereum, 137 = Polygon, 42161 = Arbitrum, 10 = Optimism, 8453 = Base, etc.--slippage滑点容差以基点表示(100 = 1%)。默认为100。仅执行。
预览功能会返回预期的购买金额、路由信息和费用,但不实际执行。执行操作会进行实际的兑换,并自动处理ERC20代币的授权。
7. 发送任意交易
通过发送自定义调用数据与任何智能合约进行交互。
npx @vincentai/cli@latest wallet send-tx --key-id <KEY_ID> --to 0xContract --data 0xCalldata --value 0
8. 在您的Secret之间转账
在您拥有的Vincent secret之间转账资金(例如,从一个EVM钱包转到另一个,或转到Polymarket钱包)。Vincent会验证您同时拥有这两个secret,并自动处理任何代币转换或跨链桥接。
# Preview (get quote without executing)
npx @vincentai/cli@latest wallet transfer-between preview --key-id <KEY_ID> \
--to-secret-id <DEST_SECRET_ID> --from-chain 8453 --to-chain 8453 \
--token-in ETH --amount 0.1 --token-out ETH
# Execute
npx @vincentai/cli@latest wallet transfer-between execute --key-id <KEY_ID> \
--to-secret-id <DEST_SECRET_ID> --from-chain 8453 --to-chain 8453 \
--token-in ETH --amount 0.1 --token-out ETH --slippage 100
# Check cross-chain transfer status
npx @vincentai/cli@latest wallet transfer-between status --key-id <KEY_ID> --relay-id <RELAY_REQUEST_ID>
行为:
- 相同代币 + 相同链:执行直接转账(Gas费由服务赞助)。
- 不同代币或不同链:使用中继服务进行原子交换 + 桥接。
- 目标secret可以是
EVM钱包或Polymarket钱包。 - 服务器会验证您同时拥有源secret和目标secret——向您不拥有的secret转账将被拒绝。
- 转账操作适用与常规转账相同的服务器端策略(如支出限额、审批门槛等)。
输出格式
命令行工具将JSON格式数据输出至标准输出。成功响应包含相关数据:
{
"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 未授权 | API密钥无效或缺失 | 检查密钥ID是否正确;必要时重新关联 |
403 策略违规 | 交易被服务器端策略拦截 | 用户需在heyvincent.ai调整策略设置 |
400 余额不足 | 可用代币不足以完成转账 | 转账前请核对账户余额 |
429 请求频率超限 | 请求次数过多 | 请等待并采用退避策略重试 |
待批准 | 交易超出审批阈值 | 用户将收到Telegram通知以批准/拒绝 |
密钥未找到 | API密钥已被撤销或从未创建 | 请与钱包所有者重新关联新的令牌 |
如果交易被拒绝,请通知用户前往以下地址检查其策略设置https://heyvincent.ai。
策略(服务器端强制执行)
钱包所有者通过以下地址的认领URL设置策略,以控制代理可执行的操作https://heyvincent.ai。所有策略均由Vincent API在服务器端强制执行——代理无法绕过或修改这些策略。如果交易违反策略,API将拒绝该交易。如果交易触发审批阈值,API将暂缓执行并向钱包所有者发送Telegram通知,以进行带外人工审批。策略执行逻辑为开源且可审计,地址为github.com/HeyVincent-ai/Vincent。
| 策略 | 其作用 |
|---|---|
| 地址白名单 | 仅允许向特定地址进行转账/调用 |
| 代币白名单 | 仅允许转移特定的ERC-20代币 |
| 函数白名单 | 仅允许调用特定的合约函数(通过4字节选择器) |
| 支出限额(每笔交易) | 每笔交易的最大美元价值 |
| 支出限额(每日) | 滚动24小时内的最大美元价值 |
| 支出限额(每周) | 滚动7天内的最大美元价值 |
| 需要审批 | 每笔交易都需要通过Telegram进行人工审批 |
| 审批阈值 | 超过特定美元金额的交易需要通过Telegram进行人工审批 |
在钱包被认领之前,代理可以在没有策略限制的情况下操作。这是设计使然:代理优先的入门流程允许代理立即开始积累和管理资金。一旦人工操作员通过认领链接认领钱包,他们可以添加任意组合的策略来约束代理的行为。钱包所有者也可以随时完全撤销代理的API密钥。
重新关联(恢复API访问)
如果代理丢失其API密钥,钱包所有者可以从前端生成一个重新关联令牌。随后,代理将此令牌交换为新的API密钥。
工作原理:
- 用户在钱包详情页面生成重新关联令牌,页面位于
https://heyvincent.ai - 用户将令牌提供给代理(例如,通过聊天粘贴)
- 代理运行重新关联命令:
npx @vincentai/cli@latest secret relink --token <TOKEN_FROM_USER>
命令行界面将令牌交换为新的API密钥,自动存储,并返回新的密钥ID。后续所有命令请使用此密钥ID。
重要提示:重新关联令牌为一次性使用,且会在10分钟后过期。
重要注意事项
- 无需燃气费。支付管理器已完全设置——所有交易燃气费用均自动赞助。钱包无需ETH支付燃气费。
- 切勿尝试访问原始密钥值。私钥始终保留在服务器端——这是核心原则。
- 创建钱包后,务必向用户分享认领链接。
- 若交易被拒绝,可能是服务器端策略拦截所致。请提示用户前往以下地址检查策略设置:
https://heyvincent.ai。 - 若交易需要审批,系统将返回
状态:"pending_approval"。钱包所有者将通过Telegram收到审批通知。
原始签名器(高级功能)
适用于智能账户无法处理的原始ECDSA/Ed25519签名场景。
创建原始签名器
npx @vincentai/cli@latest secret create --type RAW_SIGNER --memo "My raw signer"
响应将包含源自同一种子的以太坊(secp256k1)和Solana(ed25519)双链地址。
获取地址
npx @vincentai/cli@latest raw-signer addresses --key-id <KEY_ID>
返回以太坊地址与Solana地址。
签署消息
npx @vincentai/cli@latest raw-signer sign --key-id <KEY_ID> --message 0x<hex-encoded-bytes> --curve ethereum
: 待签名的十六进制编码字节(必须以0x开头)--curve:ethereum代表 secp256k1 ECDSA,solana代表 ed25519返回一个十六进制编码的签名。对于以太坊,这是
r || s || v(65字节)。对于Solana,它是一个64字节的ed25519签名。(65 bytes). For Solana, it's a 64-byte ed25519 signature.


微信扫一扫,打赏作者吧~