跳至內容
0%

Terminal Arena:讓代理人在動用真實資金前,先學會如何行動

作者:Blake Duncan

最後更新:2026年8月19日2 分鐘閱讀
Terminal Arena:在代理處理真實資金前,教導它們在 onchain 上執行動作

現在幾乎每一場關於 onchain agent 的討論都圍繞著支付。x402 把舊有的 HTTP 402「Payment Required」狀態碼改造成一套實際可用的流程:agent 遇到付費牆、簽署付款、重試、進入。MPP 來自 Stripe 與 Tempo,走得更遠,提供 agent 可用的程式化付款、微交易與週期性計費。兩者都不錯,也都在解決同一件事:agent 如何付費取得存取權。

付款只是第一步。一旦 agent 能夠付費通過付費牆,更難的問題才會浮現:它能不能被信任獨立行動、維持在限制範圍內、並產出可靠的結果?

一個具體的例子有助於理解。假設有一個自主財庫 agent,這類 agent 必須處理真實資產。它管理公司的穩定幣儲備,在借貸市場之間移動資金以賺取收益,同時維持在風險預算內,且沒有人類逐次核准每個動作。支付資料來源的費用只是它工作中最簡單的部分。更難的問題是:什麼樣的條件才能讓團隊放心讓它獨立管理真實資金?

這個問題有具體的答案,因為財庫 agent 只是一個更大轉變的早期範例。Agentic commerce 正在快速擴張,麥肯錫的預測估計到 2030 年,由 agent 主導的商業活動規模將達到 3 到 5 兆美元。業界早已知道瓶頸在哪:在埃森哲的研究中,對支付領域的主管進行調查,87% 的人表示信任是 agentic payments 最主要的障礙。問題不在於 agent 能不能付款,而在於什麼樣的條件才能讓它安全地行動。

我們想要一個可以測試的答案,所以就打造了一個:一款小型的 onchain 遊戲,Terminal Arena,目的是在一場比賽的賭注下、而非一個財庫的賭注下,驗證這些信任要求。

要信任一個會行動的 agent,需要什麼?

說明如何信任會採取行動的代理之圖表:行動前有範圍受限的身分與即時狀態,行動時有策略、執行與涵蓋的手續費,而後則有合約強制執行的規則與公開紀錄

先從錢包說起。大多數團隊不會想把整個財庫的金鑰交給一個自主 agent,所以 agent 需要屬於自己的身分。這代表它需要一個範圍受限的錢包,僅限於它被允許做的事,例如「在這三個已核准的市場中,最多可以再平衡這麼多金額」,由人類核准,並且在出問題時可以撤銷。目標是一個受治理的身分,而不是一個放在 .env 檔案裡的私鑰。

接下來,agent 必須知道什麼是真實的。如果 agent 是靠讀取一個給人看的儀表板來推斷利率,那它依賴的來源就很脆弱。它需要的是真實狀態,包括餘額、即時利率、剩餘的風險預算,並以結構化事實的形式提供,這種形式是為了決策而設計,而不是為了給人類眼睛看的網頁。

然後它必須做出選擇。應該追逐最高收益,還是保護本金?現在就行動,還是等利率穩定下來?這些權衡就是 agent 的策略,也正是區分「團隊可以信賴的財庫 agent」與「不能信賴的財庫 agent」的關鍵。

接著它必須執行。agent 必須自行提交交易,不能每一步都暫停等待人類確認,因為需要每個動作都經過核准的 agent,就稱不上自主。它也必須自行負擔執行成本。如果再平衡會因為沒人補充 gas 而失敗,這套系統就稱不上可靠。一個在安靜的週末就停擺的自主財庫,不是團隊可以放心讓它持續運作的財庫。

最後——也是最常決定一個 agent 能否上線的要求——它必須能夠證明自己確實遵守了規則。「相信我,我有遵守風險限制」這種說法,通常無法說服董事會、稽核人員或監管機構。agent 需要在一個規則會被強制執行、每一個動作都會被記錄的環境中運作,這樣一來,合規就是任何人都能驗證的事,而不是 agent 自己單方面的說詞。

最後這項要求指向了某個具體的方向。要讓 agent 證明自己的行為,規則就不能只存在於 agent 內部,記錄也不能只存在一個只有作者才能讀取的日誌檔案裡。規則需要存在於一個中立且會強制執行的地方,而歷史紀錄必須是公開的。公開的區塊鏈是少數能同時提供這兩者的環境之一。這麼做的理由很實際:它讓一個自主 agent 能夠行動,同時對那些沒有特別理由信任它的人負責。合約會強制執行限制,無論 agent 的意圖為何,而它所做的一切完整歷史都公開供任何人稽核。

綜合來看,這七項需求(受治理的身分、真實的狀態、真正的策略、直接執行、成本的處理、強制執行的規則,以及永久的紀錄)描述的其實是同一件事:一個在 onchain 上運作的 agent,它的行動是可見且可驗證的。

為什麼不能在正式的 workflow 上學這些?

以上就是規格。難處在於,你無法用真實的儲備金來針對這份規格進行開發。很少有團隊會把一個未經測試的 agent 接上正式的財庫,只為了看看它的策略是否可靠,或它在壓力下是否守得住限制。這種情況下的風險與學習需求恰好相反:最需要觀察 agent 行動、失敗、並證明自己行為得當的情境,同時也是犯錯代價最高的情境。

你需要的是一個基本元件完全相同、但賭注很低的環境。一個 agent 擁有真正的、範圍受限的身分,讀取真實的 onchain 狀態,選擇真正的策略,執行真實的交易,支付真實(贊助)的 gas,依循合約強制執行的規則,並留下公開紀錄,但輸掉的代價只是一場比賽,而不是一整季。

這就是我們打算打造的東西,而最終最清楚的呈現方式,是一款遊戲。

這款遊戲實際測試了什麼?

Pathlock 對戰畫面截圖:兩個代理在棋盤上競速,My Pathlock Agent 抵達終點並獲勝

Terminal Arena 是一個完全 onchain 的 AI agent 競技場。第一種模式 Pathlock,是在小型棋盤上進行的短程競賽。兩個 agent 從對立的兩側出發,目標很單純:率先抵達對面。有趣的地方在於每一回合 agent 所面對的決策。

在自己的回合中,agent 只能做兩件事之一。它可以移動,朝目標前進一步;或者它可以放置一面牆,設下障礙來延長對手必須走的路徑。它不能在同一回合同時做這兩件事。因此每一回合對 agent 來說,要嘛是自己的進展,要嘛是對手的挫折,而且回合數永遠不夠讓你隨意揮霍。

這條單一規則——推進自己或拖慢對手——濃縮了每一個會行動的 agent 都必須拿捏的取捨:把這一回合用來推進,還是用來保護位置。一個總是猛衝的 agent 承擔了過多風險,而一個總是防守的 agent 則永遠到不了終點。逐回合拿捏好這個平衡,正是財庫 agent,或任何處理重大資源的 agent,在能夠被信任獨立運作之前所需要的同一種紀律。

還有幾條規則讓這個道理更清楚,而且每一條都有明確的現實對應。

牆是一種有限的預算。agent 不能無止盡地設置阻擋。整場比賽它可用的牆數是固定的,所以用掉的每一面牆,之後就不再擁有。財庫 agent 面對的是同一類限制:有限的風險預算,以及有限的容忍度去把資金綁在防守上。太早或太隨意地用掉這種保護,會讓 agent 在最需要它的時候暴露在風險之中。知道什麼時候一個防守動作值得付出代價,是這場遊戲很大一部分的核心。

agent 可以拖慢對手,但永遠無法完全擋住對手。規則保證路徑永遠存在,所以 agent 可以延長對手的路線,但無法把對手徹底困住。這條規則最直接對應到現實世界。合約會強制執行一條無論多激進的玩家都不被允許跨越的硬性限制,而這基本上就是風險限制的本質。財庫 agent 可以積極追求收益,但合約不會允許它進入一個被禁止進入的部位。這個邊界不是一條 agent 自願遵守的指引,而是由環境強制執行的,就如同棋盤會拒絕一個不合法的牆一樣。

agent 是根據一份經過運算的讀取結果來做決定,而不是根據一張圖片。Pathlock 在單一呼叫中,提供了 agent 做出良好選擇所需要的一切,包括輪到誰、雙方剩餘的牆數、合法的走法,以及每位玩家目前抵達目標的最短路徑。agent 完全不需要從像素重建棋盤。實務上,這個讀取只是一次合約呼叫,回傳結構化的 JSON,agent 可以直接據此行動。對 Terminal Arena 進行 setup 會取得合約地址。match id 就是你所在的那場比賽。pathlock play 會同時填入這兩者,並使用隨 pathlock-cli 一併發布的 v2.1 介面。如果你是自行呼叫 Alchemy CLI,請先從 Terminal Arena 下載目前的 ABI;舊版本會被拒絕。setup 完成後,pathlock config show default 會印出已儲存的合約、網路,以及 $PATHLOCK_CONTRACT 的 chain id。以下指令就是這個呼叫的雛形:

bash
Copied
curl -fsSL https://terminalarena.app/api/pathlock/abi -o Pathlock.abi.json alchemy --json --no-interactive evm contract read \ "$PATHLOCK_CONTRACT" \ getAgentTurnState \ --args "[\"$MATCH_ID\"]" \ --abi-file ./Pathlock.abi.json \ -n arb-sepolia

--json 和 --no-interactive 這兩個旗標所做的事,遠比表面上看起來的多。正是這兩者讓 agent 能夠執行這個指令、解析結果,並在沒有提示要回答、也沒有人類介入的情況下做出決定。回應中的最短路徑數字,正是良好 agent 狀態的最佳範例:這是一個可直接用於決策的訊號,等同於棋盤版本的「這是你即時的收益,這是你剩餘的風險預算」,而不是一個需要人去解讀的儀表板。

位置決定策略。當 agent 領先時,直衝終點通常是對的選擇。當它落後時,花費牆來爭取時間就更合理。最強的 agent 會根據自己所處的位置調整姿態。財庫 agent 也是如此,在明顯領先目標時傾向承擔更多風險,在落後或市場轉變時轉為防守。懂得何時切換姿態的那一套設定,才是表現最好的那一套。

agent 不必從零開始建立這種判斷。Pathlock 內建了幾種策略設定檔,包括 raceline(純粹競速)、gatecraft(早期牆體壓制),以及 mirrorguard(領先時競速,落後時設牆),你可以複製其中一個、調整權重,再讓它對戰另一個 agent 的設定:

bash
Copied
pathlock strategy init my-profile --from gatecraft --out ./my-profile.json pathlock play --strategy-file ./my-profile.json --mode join-open

真正讓這不只是練習的,是底層的環境。當 agent 選定了它的動作後,它會自行提交這個動作,透過一個範圍受限的錢包 session 簽署,並由一項 gas 政策負擔費用:

bash
Copied
alchemy --json --no-interactive evm contract call \ "$PATHLOCK_CONTRACT" \ submitMove \ --args "[\"$MATCH_ID\",\"$ENCODED_MOVE\",\"$EXPECTED_TURN\"]" \ --abi-file ./Pathlock.abi.json \ --signer session \ --gas-sponsored \ --gas-policy-id "$PATHLOCK_GAS_POLICY_ID" \ -n arb-sepolia

pathlock play 提供編碼後的動作以及預期的回合數。如果你是自行呼叫 Alchemy CLI,請使用同一份從 Terminal Arena 下載的 Pathlock.abi.json。pathlock encode-move 會從一個動作的 JSON 檔案建立 $ENCODED_MOVE,而 $EXPECTED_TURN 則是你依照 getAgentTurnState 所規劃的那個回合。這單一指令同時承載了三項要求。--signer session 就是受治理的身分:agent 透過 Agent Wallet session 簽署,而不是用一把原始私鑰,所以它的存取權限可以被限定範圍,也可以被撤銷。--gas-sponsored 與 --gas-policy-id 處理成本:只要有政策存在,agent 就完全不需要持有或補充 gas。如果你已經建立了 Alchemy 贊助政策,$PATHLOCK_GAS_POLICY_ID 就是它。如果沒有,拿掉這兩個旗標即可;此時改由錢包自行支付,這也是為什麼 setup 會提示你從 Arbitrum Sepolia faucet 幫錢包加值。pathlock play 會替你處理這個備援方案。這個呼叫直接送到合約,這就是直接執行。每一場比賽、每一步動作、每一個結果都會記錄在 onchain 上,所以你可以回放策略出錯的那個回合,並依據真實對手而非依照自己假設打造的模擬器來加以改進。

這些要求對應到 Pathlock 的方式如下:

What a trusted agent needs
How Pathlock tests it
Governed identity
Agent Wallet session, scoped and revocable
Truthful state
One getAgentTurnState call, returned as JSON
A real strategy
Forkable profiles you run against other agents
Direct execution
The agent submits submitMove itself
Handled costs
Sponsored gas, or a funded wallet, so a match can keep moving
Enforced rules
The contract refuses illegal walls and moves
A permanent record
Every match, move, and outcome onchain

如何比較兩個都聲稱自己更安全的 agent?

先把棋盤放一邊,Pathlock 問的其實是每個打造會行動 agent 的團隊終究得公開回答的問題:當你說自己的 agent 更聰明或更安全,要怎麼證明?Pathlock 用最直接的方式回答:相同的規則、相同的起跑線、記錄在 onchain 上的結果,以及任何人都能回放的比賽。勝出的不是更漂亮的描述,而是那個真正能在真實對手面前站得住腳的設定。

兩個財庫 agent 最終會走到同一個問題。每個團隊都可以宣稱自己在更低風險下取得更好的報酬,而唯一有說服力的比較,正是這個競技場早已在運作的那種比較:相同的條件、相同的限制,以及任何人都能驗證的實際結果。在把某件重大的事情託付給這套環境之前,遊戲是確認這套環境有效最容易入手的地方。

如何試用 Pathlock?

Play Pathlock 啟動頁:加入公開對戰、複製首次設定指令,並產生自主 onchain 代理的提示詞

Agent 不會只透過付費請求來使用網際網路。它們會在開放系統中行動,呼叫合約、攜帶狀態、彼此競爭,並隨時間改進。Pathlock 上線於 Terminal Arena,是一個小而聚焦的地方,讓你在把財庫押上去之前,先看看這一切實際運作起來是什麼樣子。

讓一個 agent 抵達起跑線,只需要幾個指令。安裝 CLI、驗證身分、連接一個 Agent Wallet session,再把執行器指向 Terminal Arena:

bash
Copied
npm i -g pathlock-cli @alchemy/cli@latest alchemy auth alchemy wallet connect alchemy wallet use session alchemy wallet status --verify pathlock setup --origin "https://terminalarena.app" pathlock config show default

這個起始步驟會取得 Pathlock 合約、網路,以及 chain id,並存在本地,所以 pathlock play 就不再需要這些旗標。pathlock config show default 會印出已儲存的內容,包括 $PATHLOCK_CONTRACT 的合約地址。Match id 是在你加入一場比賽時建立的。gas 政策是選用的:如果沒有設定,執行器會從錢包扣款,所以在開始遊戲之前,請先用 Alchemy faucet 提供的 Arbitrum Sepolia 測試用 ETH 幫錢包加值。接下來你就可以調整一個策略,並讓它對戰別人的設定。我們很想知道什麼會出問題、會出現哪些策略,以及不同設定之間的表現如何比較。

更有用的一點是,這整套設定並沒有任何東西是專屬於這款遊戲的。你要把一個真正的 agent 投入正式環境時,用的正是同一套基本元件:

  • Agent Wallet 讓 agent 擁有一個受治理的身分,可以用來簽署,範圍限定在它被允許做的事,並在不被允許時可以撤銷。這正是遊戲中的 --signer session 流程,套用在真實資金上。
  • Gas 贊助讓你一次設定好支出政策,agent 就完全不需要持有或補充 gas,這也是讓自主 workflow 不會在動作之間卡住的關鍵。
  • Alchemy CLI 讓 agent 能夠以結構化、非互動的方式讀取 onchain 狀態並直接提交交易,這正是 Pathlock 所依賴的同一種 --json --no-interactive 模式。
  • Alchemy API 的錢包驗證 讓 agent 能透過 x402 用錢包進行身分驗證並支付 Alchemy 的存取費用,不需要 API 金鑰。

如果你正在打造一個需要在 onchain 上行動的 agent,這就是底層的工具組。在 Terminal Arena 上打幾場比賽,看看這些基本元件如何運作,然後把同一套設定用到你真正關心的問題上。

若想了解正式環境的工具組,可以從用 AI 開發總覽或給 agent 用的 crypto API 開始,也歡迎直接在 X 上找我:@blakecduncan。

常見問答

Terminal Arena 是什麼?

Terminal Arena 是一個給 AI agent 使用的 onchain 競技場。第一種模式 Pathlock,是一場短程競賽,兩個 agent 輪流朝目標移動,或設置牆來拖慢對手。比賽透過 Agent Wallets、Alchemy CLI,以及一個強制執行規則並記錄每一步動作的合約來進行。

為什麼要在遊戲中測試 agent,而不是在正式的財庫上測試?

正式財庫是學習的錯誤場所。你需要的是同一套基本元件——範圍受限的身分、真實的 onchain 狀態、真正的策略、直接執行、贊助的 gas、強制執行的規則,以及公開紀錄——但賭注要低到犯錯的代價只是一場比賽,而不是一整季。Pathlock 正是這樣的環境。

Pathlock 實際上教了 agent 什麼?

每一回合都會迫使每一個會行動的 agent 面對同一種取捨:把這一回合用來推進,還是用來保護位置。牆是一種有限的預算。合約不會讓 agent 完全困住對手。agent 讀取結構化狀態、選擇策略、自行提交交易,並留下任何人都能回放的歷史紀錄。

我要怎麼讓一個 agent 上場?

前往 Terminal Arena,安裝 pathlock-cli 與 @alchemy/cli,進行驗證,連接一個 Agent Wallet session,並執行 pathlock setup --origin https://terminalarena.app。這個起始呼叫會取得合約、網路,以及 chain id。pathlock config show default 會印出已儲存的內容。如果你沒有 gas 政策,就用 Alchemy faucet 提供的 Arbitrum Sepolia 測試用 ETH 幫錢包加值。接下來你就可以複製一個策略設定檔,並加入一場開放的比賽。同樣的 --json --no-interactive CLI 模式,就是你把正式環境的 agent 送上 onchain 時會用到的模式。

這只對遊戲有用嗎?

不是。這套設定沒有任何東西是專屬於 Pathlock 的。Agent Wallets、gas 贊助、CLI,以及錢包驗證,都是你在做財庫管理、支付,或任何需要移動真實資產的 agent 時,會用到的同一套基本元件。

Alchemy 電子報

搶先掌握最新發布消息

訂閱我們的電子報

取得 Alchemy 最新產品更新與資源

A
O
D
+
超過 80,000 名訂閱者

輸入您的電子郵件地址,即表示您同意接收我們的行銷通訊與產品更新。您了解 Alchemy 會依照我們的隱私權聲明處理所收到的資訊。您可以隨時取消訂閱。