AI_GATEWAY_API_KEY,或任意 AI SDK 支持的直连 KeyNode 版本不够会直接失败。我见过有人用 Node 20 跑 eve init,卡在引擎检查。先 node -v,低于 24 就用 nvm 切:nvm install 24 && nvm use 24。
# 创建项目,同时装依赖、初始化 Git
npx eve@latest init my-agent
cd my-agent
预期结果:my-agent/ 目录生成,agent/ 里已有 instructions.md 和 agent.ts,还带一个内置 Eve channel。
默认模型是 anthropic/claude-sonnet-5,走 Vercel AI Gateway。想换模型或直连别家,改 agent/agent.ts 即可。
工具就是一个 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,不在沙箱里。敏感操作要自己加保护。
方式一,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 一下模型入口,能省半天排查。