工具推荐
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.md 和 agent.ts。其他的功能模块,等你真的需要的时候再加。
第三步,添加你需要的工具。比如你想让 Agent 能查天气,就往 agent/tools/ 目录里放一个 TypeScript 文件,定义输入输出格式和执行逻辑。
第四步,配置你用哪个模型。在 agent/agent.ts 里指定一下用哪个服务商的大模型。
第五步,运行 npm run dev,你的 Agent 就跑起来了。
最少只需要两个文件:agent.ts 和 instructions.md。如果只是做个最简单的 demo,甚至提示词都不需要,直接改改配置就能用。
目前 eve 还是 Beta 阶段。官方说得很清楚,框架、API、文档和行为在正式发布前都可能会变。如果你要用在生产环境,建议关注一下正式版本的发布动态。
官方资源:
GitHub:https://github.com/vercel/eve
文档:https://beta.eve.dev/docs
豫公网安备41010702003375号