Vercel Agent: 你可以在生产环境附近放心的代理
今天,我们扩展了 Vercel Agent。它最初用于分流告警和审核你的拉取请求(pull requests)。现在,它在你仪表盘(dashboard)中拥有一个专属位置,可以在那里调查生产环境、回答关于你项目的问题,并在你批准后采取行动。因为 Vercel Agent 内置于部署和运行你应用的平台中,所以当生产环境出现变化时,它会成为你的第一响应者。在你打开笔记本电脑之前,它就能自主调查日志、指标和部署,找到根本原因并提出修复方案。Vercel Agent 以自身身份运作,默认只读。你可以通过 Vercel Dashboard、GitHub 和 CLI 访问它。
Vercel Agent 能为你做什么
我们已经让 Vercel Agent 在生产环境部署上运行了数月。这是一个典型的调查案例。晚上 11 点,一个有问题的部署上线,结账端点(checkout endpoint)开始返回 500 错误。等值班工程师登录时,Vercel Agent 已经将错误追溯到四分钟前上线的部署,并建议立即回滚。工程师批准了这个计划。获得权限后,Vercel Agent 回滚到之前的部署,并开始着手创建用于修复端点的 PR。从告警到问题缓解的时间:不到三分钟。
你可以用 Vercel Agent 做什么
你也可以自己指挥 Vercel Agent。交给它一个任务,它就会完成基础工作,然后要么回答你的问题,要么交给你一个需要批准的修复方案。它永远不会自行更改生产环境。例如:
- 审核拉取请求。让它查看一个 PR,它会标记出性能退化和有风险的变更——这些是通过的 CI 运行无法体现的。
- 追踪成本增加。询问为什么你的账单上涨了,它会找出罪魁祸首,比如某个代码更改导致页面每次请求都进行服务端渲染而不使用缓存。经批准后,它会编写修复方案并打开一个 PR。
- 修复构建失败。让 Vercel Agent 处理一个失败的部署,它会读取日志,找到有问题的配置,请求许可更新它,并在沙箱中测试构建。
检查你是否可以放心发布。查询一个功能标识(feature flag),它会读取代码和实时指标,然后告诉你是否可以安全推出。
面向生产环境智能体的全新安全模型
一个能修复你应用的智能体,同样也能破坏它。因此,对于任何你允许接近生产环境的智能体,首要问题都是:如何安全地让它部署、更改配置或触及你的数据?对于目前大多数智能体来说,答案是不安全。因为它们继承了你的全部权限。无论是一次糟糕的提示,还是一个混乱的子智能体,其影响范围都和你本人一样大。你只能二选一:要么只读访问,要么永久访问;要么谨慎但受限,要么强大但危险。
Vercel Agent 实现了一种全新的权限模型,构建在三个维度之上:智能体的身份、允许它执行的操作,以及它的代码可以在何处运行。
Vercel Agent 拥有自己的身份
大多数智能体扮演你的角色。一旦连接,它就会在整个会话期间以你的身份和你的权限行事。智能体能做什么、你能做什么,两者之间没有界限。Vercel Agent 则作为它自己的主体(principal)vercel-agent 运行。这之所以重要,有两个原因:
- 归属:智能体的行为始终能与你的行为区分开来。每一次变更都会记录请求者、审批者,以及由 Vercel Agent 执行。它做的任何事情都有迹可循。
- 权限:独立的身份并不意味着独立的能力。智能体不会继承你的访问权限;它只获得计划审批明确授予的权限,并且绝不会超过指挥者本人已有的权限。
计划即权限
将智能体集成到你的软件开发生命周期(SDLC)中,通常以相同的方式开始:先授予它广泛的访问权限,远超所需且持续更久。但任何能向智能体发出提示的人,都能触及该访问权限所覆盖的一切。你授予的权限,就是你愿意承担的风险敞口。
Vercel Agent 默认只读。要执行更多操作(比如回滚部署、更改配置或清除缓存),它会提出一个计划,并请求范围仅限于该计划的访问权限。你批准后,智能体执行工作,一旦计划完成,立即恢复为只读状态。
Vercel Agent:一个可以放心用于生产环境的智能体
当你批准一项计划时,智能体会获得一个临时能力,仅能执行其所指定的任务,别无其他。它进行的每一次调用都必须通过三项检查:该能力、令牌的权限范围以及你团队的现有权限。只有当三者都允许时,它才会执行,而这些检查位于平台内部,因此无论模型做什么都有效。我们称此为计划到权限的提示模型(plan-to-permission prompt model)。按设计,它遵循最小权限原则。即使出现问题,Vercel Agent 也只能在你批准的计划范围内行动。这个智能体能力足够强大,可以修复生产环境,同时又足够可控,让你放心让它去做。
生成的代码在沙箱中运行
计划到权限的提示模型控制了智能体被允许做什么。但任何编写代码的智能体都面临第二个问题:在运行之前,无法知道代码是否正常工作。Vercel Agent 生成的代码运行在 Vercel Sandbox 中,这是一个临时的 Firecracker 微虚拟机。在沙箱内部,该代码与你的生产系统及宿主环境隔离。沙箱是你项目的真实副本,因此智能体会针对你的实际构建、测试和代码检查运行生成的代码,并且只展示通过的部分。例如,智能体需要修复一个出错的配置。它会编写修改,在沙箱中运行以确认通过,然后通过 PR(拉取请求)展示出来。智能体可以自由地编写和运行代码,但仍然无法将任何有问题的内容呈现在你面前或投入生产。