跳至内容
0%

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

发布于 2026年7月29日2 分钟阅读

别再把私钥粘贴到 Cursor 里:如何为你的编码代理配置钱包

你正在深入一次构建过程。你在 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 控制的钱包:

bash
Copied
npm i -g @alchemy/cli@latest alchemy auth alchemy wallet connect --mode session

connect 这一步会打开 dashboard,你在那里批准会话,并设定它的权限范围和过期时间。在执行任何会更改状态的工作流之前,先让 agent 验证会话:

bash
Copied
alchemy --json --no-interactive wallet status --verify

工作完成后,终止会话:

bash
Copied
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 中批准一个会话。

Background gradient

构建区块链应用

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