Vercel 发布 eve:一个让 AI Agent 开发变简单的框架

工具推荐 1781837054更新

0

Vercel 最新发布了一个 AI Agent 开发框架,叫 eve。

官方给它的定位是:filesystem-first framework for durable AI agents

翻译过来就是,一个以文件系统为核心的、用于构建持久化 AI Agent的框架。

听起来有点绕。我用大白话解释。

它在解决什么问题?现在的 AI Agent 开发,有一个挺烦的地方。

你要是想做一个能用的 Agent,得同时处理很多层的事情。模型怎么调用、工具怎么定义、消息通道怎么接、部署怎么搞、出了问题怎么调试……每一层都有门槛。

结果就是,很多人其实想做 AI Agent,但被这些工程问题挡在门外。

eve 想做的事,就是把这些工程复杂度藏起来,让开发者只关心一件事:你想让 AI 帮你做什么?

怎么实现呢?

它的思路很有意思:用文件系统来构建 Agent

在 eve 里,你的 Agent 就是一个普通的文件夹。文件夹里有什么东西,Agent 就能做什么事。

你可以在这个文件夹里放这些东西:

一个 instructions.md 文件,这是系统提示词,告诉 Agent 它是谁、该怎么做事。

一个 tools/ 目录,里面放各种工具函数,比如查天气的功能、查价格的工具。

一个 skills/ 目录,放一些更长的技能文档。当任务需要执行复杂流程的时候,模型会去加载这些技能。比如你可以放一个"plan_a_trip.md"技能文档,里面写好旅行规划的步骤,Agent 在需要的时候会自己去读。

一个 channels/ 目录,配置 Agent 能接收消息的渠道,Slack、Discord、HTTP 都可以。

一个 schedules/ 目录,设置定时任务,比如每天早上八点给你发一份数据报告。

一个 subagents/ 目录,创建子 Agent,主 Agent 可以把任务委托给更专业的子 Agent 去处理。

还有一个 connections/ 目录,接入外部的 MCP 服务器,给 Agent 增加更多能力。

一个 hooks/ 目录,编写代码响应 Agent 的生命周期事件。消息开始处理的时候、工具调用的时候、流式输出的时候,你都可以插入自己的逻辑。

一个 sandbox/ 目录,提供一个受控的工作区。工具在隔离环境中执行,安全性更高。

一个 lib/ 目录,放一些在多个文件里都会用到的共享代码。

整个 Agent 的结构,就是这么一个文件夹。任何一个开发者打开这个目录,不需要看什么文档,就能大概知道这个 Agent 能做什么。

传统方式下,你的 Agent 能力是散落在各种配置文件、代码逻辑里的,你要读很多文件才能拼出完整的图景。eve 把这个过程倒过来了——文件结构本身就是文档

还有一个细节挺有意思。

在 eve 里,文件的位置就决定了它的身份。比如你创建一个 agent/tools/get_weather.ts 文件,这个工具的名字就自动叫 get_weather,不需要另外再配置什么名字。你把这个文件移到 agent/tools/history/get_weather.ts,那它的名字就变成了 history/get_weather

不需要维护一个注册表,不需要记什么配置。文件在哪里,身份就在哪里

给你看看它长什么样。

用 eve 搭一个天气查询 Agent,你只需要在文件夹里放三个文件。

第一个,agent/instructions.md,就一行字:

你是一个简洁的天气助手。

第二个,agent/tools/get_weather.ts,这是工具文件:

import { defineTool } from "eve/tools";import { z } from "zod";export default defineTool({  description: "查询城市天气",  inputSchema: z.object({ city: z.string().min(1) }),  async execute({ city }) {    return { city, condition: "晴天", temperatureF: 72 };  },});

第三个,agent/agent.ts,指定用哪个模型:

import { defineAgent } from "eve";export default defineAgent({  model: "anthropic/claude-sonnet-4.6",});

然后运行 npm run dev,就跑起来了。

另外,你可能会想:不同渠道来的消息,处理方式应该不一样吧?

eve 的答案是:一样的

不管消息是来自网页、终端、Slack 还是 Discord,eve 内部走的流程是同一个:先把输入转成消息格式,然后附上系统指令、可用工具、历史对话,让模型去处理,最后把结果转成目标平台需要的格式返回。

这意味着什么?

意味着你写的那个天气查询工具,不需要因为接入了 Slack 就改一遍代码。它只关心一件事:输入一个城市名,输出天气数据。至于这个查询是从网页来的还是从 Slack 来的,工具本身不关心。

这个设计让 Agent 可以在不同平台间自由迁移

eve 官方文档里,特别强调了一个词:durable

这个词中文不太好翻译,大概的意思是"持久"、"耐用"。放在 AI Agent 的语境下,它说的是:Agent 的运行不只是一次请求和一次响应那么简单。

具体来说,一个 eve 会话可以做到这些事情:

可以在模型处理的过程中,把中间进度实时流式输出给你看,而不用等全部处理完才返回结果。

可以在执行过程中停下来,等你确认一个操作、或者等你回复一个问题,然后再继续往下走。这个功能叫做 human-in-the-loop,中文一般叫"人在回路"。

可以记住之前对话的上下文,在多轮对话里保持状态的连续性

可以调用子 Agent,把任务分派出去,最后再汇总结果。

这些能力背后,eve 底层用的是一个叫 Workflow SDK 的开源组件。这个 SDK 负责保证会话的持久化、可恢复,以及在服务器重启等情况下的安全性。

换句话说,这些复杂的东西不需要你操心,框架帮你处理好了。

怎么快速跑起来?

说了这么多,可能有人会问:这东西学起来会不会很难?

根据官方文档,实际上手其实挺快的。

第一步,初始化项目,命令行里运行一行:

npx eve@latest init my-agent

这行命令会自动创建目录结构、安装依赖、初始化 Git,然后给你启动一个交互式终端界面。你什么都不用配,敲完回车就行。

顺带说一下,如果你已经有了一个项目,想给现有项目接入 eve,也是一行命令的事:

cd myappnpx eve@latest init .

不需要从头创建项目,eve 会直接在现有项目里把目录结构建好。

第二步,写你的系统提示词。创建一个 agent/instructions.md 文件,里面写上这个 Agent 该怎么跟你说话。

官方的建议是从这两个文件开始就行:instructions.mdagent.ts。其他的功能模块,等你真的需要的时候再加。

第三步,添加你需要的工具。比如你想让 Agent 能查天气,就往 agent/tools/ 目录里放一个 TypeScript 文件,定义输入输出格式和执行逻辑。

第四步,配置你用哪个模型。在 agent/agent.ts 里指定一下用哪个服务商的大模型。

第五步,运行 npm run dev,你的 Agent 就跑起来了。

最少只需要两个文件agent.tsinstructions.md。如果只是做个最简单的 demo,甚至提示词都不需要,直接改改配置就能用。

目前 eve 还是 Beta 阶段。官方说得很清楚,框架、API、文档和行为在正式发布前都可能会变。如果你要用在生产环境,建议关注一下正式版本的发布动态。

官方资源:

GitHub:https://github.com/vercel/eve

文档:https://beta.eve.dev/docs