Vercel Open Agents:在云端运行无限循环的编程 Agent
来源: GitHub https://github.com/vercel-labs/open-agents (opens in a new tab) 官方文档: https://open-agents.dev (opens in a new tab) 收集日期: 2026-04-14 状态: 待深化
项目简介
Open Agents 是 Vercel 开源的参考实现项目,用于在 Vercel 平台上构建和运行"后台编程 Agent"。核心理念是:描述任务,让 AI Agent 在云端自主执行直到完成。
"Spawn coding agents that run infinitely in the cloud."
项目地址:https://github.com/vercel-labs/open-agents (opens in a new tab) License:MIT
一、能干什么?(用户视角)
典型使用场景
用户通过聊天界面描述任务,Agent 在云端自主完成,全程不需要人介入。官网 Demo 展示了一个典型的认证系统实现过程:
用户:"给项目添加 auth 登录流程"
Agent 自动:
1. grep 分析现有代码中的认证模式
2. 读取 auth/route.ts、auth/callback/route.ts 等文件
3. 编写新的路由代码
4. 修改 middleware 配置
5. 运行 tsc 类型检查
6. 自动 commit + push → 创建 PR核心能力清单
| 能力 | 说明 |
|---|---|
| 聊天驱动编程 | 用自然语言描述需求,Agent 全程自动执行 |
| 持久化运行 | 不受 HTTP 请求超时限制,可跑几小时 |
| 代码执行沙盒 | 完整的文件系统 + 网络 + 运行时权限 |
| 克隆 GitHub 仓库 | 把你的项目拉进沙盒直接改 |
| 自动 commit/PR | 完成后自动提交代码,创建 Pull Request |
| Session 分享 | 只读链接分享 Agent 工作过程 |
| 语音输入 | 接入 ElevenLabs,说话即可下任务 |
| 多模型支持 | Claude / GPT / Gemini 可切换 |
支持安全审批机制
Agent 执行 Shell 命令时有分级策略:
- 自动执行(只读命令):
ls、find、grep、git status等 - 需要审批(危险命令):
rm、mv、chmod、npm install、含管道/重定向的命令等 - 子 Agent 同样受约束,不会绕过安全规则
二、怎么使用?(用户操作流程)
部署到自己的 Vercel
快速方式:Vercel 提供一键部署按钮,自动集成 PostgreSQL(Neon)+ KV(Upstash)。
手动步骤:
- Fork 仓库到自己的 GitHub
- 创建 PostgreSQL 数据库(Neon 免费层够用)
- 生成加密密钥:
openssl rand -base64 32 - 在 Vercel 导入项目,填入环境变量
- 获取生产域名
- 创建 Vercel OAuth App(用于登录)
- 可选:创建 GitHub App(用于 PR 自动创建)
- 重新部署
环境变量速查
最小配置(仅能启动)
POSTGRES_URL= # PostgreSQL 连接字符串
JWE_SECRET= # openssl rand -base64 32开启登录
ENCRYPTION_KEY=
NEXT_PUBLIC_VERCEL_APP_CLIENT_ID=
VERCEL_APP_CLIENT_SECRET=开启 GitHub 集成(自动 PR)
NEXT_PUBLIC_GITHUB_CLIENT_ID=
GITHUB_CLIENT_SECRET=
GITHUB_APP_ID=
GITHUB_APP_PRIVATE_KEY=
NEXT_PUBLIC_GITHUB_APP_SLUG=
GITHUB_WEBHOOK_SECRET=可选增强
REDIS_URL / KV_URL= # Skills 元数据缓存
VERCEL_SANDBOX_BASE_SNAPSHOT_ID= # 自定义 Sandbox 基础镜像
ELEVENLABS_API_KEY= # 语音转文字Sandbox 成本参考
- 运行费用:约 $0.02/分钟
- 自动休眠:无活动时休眠,重新访问立即恢复(秒级)
- 每个 Session 独立一个 Sandbox + 独立 Git 分支
三、怎么开发?(开发者视角)
本地开发
git clone https://github.com/vercel-labs/open-agents
cd open-agents
bun install
# 配置环境变量
cp .env.example .env.local
# 启动开发服务器
bun dev
# → http://localhost:3000仓库结构
open-agents/
├── apps/
│ └── web/ # Next.js 应用(App Router)
│ ├── app/ # 页面和路由
│ ├── lib/db/ # 数据库迁移(next build 时自动执行)
│ └── components/ # UI 组件
└── packages/
├── agent/ # Agent 核心实现
│ ├── open-harness-agent.ts # Agent 主入口
│ ├── system-prompt.ts # System Prompt 构建器
│ ├── models.ts # 模型配置
│ ├── tools/ # 工具实现(bash、file 等)
│ ├── subagents/ # 子 Agent(explorer/executor)
│ ├── skills/ # Skills 系统
│ └── context-management/ # 上下文管理
├── sandbox/ # Sandbox 抽象层
└── shared/ # 公共工具Agent 工具集(11 个内置工具)
// packages/agent/open-harness-agent.ts 中注册的工具
- todo_write // 任务列表(规划和追踪进度)
- read // 读取文件
- write // 创建/覆盖文件
- edit // 精准字符串替换(优先用这个)
- grep // 正则搜索文件内容
- glob // 按模式查找文件
- bash // 执行 Shell 命令
- task // 派发给子 Agent
- ask_user_question // 向用户提问(需要时才用)
- skill // 调用 Skill
- web // 网络请求System Prompt 的设计
这是整个项目最有价值的部分之一。system-prompt.ts 动态构建 System Prompt,包含:
1. 核心行为准则(所有模型共用)
- 任务必须做完,不能半途而废
- 优先使用项目自身的 scripts(
bun run typecheck),不要用裸命令(npx tsc) - 独立操作并行执行,依赖操作串行执行
- 每次代码修改后必须验证(typecheck → lint → test → build)
- 不提交代码,除非用户明确要求
2. 针对不同模型的行为覆盖
| 模型 | 专属 Overlay 重点 |
|---|---|
| Claude | 频繁使用 todo_write 追踪进度,逐项打勾 |
| GPT | 强调必须持续工作直到完成,不能提前结束 |
| Gemini | 保持简洁,3 行以内文字输出 |
| GPT-5.4 | 额外追加"极简主义"覆盖,对抗其啰嗦倾向 |
3. 云沙盒检查点规则
- 每次有意义的改动后立即 commit + push
- 长操作(build/install)前先 checkpoint
- 沙盒是临时的,未 push 的工作会丢失
子 Agent 系统
主 Agent
├── Explorer(探索者)—— 并行分析代码库、理解结构
└── Executor(执行者)—— 并行编写和修改代码两个子 Agent 并行工作,主 Agent 通过 task 工具委派任务。
Skills 系统
Agent 支持外部 Skills,类似 Claude Code 的 /skill-name 机制:
# 查找并安装 Skill
npx skills find <keyword>
npx skills add vercel/ai -y -a amp # amp = 通用 Agent 格式Skills 分两类:
userInvocable: true— 用户可直接用/skill-name调用model-only— Agent 自动判断何时调用
四、核心架构解读
为什么 Agent 要跑在 Sandbox 外面?
传统方式:Agent 直接跑在 VM 里,受到 HTTP 请求超时(通常 30s-300s)的限制。
Open Agents 的方式:
用户请求 → Vercel Workflow SDK(持久化工作流)
↓
Agent 循环(外部,不受超时限制)
↓ 通过工具调用
Sandbox VM(隔离执行环境)好处:
- 无限运行:Workflow SDK 持久化状态,Agent 可以跑几小时
- Sandbox 独立:VM 可以休眠省钱,Agent 随时可以唤醒它
- 模型可替换:换模型不影响 Sandbox,换 Sandbox 不影响 Agent 逻辑
Workflow SDK 如何实现持久化?
Agent 每一步 → 写入 Checkpoint
↓
如果服务重启/崩溃
↓
从上次 Checkpoint 恢复
↓
继续执行,用户无感知五、与同类产品对比
| Open Agents | Devin | GitHub Copilot Workspace | |
|---|---|---|---|
| 开源 | ✅ MIT | ❌ | ❌ |
| 自部署 | ✅ | ❌ | ❌ |
| 运行时长 | 无限制 | 有限制 | 有限制 |
| 模型选择 | 多模型 | 固定 | 固定 |
| 成本控制 | 自己控制 | 按座位收费 | 按使用量 |
| 定制能力 | 高(源码可改) | 无 | 低 |
六、适合写成文章的角度
- System Prompt 工程:Open Agents 的 system-prompt.ts 是一份顶级的 Agent 系统提示词,逐行解读其设计思路
- 持久化 Agent 实现原理:Workflow SDK 如何让 Agent 跑"无限时长"
- Agent 安全模型:如何设计分级审批让 Agent 不乱跑命令
- 多模型适配技巧:同一个 Agent 如何针对 Claude/GPT/Gemini 差异化调优
- 部署实战:Fork 后10分钟跑起来自己的 Coding Agent
- 横向对比:开源自托管 vs 商业 Coding Agent 的权衡
相关链接
- GitHub: https://github.com/vercel-labs/open-agents (opens in a new tab)
- 官网: https://open-agents.dev (opens in a new tab)
- Vercel AI SDK: https://sdk.vercel.ai (opens in a new tab)
- Vercel Workflow SDK(持久化工作流)
- Vercel Sandbox(沙盒执行环境)