Vercel Eve 从入门到精通 §02 ← 目录
Part 1 · 起步

§02 十分钟跑通第一个 Agent

02.1 你需要什么

注意

Node 版本不够会直接失败。我见过有人用 Node 20 跑 eve init,卡在引擎检查。先 node -v,低于 24 就用 nvm 切:nvm install 24 && nvm use 24

02.2 用 eve init 创建项目

# 创建项目,同时装依赖、初始化 Git
npx eve@latest init my-agent
cd my-agent

预期结果:my-agent/ 目录生成,agent/ 里已有 instructions.mdagent.ts,还带一个内置 Eve channel。

默认模型是 anthropic/claude-sonnet-5,走 Vercel AI Gateway。想换模型或直连别家,改 agent/agent.ts 即可。

02.3 加一个工具

工具就是一个 TypeScript 文件。文件名就是工具名,必须 snake_case。

// agent/tools/get_weather.ts
// 文件名 get_weather 直接变成模型看到的工具名
import { defineTool } from "eve/tools";
import { z } from "zod";

export default defineTool({
  description: "Get the current weather for a city.",
  inputSchema: z.object({ city: z.string().min(1) }), // 入参用 zod 约束
  async execute({ city }) {
    return { city, condition: "Sunny", temperatureF: 72 };
  },
});

这里要注意:工具跑在你的应用进程里,带完整 process.env,不在沙箱里。敏感操作要自己加保护。

02.4 两种方式对话

方式一,CLI 聊天:

# 启动本地运行时,打开交互式终端
npm run dev

在终端里输入一句话,你会先看到 get_weather 被调用,再看到结果,最后是回答。

方式二,HTTP 接口(Eve 每个应用都暴露同一套稳定 API):

# 开一个持久会话
curl -X POST http://127.0.0.1:2000/eve/v1/session \
  -H 'content-type: application/json' \
  -d '{"message":"What is the weather in Brooklyn?"}'

返回里有 continuationToken(续聊用)和 x-eve-session-id(流式用)。

# 挂着看流式事件:session.started → actions.requested → action.result → message.completed
curl http://127.0.0.1:2000/eve/v1/session/<sessionId>/stream
标叔的经验

先验证模型入口。

社区里有朋友接入自定义网关,一上来就报错。后来发现是 base URL 或 Key 错了,不是 instructions 的问题。先在 npm run dev 之外单独 ping 一下模型入口,能省半天排查。

→ 第一个 Agent 跑通了。但它到底长什么样?下一章讲核心架构。