Vercel Schedules发布:让AI代理实时调度任务

Vercel Schedules 支持运行时动态创建调度,让 AI 代理自主决定任务执行时间。
Vercel Schedules 是构建在 Vercel Cron Jobs 之上的新功能,旨在解决传统 Cron 任务必须预先定义、修改需重新部署的痛点。它提供静态和动态两种模式:静态模式沿用 vercel.json 配置,适合调用私有函数或发送队列消息;动态模式允许应用通过 JS SDK、CLI 或 API 在运行时创建一次性或周期性调度,特别适用于 AI 代理场景。文章以 Hacker News 摘要任务为例,展示了代理如何创建调度、平台通过 Queues 投递请求、应用在执行时校验权限的完整流程。此外,Schedules 还支持私有函数调用、Nitro 3 框架集成,并处于 Public Beta 阶段,建议在非关键路径验证后使用。
从静态Cron到动态调度:Vercel Schedules解决什么痛点
传统的Cron Job是开发者再熟悉不过的工具——备份数据库、同步系统数据、定期清理记录,这些重复性工作都靠它完成。但它的局限也很明显:定时任务必须在代码中预先定义,修改配置后需要重新部署才能生效。
Vercel Schedules的推出正是为了解决这个矛盾。据Vercel官方介绍,Schedules构建在Vercel Cron Jobs的静态方法之上,但核心差异在于:它让用户和AI代理可以在应用运行过程中决定任务何时执行,而无需重新部署。这个转变看似微小,实则打开了全新的使用场景。

Cron Job 与动态调度的本质区别
Cron 是一种基于时间的作业调度器,最早源于 Unix 系统,通过 crontab 文件定义任务执行的时间规则。其核心特征是声明式和静态性:任务计划与代码一同部署,任何调整都需要修改配置并重新发布。这种模式适用于可预测的周期性任务,但无法应对运行时才确定的调度需求。
动态调度则将决策权从部署时转移到运行时。应用程序或代理可以在任意时刻通过 API 创建、修改或取消任务,调度信息存储在平台侧而非代码库中。这要求平台具备任务持久化、到期触发和可靠投递的能力。Vercel Schedules 正是通过底层 Queues 和函数调用机制来实现这一能力,从而弥合了静态 Cron 与事件驱动架构之间的鸿沟。
静态与动态双模式:两种调度路径的取舍
Vercel Schedules提供了两种使用方式,分别对应不同的需求场景。
静态调度:延续配置驱动
静态调度将时间配置保留在vercel.json或Build Output API配置中,部署时同步生效。这种方式适合调用私有函数、HTTP路径,或向Queue topics发送消息。对于已经习惯Cron Jobs的团队来说,迁移成本几乎为零。
动态调度:让应用自己决定
动态调度的价值在于灵活性。应用可以通过JS SDK、CLI或API在运行时创建和管理调度,支持一次性任务和通过Queue topics实现的周期性任务。官方给出的代码示例展示了一个AI SDK工具,代理可以调用Schedules.create方法创建一次性调度,指定任务内容、执行时间和时区。
Vercel还支持在Preview部署和自定义环境中测试调度任务,通过项目的Schedules标签页中的"Run Schedule"功能,开发者可以无需等待直接触发任务,并查看历史执行记录。
AI SDK 与工具调用机制
Vercel AI SDK 是一个用于构建 AI 应用的开源库,其核心功能之一是支持大语言模型(LLM)进行工具调用(Tool Calling)。开发者可以定义一系列工具函数(如 Schedules.create),并描述其参数和用途;当模型认为需要执行某个动作时,会生成对应的调用请求,由应用执行并返回结果。
在 Vercel Schedules 的示例中,代理通过 AI SDK 工具创建调度,实质上是将调度能力封装为模型可调用的工具。这使得代理能够理解用户的自然语言指令(如“明天早上总结新闻”),并将其转化为结构化的调度创建请求。工具调用机制让动态调度无缝融入代理工作流,无需硬编码调度逻辑。
代理场景落地:一个Hacker News摘要任务的全流程
官方用一个具体例子说明了Schedules的工作方式。用户可以对一个具备网页访问能力的代理说:"明天早上,总结Hacker News前五条新闻。"
传统方案需要将请求和调度时间存入数据库,再用Cron Job轮询检查是否有到期任务。而使用Schedules,代理可以直接创建一个调度,记录请求内容和执行时间,省去了独立的数据库和轮询作业。
当任务到期时,Vercel通过Queues将保存的请求投递到应用。应用提供代码读取请求、检查用户当前权限并启动代理。代理获取新闻后返回摘要,应用再保存给用户。
有意思的是,Vercel强调了权限检查发生在任务执行时而非创建时,这意味着如果用户在任务创建后权限发生变化,执行时仍会被正确校验。这是一个容易被忽视但至关重要的安全设计。
如果开发者已经在使用fx的JavaScript库、libfx或Pi的代理库构建代理,可以添加类似的调度工具。而eve代理框架则直接使用Vercel Schedules为托管在Vercel上的生产代理提供动态调度能力。
Queues 与任务投递的可靠性
Vercel Queues 是一种消息队列服务,用于在分布式系统中可靠地传递消息。在 Vercel Schedules 中,当调度任务到期时,平台会将保存的请求内容封装为消息,通过 Queues 投递到应用对应的处理函数。这种设计解耦了调度触发与任务执行,并提供至少一次的投递保证。
使用 Queues 的好处包括:自动重试失败的任务、缓冲突发流量、以及将任务执行与 HTTP 请求生命周期分离。对于代理场景,这意味着即使应用暂时不可用,任务也不会丢失,待恢复后仍可继续处理。开发者无需自行维护轮询作业或消息队列,平台已内置了这些基础设施。
周期性任务与框架集成:不只是AI代理
虽然代理场景是Vercel Schedules的亮点,但它同样服务于传统的应用级周期性任务。
开发者可以在vercel.json中定义调度,例如每天凌晨2点(纽约时区)调用一个私有清理函数。Vercel会直接调用该清理代码,不将其暴露在公共URL上,并检查每次调用是否来自调度服务——这个校验由平台完成,开发者无需自行添加。
对于使用Nitro 3服务器框架的应用,其实验性集成允许将现有scheduledTasks配置中的周期性任务作为私有函数运行。
开发者可以用vercel dev在本地尝试代理任务和清理任务,然后在Preview分支或自定义环境中测试,确认无误后再上生产。
公测阶段与上手建议
Vercel Schedules目前处于Public Beta阶段,官方表示可以用于应用已有的周期性任务。当用户或代理决定工作何时发生时,代码可以创建和管理对应的调度。
对于想要尝试的开发者,Vercel提供了Schedules skill和相应的文档。考虑到Beta阶段的产品可能存在API调整,建议先在非关键路径上验证,特别是在代理场景中关注权限校验和任务投递的可靠性。
从产品定位来看,Vercel Schedules填补了静态Cron和动态事件驱动之间的空白。它没有试图取代Cron,而是承认了一个事实:当代理开始参与工作流,调度的决策权需要从部署时转移到运行时。
Vercel 环境与部署模型
Vercel 是一个面向前端和全栈应用的云平台,其核心部署模型基于 Preview 部署和生产部署。每次 Git 推送都会生成一个独立的 Preview 部署,用于测试和验证;合并到主分支后则触发生产部署。自定义环境允许团队创建额外的部署环境(如 staging),并配置独立的环境变量和域名。
Vercel Schedules 充分利用了这一模型:开发者可以在 Preview 部署或自定义环境中安全地测试调度任务,利用“Run Schedule”功能手动触发,并查看执行历史。这种环境隔离机制降低了在生产环境直接调试调度逻辑的风险,符合现代 DevOps 的渐进式发布理念。
相关推荐
科技前沿Caro揭秘:LBJ如何用伪装骗过种族隔离派
罗伯特·卡罗在LBJ传记中记录前参议员塔尔梅奇的采访:约翰逊初入参议院时刻意迎合南方保守派,塔尔梅奇称未察觉其民权倾向。掌权后约翰逊推动1964年民权法案与1965年投票权法案,揭示政治伪装与改革时机的关系。

Commodore 64经典赛车游戏迎来Driver AI
探索Commodore 64经典赛车游戏《Stunt Car Racer》中的Driver AI实验,了解在资源受限的8位平台上实现自动驾驶AI的技术挑战与启示。

黄仁勋若被替换,开源AI会否生变?Reddit激辩
Reddit网友激辩:如果黄仁勋被替换,英伟达会反对开源AI吗?讨论指出英伟达支持开源AI源于商业利益,需拓宽GPU客户群,而非一人决策。