1. 项目定位与用途
Open Agents 是 Vercel 提供的开源参考模板,用于快速构建和部署云端的编码代理(coding agent)。它并非一个封闭的黑盒应用,而是设计为可 fork 和适配的基础,帮助开发者跳过底层基础设施的重复造轮子,直接聚焦于代理逻辑与业务场景的实现。项目提供完整的 Web 界面、代理运行时、沙盒编排和 GitHub 集成,实现从用户提示到代码变更的全流程自动化,无需本地机器持续参与。适用于希望将 AI 编码能力产品化的团队或个人,也适合作为研究代理系统架构的实验平台。
2. 解决的问题
传统编码代理往往紧密耦合执行环境与请求生命周期,导致会话难以持久化、资源无法独立管理、模型迁移成本高。Open Agents 通过三层分离架构(Web-Agent-Sandbox)解决这些问题:代理在沙盒外运行,通过工具调用与沙盒交互,使代理执行不绑定单次请求;沙盒生命周期可独立休眠与恢复,降低成本;模型与沙盒实现可分别演进,避免锁定。此外,项目解决了云上安全隔离、预览端口暴露、Git 操作集成等工程难题,提供可复用的解决方案。
3. 适用场景
Open Agents 适用于多种自动化编码场景:作为 AI 编程助手,根据自然语言描述生成或修改代码;在 CI/CD 流程中自动修复测试失败或执行代码审查;响应 GitHub 事件(如 issue 创建)自动生成修复 PR;构建自定义的代码生成工具链。其设计也适合研究代理系统架构、实验不同 AI 模型或云执行后端。由于采用模板形式,开发者可基于此扩展至文档生成、测试编写、性能优化等特定领域。
4. 安装与部署要求
部署 Open Agents 需满足分层环境变量要求。最低运行时仅需数据库连接:POSTGRES_URL(如 Neon 提供的连接串)和 JWE_SECRET(用于令牌加密)。完整可用版本还需 ENCRYPTION_KEY、NEXT_PUBLIC_VERCEL_APP_CLIENT_ID 和 VERCEL_APP_CLIENT_SECRET 以启用 Vercel OAuth 登录。若需 GitHub 仓库访问、分支推送或 PR 创建,必须配置 GitHub App 相关参数:GITHUB_APP_ID、GITHUB_APP_PRIVATE_KEY、NEXT_PUBLIC_GITHUB_APP_SLUG、GITHUB_WEBHOOK_SECRET 以及 OAuth 客户端 ID/密钥。可选集成包括 Redis/KV 缓存、生产环境 URL 和 ElevenLabs 语音服务。推荐通过 Vercel 一键部署按钮快速启动,随后在项目设置中补充环境变量。
5. 使用方式与交互流程
用户通过 Web 界面登录(或使用只读链接加入共享会话),创建新会话并输入编码提示。代理以工作流形式启动,每轮交互可能跨越多个持久化步骤。代理利用文件读取、编辑、代码搜索、Shell 命令等工具与沙盒环境交互,沙盒基于基础快照启动,暴露 3000、5173、4321、8000 端口用于预览。用户可实时查看流式输出与代码差异。任务完成后,可根据偏好自动提交更改、推送分支并创建 PR。语音输入功能在配置 ElevenLabs 后可用。整个过程中,沙盒在空闲时休眠,重新连接可恢复会话。
6. 实现特点与开发规范
项目采用 Turborepo 管理 monorepo,核心包包括 @open-harness/agent(代理逻辑与工具)、@open-harness/sandbox(沙盒抽象)、@open-harness/shared(共享工具)和 apps/web(Next.js 前端)。开发严格使用 Bun 包管理器,TypeScript 开启严格模式,格式化采用 Ultracite(oxfmt)。命名约定:文件 kebab-case,类型 PascalCase,变量 camelCase,常量 UPPER_SNAKE_CASE。代理采用子代理模式:explorer 子代理负责只读研究,executor 子代理负责实施。沙盒抽象层允许替换不同云后端,当前实现基于 Vercel。代码中避免使用 .js 扩展名导入,以确保 Next.js 模块解析正确。