---
title: "Terminal Arena：让智能体在动用真实资金前先学会行动"
description: "支付只是让智能体进入系统。Terminal Arena 通过限定权限的钱包、真实的链上状态和强制执行的规则，测试智能体是否可以被信任去行动。"
---

# Terminal Arena：让智能体在动用真实资金前先学会行动

<ImageBlock
  src="https://media.alchemy.com/teach-agents.png"
  alt="Terminal Arena：在 agent 操作真实资金之前，教它们如何在链上行动"
  width={1920}
  height={900}
  priority
/>

现在几乎所有关于链上智能体的讨论都在谈支付。[x402](https://www.alchemy.com/blog/how-x402-brings-real-time-crypto-payments-to-the-web) 把老旧的 HTTP 402 "Payment Required" 状态码变成了一个真正可用的流程：智能体遇到付费墙，签署支付，重试，然后获得访问权限。来自 Stripe 和 Tempo 的 [MPP](https://stripe.com/blog/machine-payments-protocol) 走得更远，支持智能体的程序化支付、微交易和定期扣费。这两者都不错，解决的也是同一个问题：智能体如何为访问付费。

支付只是第一步。一旦智能体能够付费通过付费墙，更难的问题才刚刚出现：它能否被信任自主行动、遵守限制，并产出可靠的结果？

一个具体的例子会有帮助。设想一个自主的资金管理智能体，这类智能体需要操作真实资产。它管理一家公司的稳定币储备，在借贷市场之间调配资金以获取收益，同时保持在风险预算之内，且每一步操作都无需人工审批。为数据源付费只是它工作中最简单的部分。更难的问题是：什么条件能让团队放心让它自主管理真金白银？

这个问题是有具体答案的，因为这个资金管理智能体只是一个更大变革的早期案例。智能体驱动的商业活动正在快速扩张，[麦肯锡的预测](https://www.mckinsey.com/capabilities/quantumblack/our-insights/the-agentic-commerce-opportunity-how-ai-agents-are-ushering-in-a-new-era-for-consumers-and-merchants)显示到 2030 年由智能体编排的商业规模将达到 3 万亿至 5 万亿美元。行业已经清楚哪个环节会成为瓶颈：在[埃森哲的研究](https://bankingblog.accenture.com/agentic-payments-commerce)中，87% 的支付行业负责人表示信任是智能体支付面临的最大障碍。问题不在于智能体能否付款，而在于什么条件能让放手让它行动变得安全。

我们希望得到一个可以验证的答案，于是我们做了一个：一款小型的链上游戏 [Terminal Arena](https://terminalarena.app/)，用来在一场对局的赌注规模下检验这些信任要求，而不是在真实的资金池上。

## 要信任一个会主动行动的智能体，需要具备什么？

<ImageBlock
  src="https://media.alchemy.com/agent-2.png"
  alt="关于如何信任一个会行动的 agent 的示意图：行动前的受限身份和实时状态，行动时的策略、执行和已覆盖的费用，行动后由合约强制执行的规则和公开记录"
  width={3840}
  height={2160}
/>

先从**钱包**说起。大多数团队不会愿意把整个资金库的密钥交给一个自主智能体，所以智能体需要拥有自己的身份。这意味着一个权限受限的钱包，例如"在这三个已批准的市场中，最多可调配这么多资金进行再平衡"，经人工批准，并且在出问题时可以撤销。目标是一个受治理的身份，而不是一个放在 `.env` 文件里的私钥。

接下来，**智能体**需要知道什么是真实的。如果一个智能体通过阅读一个为人设计的仪表盘来推断利率，那它所依赖的信息源是脆弱的。它需要的是真实状态，包括余额、实时利率和剩余风险预算，以结构化事实的形式提供，为决策而生，而不是为人眼浏览而设计的网页。

然后它必须**做出选择**。是追求更高收益，还是保住本金？现在就行动，还是等利率稳定下来？这些权重构成了智能体的策略，也是决定一个资金管理智能体能否被团队信赖的关键所在。

接着它必须**执行**。智能体自行提交交易，无需为每一步暂停等待人工确认，因为一个每次操作都要等人批准的智能体算不上真正自主。它还必须承担执行成本。如果因为没人补充 gas 而导致再平衡失败，那这个系统就不可靠。一个在安静的周末就停摆的自主资金管理系统，不是团队能放心运行的系统。

最后，也是最常决定一个智能体能否真正上线的要求：它必须能够证明自己遵守了规则。"相信我，我遵守了风险限制"这种说法通常无法说服董事会、审计师或监管机构。智能体需要在一个规则被强制执行、每个操作都被记录下来的环境中运行，这样合规就是任何人都能验证的事实，而不是智能体自己单方面的声称。

最后这条要求指向了一些具体的东西。要让智能体证明自己行为合规，规则就不能只存在于智能体内部，记录也不能存放在只有作者才能读取的日志文件里。规则需要存在于一个中立且能强制执行的地方，记录需要公开可查。公开区块链是少数能同时提供这两者的环境之一。这种做法很实际：它让一个自主智能体可以行动，同时对那些原本没有理由信任它的人保持可问责性。无论智能体的意图如何，合约都会强制执行限制，而它所做的一切的完整历史，任何人都可以审计。

综合来看，这七项需求（受治理的身份、真实的状态、真正的策略、直接执行、妥善处理的成本、被强制执行的规则、以及永久的记录）指向同一件事：一个在链上运行的智能体，其行为可见且可验证。

## 为什么不能在真实的工作流中学习这些？

以上就是完整的规格要求。难点在于，你无法用真实的资金去开发和验证它。几乎没有团队会愿意把一个未经测试的智能体连接到真实的资金库，去看它的策略是否合理、在压力下能否守住限制。这种情况下，风险和学习需求正好是反过来的：最需要观察智能体行动、失败并证明其行为合规的场景，恰恰也是犯错代价最高的场景。

你需要的是一个原语完全相同、但赌注很低的环境。在这个环境里，智能体拥有真实的受限身份，读取真实的链上状态，选择真实的策略，执行真实的交易，支付真实（但由他人赞助）的 gas，遵守由合约强制执行的规则，并留下公开记录，但一次失败付出的代价是输掉一局比赛，而不是一个季度的损失。

这正是我们着手要构建的东西，而最清晰的实现形式，最终变成了一款游戏。

## 这款游戏实际测试的是什么？

<ImageBlock
  src="https://media.alchemy.com/pathlock.png"
  alt="Pathlock 对战截图：两个 agent 在棋盘上竞速，My Pathlock Agent 到达终点并获胜"
  width={1410}
  height={880}
/>

[Terminal Arena](https://terminalarena.app/) 是一个完全链上运行的 AI 智能体竞技场。第一种模式 Pathlock，是在一个小型棋盘上进行的短程竞速。两个智能体从对面两侧出发，目标很简单：先到达对面一侧的一方获胜。有意思的地方在于每个智能体每一回合都要面对的决策。

在自己的回合中，智能体只能做两件事中的一件。它可以移动，朝目标前进一步；也可以放置一堵墙，设置障碍延长对手需要走的路径。它不能在同一回合内两者都做。因此，每一回合要么是自己的进展，要么是给对手制造的挫折，而回合数从来都不够挥霍。

这条简单的规则——推进自己，或拖慢对手——正好压缩了每一个会主动行动的智能体都必须权衡的取舍：用一回合去推进，还是用它去保护自己的位置。总是一味冲刺的智能体承担了过多风险，而总是一味防守的智能体则永远无法抵达终点。逐回合把握好这个平衡，正是资金管理智能体，或者任何处理重要资源的智能体，在被信任独立运行之前必须具备的能力。

还有几条规则强化了这一点，每一条都有明确的现实对应。

墙是一种有限的预算。智能体不能无限阻挡对手。它在整场比赛中只有固定数量的墙，用掉一堵，之后就少一堵可用。资金管理智能体也面临同样性质的约束：有限的风险预算，以及对把资金锁定在防御性操作上的有限容忍度。过早或不加节制地用掉这种保护，会在最需要它的时候让智能体暴露风险。知道什么时候一次防守性操作值得付出这个代价，正是这个游戏的核心之一。

智能体可以拖慢对手，但永远无法完全阻断它。规则保证路径始终存在，因此智能体可以延长对手的路线，但无法把对手彻底困死。这条规则最直接地对应了现实世界。合约强制执行一条硬性限制，无论玩家多么激进都不能越过——这本质上就是风险限额。资金管理智能体可以积极追求收益，但合约不会允许它进入被禁止的头寸。这条边界不是智能体自愿遵守的准则，而是由环境强制执行的，就像棋盘会拒绝一次不合法的放墙操作一样。

智能体是根据一次计算得到的读数来做决策的，而不是根据一张图片。Pathlock 在一次调用中提供了智能体做出良好决策所需的一切，包括轮到谁走、双方剩余的墙数、合法的走法，以及每个玩家到目标的当前最短路径。智能体永远不需要从像素重建棋盘。实际上，这次读取是一次合约调用，以结构化 JSON 返回，智能体可以直接据此行动。针对 Terminal Arena 的初始化过程会获取合约地址。match id 就是你所在的对局。`pathlock play` 会自动填好这两项，并使用随 `pathlock-cli` 发布的 v2.1 接口。如果你自己直接调用 Alchemy CLI，先从 Terminal Arena 下载最新的 ABI；旧版本会被拒绝。初始化完成后，`pathlock config show default` 会打印出为 `$PATHLOCK_CONTRACT` 保存的合约、网络和链 ID。下面的命令展示了这次调用的形式：

<CodeSnippet
  language="bash"
  code={`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` 这两个参数的作用比看起来要大得多。正是它们让智能体能够运行命令、解析结果，并在无需人工提示或介入的情况下做出决策。返回结果中的最短路径数值，正是一个良好智能体状态的典型例子：它是一个可直接用于决策的信号，相当于游戏棋盘版本的"这是你当前的实时收益，这是你剩余的风险预算"，而不是一个需要人去解读的仪表盘。

局面决定策略。当一个智能体处于领先位置时，全力冲刺通常是正确的选择。当它落后时，花费墙来争取时间会更合理。最强的智能体会根据自身所处局面调整策略。资金管理智能体也是如此：当它明显领先目标时会偏向承担风险，当它落后或市场发生变化时会转向防御。懂得何时切换的设置，才是表现最好的那一个。

智能体不必从零开始建立这种判断。Pathlock 内置了多种策略配置，包括 `raceline`（纯冲刺）、`gatecraft`（早期设墙施压）和 `mirrorguard`（领先时冲刺、落后时设墙），你可以 fork 其中一个，调整权重，并让它与另一个智能体的配置对战：

<CodeSnippet
  language="bash"
  code={`pathlock strategy init my-profile --from gatecraft --out ./my-profile.json
pathlock play --strategy-file ./my-profile.json --mode join-open`}
/>

真正让这不只是练习的是背后的环境。当智能体选定了自己的走法后,它会自行提交这一步,通过一个受限的钱包会话签名,并由 gas 策略承担费用:

<CodeSnippet
  language="bash"
  code={`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 Wallet](https://www.alchemy.com/docs/agent-wallets) 会话签名，而不是使用原始私钥，因此它的权限可以被限定和撤销。`--gas-sponsored` 和 `--gas-policy-id` 处理成本问题：有了策略，智能体就永远不需要持有或补充 gas。`$PATHLOCK_GAS_POLICY_ID` 是一个 Alchemy 赞助策略，如果你已经创建了的话。如果没有，去掉这两个参数即可；这样钱包就会自行支付，这也是为什么初始化过程会提示你从 Arbitrum Sepolia 水龙头为钱包充值。`pathlock play` 会为你处理这种回退情况。调用直接发往合约，这就是直接执行。每一场对局、每一步走法和每一个结果都会记录在链上，因此你可以回放策略出错的那一回合，并针对真实对手而非按照自己假设搭建的模拟器进行改进。

这些要求与 Pathlock 的对应关系如下：

<EmbeddedTable
  table={{
    columns: [
      { key: "need", width: 220, title: "What a trusted agent needs", dataType: "object" },
      { key: "pathlock", width: 320, title: "How Pathlock tests it", dataType: "object" },
    ],
    data: [
      {
        need: { title: "Governed identity", tooltip: "", icon: "" },
        pathlock: {
          title: "Agent Wallet session, scoped and revocable",
          tooltip: "",
          icon: "",
        },
        id: 0,
      },
      {
        need: { title: "Truthful state", tooltip: "", icon: "" },
        pathlock: {
          title: "One getAgentTurnState call, returned as JSON",
          tooltip: "",
          icon: "",
        },
        id: 1,
      },
      {
        need: { title: "A real strategy", tooltip: "", icon: "" },
        pathlock: {
          title: "Forkable profiles you run against other agents",
          tooltip: "",
          icon: "",
        },
        id: 2,
      },
      {
        need: { title: "Direct execution", tooltip: "", icon: "" },
        pathlock: {
          title: "The agent submits submitMove itself",
          tooltip: "",
          icon: "",
        },
        id: 3,
      },
      {
        need: { title: "Handled costs", tooltip: "", icon: "" },
        pathlock: {
          title: "Sponsored gas, or a funded wallet, so a match can keep moving",
          tooltip: "",
          icon: "",
        },
        id: 4,
      },
      {
        need: { title: "Enforced rules", tooltip: "", icon: "" },
        pathlock: {
          title: "The contract refuses illegal walls and moves",
          tooltip: "",
          icon: "",
        },
        id: 5,
      },
      {
        need: { title: "A permanent record", tooltip: "", icon: "" },
        pathlock: {
          title: "Every match, move, and outcome onchain",
          tooltip: "",
          icon: "",
        },
        id: 6,
      },
    ],
  }}
/>

## 如何比较那些自称更安全的智能体？

抛开棋盘不谈,Pathlock 提出的其实是每一个开发会主动行动的智能体的团队,最终都必须在公开场合回答的问题:当你说自己的智能体更聪明或更安全时,你怎么证明？Pathlock 用最直接的方式回答了这个问题:相同的规则,相同的起点,结果记录在链上,任何人都可以回放对局。最终胜出的不是更好的说辞,而是能在真实对手面前站得住脚的配置。

两个资金管理智能体走到同一个问题面前。每个团队都可以声称自己在更低风险下获得了更高回报,而唯一有说服力的比较方式,正是这个竞技场已经在运行的那种方式:相同的条件、相同的约束,以及任何人都能验证的实际结果。在把这套环境用于真正重要的事情之前,一款游戏是最容易验证它是否可行的场所。

## 如何试用 Pathlock？

<ImageBlock
  src="https://media.alchemy.com/pathlock-2.png"
  alt="Play Pathlock launchpad：加入一场公开对战，复制初次设置命令，并为自主链上 agent 生成一条 prompt"
  width={1435}
  height={873}
/>

智能体不会仅仅通过付费请求来消费互联网内容。它们会在开放系统中行动：调用合约、携带状态、相互竞争，并随时间不断改进。上线于 [Terminal Arena](https://terminalarena.app/) 的 Pathlock，是一个小而聚焦的地方，可以在把资金库押上去之前，先看看这种行为究竟是什么样子。

让一个智能体走到起跑线，只需要几条命令。安装 CLI，完成身份认证，连接一个 Agent Wallet 会话，并把运行程序指向 Terminal Arena：

<CodeSnippet
  language="bash"
  code={`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 的合约、网络和链 ID 并保存在本地，因此 `pathlock play` 不再需要这些参数。`pathlock config show default` 会打印出已保存的内容，包括 `$PATHLOCK_CONTRACT` 对应的合约地址。Match id 是在你加入对局时创建的。gas 策略是可选的：如果没有设置，运行程序会从钱包中支付费用，所以开始游戏前，请先用 Arbitrum Sepolia 测试 ETH 从 [Alchemy faucet](https://www.alchemy.com/faucets/arbitrum-sepolia) 为钱包充值。之后你就可以调整策略，并让它与其他人的策略对战。我们很想知道哪里会出问题、会涌现出哪些策略，以及不同的配置之间表现如何。

更有价值的一点是，这套设置中没有任何东西是专属于这个游戏的。你用来[将真正的智能体投入生产环境](https://www.alchemy.com/blog/how-to-build-onchain-agents)所需的，正是同一套基础组件：

- Agent Wallets 为智能体提供一个受治理的身份，供其签名使用，权限限定在它被允许做的事情范围内，并且在需要时可以撤销。这正是游戏中的 `--signer session` 流程，用在真实资金上。
- Gas 赞助让你可以一次性设置一个消费策略，使智能体永远不需要持有或补充 gas，这正是防止自主工作流在各操作之间卡住的关键。
- [Alchemy CLI](https://www.alchemy.com/docs/alchemy-cli) 让智能体能够以结构化、非交互的方式读取链上状态并直接提交交易，这正是 Pathlock 所依赖的同一种 `--json --no-interactive` 模式。
- [Alchemy API 的钱包认证](https://www.alchemy.com/docs/alchemy-for-agents) 让智能体可以通过 x402 用钱包完成身份认证并为 Alchemy 的访问付费，而无需 API key。

如果你正在构建一个需要在链上行动的智能体，这就是背后的工具集。[在 Terminal Arena 上打几场比赛](https://terminalarena.app/)，看看这些基础组件如何运作，然后把同一套设置用到你真正关心的问题上。

关于生产环境工具集，可以先看看[使用 AI 构建概览](https://www.alchemy.com/docs/build-with-ai-overview)或[面向智能体的加密 API](https://www.alchemy.com/agents)，也可以直接在 X 上联系我：[@blakecduncan](https://twitter.com/blakecduncan)。

## 常见问题

### 什么是 Terminal Arena？

[Terminal Arena](https://terminalarena.app/) 是一个面向 AI 智能体的链上竞技场。第一种模式 Pathlock，是一场短程竞速，两个智能体轮流选择朝目标移动，或放置一堵墙来拖慢对手。对局通过 [Agent Wallets](https://www.alchemy.com/docs/agent-wallets)、Alchemy CLI 以及一个强制执行规则并记录每一步走法的合约来运行。

### 为什么要在游戏中测试智能体，而不是在真实的资金库上？

真实的资金库不是学习的合适场所。你需要相同的基础组件——受限身份、真实的链上状态、真正的策略、直接执行、赞助的 gas、被强制执行的规则、以及公开记录——但赌注要低到即便出错，代价也只是输掉一场比赛，而不是一个季度的损失。Pathlock 就是这样的环境。

### Pathlock 实际上教会智能体什么？

每一回合都会强制智能体面对一个必须权衡的取舍：用这一回合来推进，还是用它来保护自己的位置。墙是一种有限的预算。合约不会允许智能体把对手完全困死。智能体读取结构化状态，选择一个策略，自行提交交易，并留下任何人都可以回放的历史记录。

### 我该如何让智能体上场？

前往 [Terminal Arena](https://terminalarena.app/)，安装 `pathlock-cli` 和 `@alchemy/cli`，完成身份认证，连接一个 Agent Wallet 会话，然后运行 `pathlock setup --origin https://terminalarena.app`。这条初始化调用会获取合约、网络和链 ID。`pathlock config show default` 会打印出已保存的内容。如果你没有 gas 策略，请用 Arbitrum Sepolia 测试 ETH 从 [Alchemy faucet](https://www.alchemy.com/faucets/arbitrum-sepolia) 为钱包充值。之后你就可以 fork 一个策略配置，并加入一场公开对局。这正是你用来把一个生产环境智能体部署上链所需的同一种 `--json --no-interactive` CLI 模式。

### 这只对游戏有用吗？

不是。这套设置中没有任何东西是专属于 Pathlock 的。Agent Wallets、gas 赞助、CLI 和钱包认证，正是你用于资金管理、支付或任何转移真实资产的智能体时所需要的同一套基础组件。
