别再把私钥粘贴到 Cursor 中:如何为你的编码智能体配置钱包
作者 Alchemy Team

你正在深入一次构建过程。你在 Cursor 中的 agent 已经写好了合约调用代码,选好了网络,只等发送一笔测试交易。计划与一笔已签名交易之间,只差一样东西:一把密钥。于是你把私钥粘贴进一个 agent 可以读取的 .env 文件,继续构建。
正是这一步,让许多经验丰富的开发者不敢让 AI 碰任何涉及真实资金的事情。私钥是全有或全无的。一旦你的 agent 能读取它,它就能转走该钱包在任意链上的全部资产,永久生效,且无法撤销。而 agent 从设计上就是概率性的:大多数时候表现很好,偶尔会自信满满地犯错。
这件事有更好的做法:给 agent 一个钱包,但不给它密钥。下面说明 Alchemy CLI 中的 agent wallets 是如何做到这一点的,以及它真正的边界在哪里。
问题在于密钥,而不是 agent
把 agent 当作风险源是很自然的想法,但 agent 其实不是真正的问题所在。私钥从设计之初就不是用来共享的。它没有"最多可以发送这么多""只能在这些链上""只在接下来一小时内有效"或"现在停止"这类概念。它是一个单一的秘密,授予完全的控制权,而使用它的唯一方式就是暴露它。
在此之前,开发者只有两种选择,而且都要付出实实在在的代价。你可以把密钥粘贴进 .env,接受 agent 对资金拥有完全控制权,代价是你随时可能因为一次意外的提示而使钱包被清空。或者你可以把某个 wallet SDK 接入自定义后端,自己重新实现认证、签名和撤销逻辑,这对大多数团队来说是数周的工作量,不值得承担。前者风险太高,后者成本太高。
你真正想要的,其实更接近你在技术栈其他地方处理访问权限的方式。你不会把 root 密码直接交出去,而是签发一个受限的凭证,设定它能做什么,用完之后撤销它。钱包也应该以同样的方式运作。
Agent wallets 是如何工作的
Alchemy CLI 中的 agent wallets 让你可以在 dashboard 中创建一个钱包,为你的终端授予一个受限且有时效的会话,然后让 agent 从命令行发送真实交易。私钥不会接触到 CLI,不会接触到 Alchemy,也不会存放在任何 .env 文件里。可以把它理解为三层结构,每一层由不同的一方掌控。
托管层:密钥由他人持有
钱包的私钥由 Privy(我们的嵌入式钱包合作伙伴)持有,存放在其基础设施上。它不在你的笔记本电脑里,不在你的代码仓库里,也不在我们的系统中。这正是改变风险计算方式的关键。你原本打算粘贴进 .env 的那个秘密,如今变成了你和 agent 都不会直接接触的东西。
会话层:agent 得到的是权限,而不是秘密
当你运行 alchemy wallet connect 时,CLI 会在你的机器上生成一对全新的 P-256 密钥,其中的私钥部分永远不会离开该设备。你的浏览器会打开 Alchemy dashboard,在那里你选择钱包并批准一个会话。批准操作会把你 CLI 的公钥作为签名者附加到该钱包上,并限定其能力范围以及你设定的过期时间。
此后,每一次签名调用都是一个两步的挑战流程。我们的后端会构造出 Privy 所期望的精确 payload,你的 CLI 在本地对这些确切的字节进行签名,然后请求才会到达 Privy。如果会话已过期、已被撤销,或未通过任何绑定检查,下一次签名尝试会在离开我们基础设施之前就被拒绝。agent 是通过你定义的会话在行动,而不是通过它持有的某个秘密。
控制层:终止开关始终在你手中
dashboard 是唯一可以创建或撤销钱包的地方,撤销只需一次点击,且立即生效。你也可以在终端运行 alchemy wallet disconnect。如果某个会话开始做出你未预期的行为,你可以终止它,签名随之停止。你永远不必单纯寄希望于某个会话表现良好,因为你始终可以终止它。
agent 实际能做什么
一旦会话建立,agent 就拥有完整的交易能力可供使用。在 EVM 链上,它可以发送原生代币和 ERC-20、发起合约调用、管理 ERC-20 授权、进行 swap,以及在主网之间进行 bridge。在 Solana 上,它可以发送 SOL 和 SPL 代币。交易通过我们的 Wallet APIs 运行,因此通过 Gas Manager 实现的 gas 代付、批处理、自动重试以及 ERC-20 gas 支付都随之可用。
由于 CLI 本身就是为 agent 打造的工具接口,你的 agent 会自行识别这些命令。--json 标志返回结构化输出,--no-interactive 让命令不会因等待用户输入而阻塞,alchemy agent-prompt 则会输出一份 JSON 文档,描述每一个命令、标志和错误代码。把它放进系统提示词,agent 就能一次性掌握完整的能力范围。不需要集成任何 SDK,也不需要它从文档中推断任何东西。
适用对象与适用场景
这适合那些活跃在 Cursor 或 Claude Code 中进行链上开发的开发者:正在对接某个 DeFi 协议、搭建支付流程,或者测试合约的人,他们希望 agent 真正执行交易,而不是在需要签名的地方停下来。如果你曾经让 agent 写好代码,然后自己手动完成链上那一部分,这正好填补了这个空白。以下两种场景可以体现它的价值。
第一种是构建与测试的循环。你正在对接某个协议,agent 已经写好了代码。要判断代码是否真的可行,就必须有人发送真实交易:给合约打款、调用合约、检查产生的状态、调整、再运行一遍。如果手动完成这一切,就意味着每一笔交易都要你自己批准并粘贴,而这恰恰是你引入 agent 想要消除的繁琐工作。有了会话,你创建一个钱包,注入一笔小额余额,批准一个短期限的会话,然后让 agent 运行整个循环。它发送交易、读取结果、不断迭代,而你在旁观察;当会话过期时,它的访问权限也随之自动终止。
第二种是执行多步骤链上任务的 agent。有些工作是一系列步骤,而不是单次调用:在主网上 swap 一个代币,把所得资金 bridge 到某个 L2,再存入某个仓位。你可以描述最终目标,让 agent 通过会话执行这些步骤,而不必自己逐一操作。会话限制的是 agent 能使用哪些能力以及持续多久——而不是它能转移多少资金——因此需要根据任务所需为钱包注入相应资金,设定较短的过期时间,完成后撤销会话。
坦诚看待边界
当一个处理资金的工具的开发者能清楚说明它的局限所在时,人们会更容易信任它。以下是在生产环境中依赖它之前,值得了解的几个限制。
Gas 和手续费代付策略控制的是交易费用,而不是钱包支出限额,因此不要把 Gas Manager 策略当作 agent 能转移资金量的上限。目前 swap 和 bridge 仅支持 EVM 主网。会话签名者不会直接进行原始的 EVM 交易签名;操作是通过 Alchemy Wallet API 调用(例如 wallet_prepareCalls 和 wallet_sendCalls)来执行的。而且会话的权限范围完全取决于你在 dashboard 中的设置,因此你设定的过期时间和能力范围才是真正的边界,而不是一个建议。
这些都不是变通做法,而是系统本身的设计方式。钱包保有托管权,会话承载权限,而你始终保留终止会话的能力。
开始使用
CLI 中的 agent wallets 现已上线,无需候补名单,也没有单独的付费层级。你需要 Node 22 或更高版本,以及一个 Alchemy 账户。三条命令即可让你拥有一个可供 agent 控制的钱包:
npm i -g @alchemy/cli@latest
alchemy auth
alchemy wallet connect --mode sessionconnect 这一步会打开 dashboard,你在那里批准会话,并设定它的权限范围和过期时间。在执行任何会更改状态的工作流之前,先让 agent 验证会话:
alchemy --json --no-interactive wallet status --verify工作完成后,终止会话:
alchemy wallet disconnect那些在链上构建要求最苛刻的产品的团队,早已在使用 Alchemy,每年在 100 多条链上处理超过一万亿美元的资金流转。agent wallets 的意义在于,同样的基础设施如今支撑着你交给编码 agent 的钱包,而无需交出密钥。你可以不再把私钥粘贴进 Cursor,而是给 agent 一个受限的会话,并始终保留随时撤销的能力。
阅读 agent wallets 文档,了解 Alchemy for agents,或 安装 CLI 亲自试用。
FAQ
如何在不共享私钥的情况下,给 AI 编码 agent 一个钱包?
在 Alchemy dashboard 中创建一个钱包,然后在终端运行 alchemy wallet connect --mode session。CLI 会生成一个本地密钥对,dashboard 会批准一个受限且有时效的会话。agent 通过该会话发送交易,私钥则始终留在钱包提供方那里,从不暴露。
私钥实际存放在哪里?
钱包的私钥由 Alchemy 的嵌入式钱包合作伙伴 Privy 持有,存放在其基础设施上。它从不会写入你的机器、你的代码仓库,或任何 .env 文件,也从不会接触到 CLI 或 Alchemy 自身的系统。你的 agent 是通过一个已批准的会话行动,而不是通过密钥本身。
我能撤销 agent 对钱包的访问权限吗?
可以。你可以在 Alchemy dashboard 中一键撤销会话,也可以在终端运行 alchemy wallet disconnect。撤销立即生效,该会话的下一次签名尝试会被拒绝。会话在你批准时设定的时间点也会自动过期。
agent wallet 能让 agent 做什么?
在 EVM 链上,agent 可以发送原生代币和 ERC-20、发起合约调用、管理授权、进行 swap,以及在主网之间进行 bridge。在 Solana 上,它可以发送 SOL 和 SPL 代币。交易通过 Alchemy 的 Wallet API 运行,因此 gas 代付、批处理、重试和 ERC-20 gas 支付都可以使用。
代付策略会限制 agent 能花费的金额吗?
不会。gas 和手续费代付策略控制的是交易费用,而不是钱包余额,它们不是支出限额。真正限制 agent 能做什么的,是你在 dashboard 中为会话设定的能力范围和过期时间,因此需要审慎地设定会话范围。
我需要准备什么才能开始?
你需要 Node 22 或更高版本,以及一个 Alchemy 账户。CLI 中的 agent wallets 现已上线,无需候补名单,也没有单独的付费层级。使用 npm i -g @alchemy/cli@latest 安装,运行 alchemy auth,然后通过 alchemy wallet connect --mode session 在 dashboard 中批准一个会话。
相关概览

构建区块链应用
Alchemy 将最强大的 Web3 开发者产品和工具与资源、社区及专业支持结合在一起。


