Vercel 发布了 eve,这是一个用于构建、运行和扩展 AI 智能体的开源框架。该项目以 npm 包 eve 的形式发布,采用 Apache-2.0 许可证。
构建一个 AI 智能体,本应只定义它的功能,而不应拼凑所有让智能体在生产环境中运行所需的底层基础设施。
eve 是 Vercel 用于构建和运行自身 AI 智能体的框架。根据 Vercel 的博文,目前已有超过一百个智能体在生产环境中运行。
什么是 eve?
eve 是一个面向文件系统的持久化后端 AI 智能体框架。你可以将智能体创建为磁盘上的一个目录,这个目录就是约定。
每个文件描述智能体的一个组件。通过目录树,可以一目了然地看到智能体是什么、做什么,以及它位于何处、何时自主行动。
运行一个最小的智能体只需要两个文件:一个设置模型,另一个设置指令。
// agent/agent.ts
import { defineAgent } from "eve";
export default defineAgent({
model: "anthropic/claude-opus-4.8",
}); 模型配置仅需一行代码,并通过 AI Gateway 支持供应商回退。instructions.md 文件会成为系统提示词,eve 会在每次模型调用前将其前置。
智能体即目录
Vercel 的核心思想是,智能体具有特定的结构。每个团队都在为满足相同需求而反复重建相同的结构。eve 将这种结构固化为一个框架。
目录布局将每个能力映射到一个文件夹。以下是约定:
| 路径 | 角色 | 格式 |
|---|---|---|
| agent.ts | 它运行的模型,以及运行时配置 | TypeScript |
| instructions.md | 它的身份,每次模型调用前都会前置 | Markdown |
| tools/ | 它能做什么;文件名成为工具名称 | TypeScript |
| skills/ | 它知道什么;仅在相关话题出现时加载 | Markdown |
| connections/ | 指向 MCP 服务器和 OpenAPI API 的安全链接 | TypeScript |
| sandbox/ | 可选,覆盖智能体的沙箱;预置工作区文件 | 目录 |
| subagents/ | 它委托任务的专用子智能体 | 目录 |
| channels/ | 它所在的位置,例如 Slack 或 HTTP | TypeScript |
| schedules/ | 它何时自主行动,基于 cron 定时任务 | TypeScript |
| lib/ | 智能体间共享的自定义代码 | TypeScript |
你只需添加一个文件,即可增加工具、技能、渠道或定时任务。eve 会在构建时自动识别并接入它们,无需任何注册样板代码。
一个工具就是一个包含 Zod 输入模式的 TypeScript 文件。其文件名和在目录树中的位置即构成其定义。
// agent/tools/run_sql.ts
import { defineTool } from "eve/tools";
import { z } from "zod";
export default defineTool({
description: "Run a read-only SQL query.",
inputSchema: z.object({ sql: z.string() }),
needsApproval: ({ toolInput }) => estimateScanGb(toolInput.sql) > 50,
async execute({ sql }) { /* ... */ },
}); 盒子里有什么
Vercel 将 eve 描述为“开箱即用”。该框架附带六项生产级能力:
- 持久化执行:每一次对话都是一个持久化工作流,每一步都设有检查点。会话可以暂停,能在崩溃或部署后存活,并从停止处恢复。这建立在开源 Workflow SDK 之上。
- 沙盒化计算:智能体生成的代码被视为不可信。每个智能体都拥有自己的沙盒,用于执行 shell 命令、脚本以及文件读写。后端是一个适配器,部署时运行在 Vercel Sandbox 上,本地则运行在 Docker、microsandbox 或纯 bash 环境中。
- 人工介入审批:任何操作都可以设置为需要审批。智能体会在此处暂停并等待,必要时可无限期等待,且不消耗计算资源。一旦获得批准,eve 会从上次中断的地方继续执行。
- 安全连接:连接是指向 MCP 服务器或兼容 OpenAPI 的 API 的文件。eve 负责代理认证,模型永远不会看到 URL 或凭证。上线时,智能体可以连接到 Slack、GitHub、Snowflake、Salesforce、Notion 和 Linear。
- 渠道:同一个智能体服务于所有界面。HTTP API 默认开启,并内置了 Slack、Discord、Teams、Telegram、Twilio、GitHub 和 Linear 渠道。一个渠道可以转接给另一个渠道。
- 追踪与评估:每次运行都会使用标准的 OpenTelemetry span 生成追踪信息。这些信息可以导出到 Braintrust、Honeycomb、Datadog 或 Jaeger。评估是通过评分测试套件进行的,你可以在本地运行或将其接入 CI。
用例与实际案例
Vercel 发布了其在 eve 上内部运行的六个智能体:
- d0,数据分析师:这是其最常用的内部工具,每月处理超过 30,000 个问题。每个查询都限定在提问者自身的权限范围内。
- Lead Agent,自主销售开发代表:它负责处理每一个新线索并自主跟进。Vercel 表示其每年成本约为 5,000 美元,回报是成本的 32 倍,由一名工程师兼职维护。
- Athena,销售驾驶舱:RevOps 团队在没有工程师参与的情况下,用六周时间构建了它。它能用通俗语言回答来自 Snowflake 和 Salesforce 的管道问题。
- Vertex,即技术支持工程师:它处理帮助中心、文档和 Slack 中的工单。Vercel 报告称,它能独立解决 92% 的工单,其余则进行升级处理。
- draft0,即内容智能体:它运行一个审核流程,能在人类编辑看到稿件之前捕捉到明显的问题。
- V,即路由智能体:任务首先通过 Slack 发送给 V。V 将每个任务路由给能够回答该问题的智能体。
交互式模拟
eve 与手动搭建的智能体堆栈对比
大多数团队在构建每个新智能体时,都需要自行组装这些组件。下表将这项工作与 eve 提供的能力进行了对比。
| 能力 | 典型的 DIY 堆栈 | eve |
|---|---|---|
| 编写 | 自定义循环,手动工具注册 | 目录中的文件,在构建时自动发现 |
| 持久性 | 定制化的状态和重试处理 | 每个会话的检查点持久化工作流 |
| 代码执行 | 自行管理的容器或虚拟机 | 通过可替换适配器实现的每智能体沙箱 |
| 审批 | 自定义的暂停和恢复逻辑 | 任何操作上的 needsApproval 字段 |
| 渠道 | 每个渠道一个集成 | 每个渠道一个适配器文件 |
| 可观测性 | 从日志中拼接而成 | 内置 OpenTelemetry 追踪和评估 |
| 部署 | 配置基础设施 | vercel deploy,从本地运行无需更改 |
此对比反映了 eve 文档中记载的能力。其他框架的具体情况因版本和设置而异。
快速开始
您可以通过一条命令来搭建并启动一个新的智能体。它会安装依赖项、搭建项目结构,并启动一个开发服务器。
npx eve@latest init my-agent eve dev 在本地运行智能体,并提供一个交互式终端界面。eve eval 运行您的测试套件。eve build 在 .eve/ 目录下编译出可检查的产物。
由于 eve 智能体是一个普通的 Vercel 项目,vercel deploy 可以将其原封不动地部署到生产环境。沙箱无需更改代码即可切换到 Vercel Sandbox。
关键要点
- eve 是 Vercel 的开源、Apache-2.0 许可的智能体框架,目前处于公开预览阶段。
- 一个智能体就是一个文件目录;每个文件夹对应一种能力。
- 持久化执行、沙箱、审批、连接、渠道和评估功能均已内置。
- Vercel 在 eve 上运行着 100 多个智能体,其中包括一个每月处理 30,000 个问题的数据分析师。
- 使用 npx eve@latest init 进行搭建,然后通过 vercel deploy 无需更改即可部署。