# Agent 框架接入配方：ElizaOS、viem、wagmi、Coinbase AgentKit

> 原文地址: https://docs.blockvectra.com/zh/guides/agent-frameworks/

自主 AI Agent 与 Web3 应用开发框架通过 JSON-RPC 与 WebSocket 传输层与区块链网络交互。BlockVectra 提供携带 API key 的专用端点、支持公开只读方法的免 key 端点，以及用于工具发现的模型上下文协议（MCP）服务。

## ElizaOS

* 官方文档：[elizaOS 文档](https://elizaos.github.io/eliza/)
* 官方仓库：[elizaos/eliza](https://github.com/elizaos/eliza)

在 elizaOS 中，EVM 链上交互由 `@elizaos/plugin-evm` 插件支持。该插件通过环境变量读取 RPC 端点，变量名遵循 `ETHEREUM_PROVIDER_<NETWORK>` 命名规则，或使用通用的 `EVM_PROVIDER_URL` 变量。

在 `.env` 文件中配置钱包私钥与 RPC 端点：

```bash
# 用于交易签名的 EVM 钱包私钥
export EVM_PRIVATE_KEY=0x...

# 携带 API key 的专用 RPC 端点
export ETHEREUM_PROVIDER_ETHEREUM=https://api.blockvectra.com/v1/eth_mainnet/${BLOCKVECTRA_API_KEY}
export ETHEREUM_PROVIDER_BASE=https://api.blockvectra.com/v1/base_mainnet/${BLOCKVECTRA_API_KEY}

# 免 key 的公开 RPC 端点
# export ETHEREUM_PROVIDER_ETHEREUM=https://api.blockvectra.com/v1/eth_mainnet/public
```

在 Agent 角色定义文件中声明 `@elizaos/plugin-evm`：

```json
{
  "name": "DeFiAgent",
  "plugins": ["@elizaos/plugin-evm"]
}
```

## viem

* 官方文档：[viem 文档](https://viem.sh/docs/clients/public.html)
* 传输层参考：[viem HTTP Transport](https://viem.sh/docs/clients/transports/http.html) 与 [viem WebSocket Transport](https://viem.sh/docs/clients/transports/websocket.html)
* 官方仓库：[wevm/viem](https://github.com/wevm/viem)

在 viem 中，通过 `http()` 或 `webSocket()` 配置客户端传输层。

### 携带 API key 的 HTTP 传输

```typescript
import { createPublicClient, http } from "viem";
import { mainnet } from "viem/chains";

export const client = createPublicClient({
  chain: mainnet,
  transport: http(`https://api.blockvectra.com/v1/eth_mainnet/${process.env.BLOCKVECTRA_API_KEY}`),
});
```

### 免 key 的公开端点 HTTP 传输

在允许的公开只读方法上免 key 调用：

```typescript
import { createPublicClient, http } from "viem";
import { mainnet } from "viem/chains";

export const publicClient = createPublicClient({
  chain: mainnet,
  transport: http("https://api.blockvectra.com/v1/eth_mainnet/public"),
});
```

### WebSocket 传输

WebSocket 传输（`webSocket(...)`）用于 `GET /v1/chains` 中声明 `ws: true` 的链，例如 Robinhood Chain 上（`robinhood_mainnet`）：

```typescript
import { createPublicClient, webSocket } from "viem";

export const wsClient = createPublicClient({
  transport: webSocket(`wss://api.blockvectra.com/v1/robinhood_mainnet/${process.env.BLOCKVECTRA_API_KEY}`),
});
```

有关订阅类型与连接详情，请参阅 [WebSocket 订阅指南](https://docs.blockvectra.com/zh/guides/websocket-subscriptions/)。

## wagmi

* 官方文档：[wagmi createConfig](https://wagmi.sh/core/api/createConfig) 与 [wagmi HTTP Transport](https://wagmi.sh/core/api/transports/http)
* 官方仓库：[wevm/wagmi](https://github.com/wevm/wagmi)

在 wagmi 中，将 BlockVectra RPC 地址传入 `createConfig` 的 `transports` 映射中。

### 携带 API key 的配置

```typescript
import { createConfig, http } from "wagmi";
import { mainnet } from "wagmi/chains";

export const config = createConfig({
  chains: [mainnet],
  transports: {
    [mainnet.id]: http(`https://api.blockvectra.com/v1/eth_mainnet/${process.env.BLOCKVECTRA_API_KEY}`),
  },
});
```

### 免 key 公开端点的配置

```typescript
import { createConfig, http } from "wagmi";
import { mainnet } from "wagmi/chains";

export const config = createConfig({
  chains: [mainnet],
  transports: {
    [mainnet.id]: http("https://api.blockvectra.com/v1/eth_mainnet/public"),
  },
});
```

## Coinbase AgentKit

* 官方文档：[Coinbase AgentKit 文档](https://docs.cdp.coinbase.com/agentkit/docs/welcome)
* 官方仓库：[coinbase/agentkit](https://github.com/coinbase/agentkit)

Coinbase AgentKit 通过钱包 Provider（Wallet Provider）执行链上动作。在 TypeScript 中，`@coinbase/agentkit` 提供的 `ViemWalletProvider` 包装标准的 viem `WalletClient`，可将交易广播与 RPC 查询定向至 BlockVectra 端点。

### 使用 ViemWalletProvider 配置

```typescript
import { AgentKit, ViemWalletProvider } from "@coinbase/agentkit";
import { createWalletClient, http } from "viem";
import { privateKeyToAccount } from "viem/accounts";
import { mainnet } from "viem/chains";

const account = privateKeyToAccount(process.env.WALLET_PRIVATE_KEY as `0x${string}`);

const client = createWalletClient({
  account,
  chain: mainnet,
  transport: http(`https://api.blockvectra.com/v1/eth_mainnet/${process.env.BLOCKVECTRA_API_KEY}`),
});

const walletProvider = new ViemWalletProvider(client);

export const agentKit = await AgentKit.from({
  walletProvider,
});
```

对于调用受支持只读方法的场景，可直接配置 `http("https://api.blockvectra.com/v1/eth_mainnet/public")`。

## 远程 MCP

如果你的 Agent 通过模型上下文协议（Model Context Protocol，Streamable HTTP MCP）接入，可以直接连接 BlockVectra MCP 服务端点：

`https://docs.blockvectra.com/mcp`

针对 Claude Code、Cursor、VS Code、Codex、Gemini CLI、OpenAI Responses API 及 Windsurf 等客户端的配置说明，请参阅 [接入 AI Agent 指南中的「在各客户端中接入」](https://docs.blockvectra.com/zh/guides/ai-agents/#在各客户端中接入)。

## 下一步

* [接入 AI Agent](https://docs.blockvectra.com/zh/guides/ai-agents/)：通过 MCP、llms.txt 和 OpenAPI 自动发现接口。
* 参考[程序化开户指南](https://docs.blockvectra.com/zh/guides/programmatic-signup/)通过钱包签名自主开户建 key，或[登录控制台](https://console.blockvectra.com/zh/login/?next=%2Fzh%2Fkeys%2F)创建 key。
* [计费与结算规则](https://docs.blockvectra.com/zh/guides/billing-rules/)：查看计算单元（CU）计量、速率限额与不计费错误。
