Vercel Labs 开源了他们在生产环境中跑后台编码 Agent 的完整参考架构,1028 stars。repo 可以 fork 后直接适配,不是黑盒。
三层架构
Web → Agent workflow → Sandbox VM
- Web:处理认证、会话、聊天和流式 UI
- Agent:作为 durable workflow 运行在 Vercel 上
- Sandbox:执行环境:文件系统、shell、git、dev servers、preview ports
核心架构决策:Agent 不在沙箱里跑
这是整个项目最重要的设计决策:
"The agent does not run inside the VM. It runs outside the sandbox and interacts with it through tools like file reads, edits, search, and shell commands."
Agent 和沙箱的分离带来了关键特性:
- Agent 执行不绑定到单个请求的生命周期
- 沙箱可以独立休眠和恢复
- 模型/提供商选择和沙箱实现可以独立演进
- VM 保持纯执行环境,不变成控制平面
当前能力
- chat-driven 编码 Agent,带 file、search、shell、task、skill、web 工具
- durable 多步骤执行(Workflow SDK 支持),带流式输出和取消
- 基于快照恢复的隔离 Vercel 沙箱
- repo 克隆和分支工作
- 可选的 auto-commit、push 和 PR 创建
- 通过只读链接分享 session
- 可选的 ElevenLabs 语音输入
技术栈
- PostgreSQL(Neon)
- Redis/KV(Upstash)
- Vercel OAuth + GitHub App 集成
- 可选 ElevenLabs 语音转录
部署要点
核心环境变量:
POSTGRES_URL:必选,Neon 提供JWE_SECRET+ENCRYPTION_KEY:必选,自己生成- Vercel OAuth:需要创建 OAuth App
- GitHub App:需要创建 App 并配置 Webhook
沙箱暴露端口:3000、5173、4321、8000,空闲后自动休眠。
架构意义
这个项目和今天那篇"单模型工程时代结束了"在同一个方向:把控制面和执行面解耦。Agent 是控制平面(编排层),沙箱是执行平面。两者可以独立演进——你可以换模型、换 provider、换沙箱实现,而不需要重写整个系统。
"The agent is not the sandbox"——这条架构原则和今天上午那篇 multi-model 解耦是同一个思路:把执行环境和控制平面分开,各自独立演进。