---
title: "別再把私鑰貼進 Cursor：如何為你的 coding agent 建立錢包"
description: "為你的 coding agent 建立錢包，但不用把私鑰交給它。了解 Alchemy CLI agent wallets 如何透過限定範圍的 session，讓 agent 在 .env 中沒有私鑰的情況下完成交易。"
---

# 別再把私鑰貼進 Cursor：如何為你的 coding agent 建立錢包

<ImageBlock
  src="https://media.alchemy.com/walletagents.png"
  alt="別再把私鑰貼進 Cursor：如何讓你的 coding agent 擁有一個 wallet"
  width={3840}
  height={1800}
/>

你正埋首於一項開發工作。你在 Cursor 中的 agent 已經寫好合約呼叫、選好網路，準備發送測試交易。此刻，計畫與已簽署交易之間，只剩一件事：一把金鑰。於是你把私鑰貼進一個 agent 可以讀取的 `.env` 檔案，然後繼續開發。

正是這一個步驟，讓許多資深開發者不敢讓 AI 碰觸任何涉及真實資金的事。私鑰是全有或全無的東西。一旦 agent 能讀取它，它就能動用該錢包在任何鏈上的所有資產，且無法復原。而 agent 就設計上而言本質是機率性的：大多數時候表現很好，偶爾卻會自信滿滿地做錯事。

其實有更好的做法：給 agent 一個錢包，但不給它金鑰。以下說明 [Alchemy CLI 中的 agent wallets](https://www.alchemy.com/docs/agent-wallets) 如何運作，以及真正的限制在哪裡。

## 問題出在金鑰，不是 agent

把 agent 當成風險來源很誘人，但 agent 其實不是真正的問題。私鑰從一開始就不是設計來被分享的。它沒有「最多可以送出這麼多」「只能在這些鏈上」「只限接下來一小時」或「其實，現在停止」這類概念。它是一個授予完全控制權的單一密鑰，而使用它的唯一方式就是暴露它。

到目前為止，開發者只有兩種選擇，而兩者都要付出實際代價。你可以把金鑰貼進 `.env`，接受 agent 對資金擁有完全控制權，這讓你隨時可能因為一個誤導性的提示而被清空錢包。或者你可以把 wallet SDK 接進自訂後端，自己重建驗證、簽章與撤銷機制，這對大多數團隊來說是好幾週不該承擔的工作量。前者風險太高，後者成本太高。

你真正想要的，其實比較接近你在整個技術堆疊中對「存取權限」已經習慣的思考方式。你不會把 root 密碼交出去，而是核發一個範圍受限的憑證，設定它能做什麼，用完就撤銷。錢包也該用同樣的方式運作。

## Agent wallets 如何運作

Alchemy CLI 中的 agent wallets 讓你能從 dashboard 建立錢包，授予你的終端機一個範圍受限、有時效限制的 session，並讓 agent 從指令列發送真實交易。私鑰從未經過 CLI，也從未經過 Alchemy，更不會出現在任何 `.env` 檔案中。可以把它理解為三個層次，各由不同的一方掌控。

### 保管層：金鑰由別人持有

錢包的私鑰由我們的嵌入式錢包合作夥伴 Privy 持有，儲存在他們的基礎設施上。它不在你的筆電裡，不在你的程式庫裡，也不在我們的系統裡。這正是改變風險計算方式的關鍵。你原本打算貼進 `.env` 的那個機密，現在變成一個你和你的 agent 都不需要直接接觸的東西。

### Session 層：agent 拿到的是權限，不是機密本身

當你執行 `alchemy wallet connect` 時，CLI 會在你的機器上產生一組全新的 P-256 金鑰對，其中的私鑰部分永遠不會離開這台機器。你的瀏覽器會開啟 Alchemy dashboard，讓你選擇錢包並核准一個 session。核准動作會把你 CLI 的公鑰設為該錢包的簽署者，範圍限定在特定能力內，並受你設定的到期時間限制。

從那之後，每一次簽署呼叫都是一個兩階段的挑戰流程。我們的後端會建立 Privy 所需的確切 payload，你的 CLI 在本機對這些精確的位元組進行簽署，之後請求才會送達 Privy。如果 session 已過期、已被撤銷，或未通過任何綁定檢查，下一次簽署嘗試會在離開我們的基礎設施之前就被拒絕。agent 是透過你定義的 session 在行動，而不是持有某個機密。

### 控制層：主導權（kill switch）在你手上

Dashboard 是唯一能建立或撤銷錢包的地方，撤銷只需一鍵，且立即生效。你也可以從終端機執行 `alchemy wallet disconnect`。如果某個 session 開始做出你未預期的行為，你可以終止它，簽署動作就會停止。你永遠不需要單純寄望 session 會表現良好，因為你隨時都能終止它。

## Agent 實際能做什麼

一旦 session 啟用，agent 就擁有完整的交易操作範圍。在 EVM 鏈上，它可以發送原生代幣與 ERC-20、進行合約呼叫、管理 ERC-20 授權、進行 swap，以及在各主網之間進行 bridge。在 Solana 上，它可以發送 SOL 與 SPL 代幣。交易是透過我們的 [Wallet APIs](https://www.alchemy.com/docs/wallets) 執行，因此透過 [Gas Manager](https://www.alchemy.com/docs/wallets/transactions/sponsor-gas) 提供的 gas 贊助、批次處理、自動重試，以及 ERC-20 支付 gas 的功能也一併涵蓋在內。

由於 CLI 本身就是為 agent 建置的工具介面，你的 agent 會自行辨識這些指令。`--json` 旗標會回傳結構化輸出，`--no-interactive` 讓指令不會卡在提示訊息上，而 [`alchemy agent-prompt`](https://www.alchemy.com/docs/alchemy-cli) 則會輸出一份描述每個指令、旗標與錯誤代碼的 JSON 文件。把它放進 system prompt，agent 就能一次學會整個操作範圍。不需要整合任何 SDK，也不需要它從文件中推敲揣測。

## 這適合誰，以及適用的流程

這是為在 [Cursor 或 Claude Code](https://www.alchemy.com/agents) 中開發鏈上應用的開發者設計的：可能是在整合某個 DeFi 協定、串接支付流程，或測試合約的人，希望 agent 能真正發送交易，而不是在需要簽章時就卡住。如果你曾經讓 agent 寫好程式碼，再自己手動完成鏈上的部分，這正好補上了這個缺口。以下兩種流程能顯示它的價值所在。

第一種是「開發並測試」的循環。你正在整合某個協定，agent 已經寫好程式碼。要知道它是否真的能運作，就必須發送真實交易：為合約注資、呼叫合約、檢查結果狀態、調整、再執行一次。若手動完成，就意味著你得自己核准並貼上每一筆交易，這正是你當初找 agent 來的目的——消除這種繁瑣工作。有了 session，你只需建立一個錢包，注入少量餘額，核准一個到期時間短的 session，然後讓 agent 執行整個循環。它會發送交易、讀取結果、反覆迭代，而你在旁監看；當 session 到期，它的存取權限就會自動結束。

第二種是執行多步驟鏈上任務的 agent。有些工作本質上是一連串步驟，而非單一呼叫：在主網上 swap 一個代幣、將所得 bridge 到某個 L2，再存入某個部位。你可以描述最終想要的結果，讓 agent 透過 session 執行這些步驟，而不必自己一步步操作。Session 限制的是 agent 能使用哪些能力、能用多久——而不是它能動用多少資金——所以請依任務所需為錢包注資，設定短的到期時間，用完即撤銷。

## 誠實看待其中的限制

當一項工具涉及資金時，如果製作者能清楚說明它的界限在哪裡，會更容易讓人信任。以下幾點限制值得在你將此用於正式環境之前先了解。

Gas 與手續費贊助政策控制的是交易費用，並非錢包的支出上限，因此不要把 Gas Manager 政策當成 agent 能動用資金的上限。Swap 與 bridge 目前僅支援 EVM 主網。Session 簽署者不會直接對原始 EVM 交易進行簽署；所有動作是透過 Alchemy Wallet API 呼叫執行，例如 `wallet_prepareCalls` 與 `wallet_sendCalls`。而 session 的範圍完全取決於你在 dashboard 中如何設定，因此你所設定的到期時間與能力範圍才是真正的界限，而非建議事項。

這些都不是變通做法，而是這套系統本來就該如此運作。錢包保有金鑰保管權，session 承載權限，而終止的權力始終在你手上。

## 開始使用

CLI 中的 agent wallets 現已上線，無需候補名單，也沒有獨立的方案層級。你需要 Node 22 或以上版本，以及一個 Alchemy 帳號。三個指令即可讓你擁有一個 agent 可控制的錢包：

<CodeSnippet
  language="bash"
  code={`npm i -g @alchemy/cli@latest
alchemy auth
alchemy wallet connect --mode session`}
/>

連線步驟會開啟 dashboard，讓你核准 session 並設定其範圍與到期時間。在執行任何會改變狀態的工作流程之前，先讓 agent 驗證 session：

<CodeSnippet
  language="bash"
  code="alchemy --json --no-interactive wallet status --verify"
/>

工作完成後，終止 session：

<CodeSnippet language="bash" code="alchemy wallet disconnect" />

正在建構鏈上最具挑戰性產品的團隊，已經在使用 Alchemy，每年在 100 多條鏈上處理超過一兆美元的資金流動。Agent wallets 的重點在於：同一套基礎設施，現在也支撐著你交給程式開發 agent 的錢包，而無需交出金鑰。你不必再把私鑰貼進 Cursor，而是能給 agent 一個範圍受限的 session，並隨時保有撤銷的能力。

閱讀 [agent wallets 文件](https://www.alchemy.com/docs/agent-wallets)、瀏覽 [Alchemy for agents](https://www.alchemy.com/agents)，或是 [安裝 CLI](https://www.alchemy.com/docs/alchemy-cli) 親自試試看。

## 常見問題

### 如何在不分享私鑰的情況下，給 AI 程式開發 agent 一個錢包？

在 Alchemy dashboard 中建立一個錢包，然後在終端機執行 `alchemy wallet connect --mode session`。CLI 會產生一組本機金鑰對，而 dashboard 會核准一個範圍受限、有時效限制的 session。Agent 透過該 session 發送交易，私鑰則始終保留在錢包供應商手中，從未被暴露。

### 私鑰實際儲存在哪裡？

錢包的私鑰由 Alchemy 的嵌入式錢包合作夥伴 Privy 持有，儲存在他們的基礎設施上。它從未寫入你的機器、你的程式庫，或任何 `.env` 檔案，也從未經過 CLI 或 Alchemy 自身的系統。你的 agent 是透過已核准的 session 行動，而不是透過金鑰本身。

### 我可以撤銷 agent 對錢包的存取權嗎？

可以。你可以在 Alchemy dashboard 中一鍵撤銷 session，或是在終端機執行 `alchemy wallet disconnect`。撤銷會立即生效，該 session 之後的任何簽署嘗試都會被拒絕。Session 也會在你核准時設定的時間自動到期。

### Agent 能用 agent wallet 做什麼？

在 EVM 鏈上，agent 可以發送原生代幣與 ERC-20、進行合約呼叫、管理授權、進行 swap，以及在各主網之間 bridge。在 Solana 上，它可以發送 SOL 與 SPL 代幣。交易是透過 Alchemy 的 Wallet APIs 執行，因此 gas 贊助、批次處理、重試機制，以及 ERC-20 支付 gas 的功能皆可使用。

### 贊助政策會限制 agent 能花費多少嗎？

不會。Gas 與手續費贊助政策控制的是交易費用，而非錢包餘額，並非支出上限。真正限制 agent 能做什麼的界限，是你在 dashboard 中為 session 設定的能力範圍與到期時間，因此請謹慎地設定 session 的範圍。

### 我需要準備什麼才能開始？

你需要 Node 22 或以上版本，以及一個 Alchemy 帳號。CLI 中的 agent wallets 現已上線，無需候補名單，也沒有獨立的方案層級。使用 `npm i -g @alchemy/cli@latest` 安裝，執行 `alchemy auth`，然後透過 `alchemy wallet connect --mode session` 從 dashboard 核准一個 session。
