如果你最近使用了任何先进的AI代理——无论是OpenAI的O1、Devin还是自定义企业推理代理——你可能看过它。 那旋转的轮子正好旋转60秒。 随后是空白屏幕。 随后是令人害怕的:“504网关超时”。
这不是代码中的bug。这不是服务器崩溃。这是互联网我们构建(Web 2.0)和互联网工作负荷我们正在构建(Agentic AI)之间的一个基本的架构不兼容。
现代网络面临一个超时危机,修复它需要撕毁网络是”快速”的核心假设。
旧合同:REST和30秒规则
在过去20年中,网络已针对一件事进行了优化:响应性。 主导的范式是REST(代表性状态转移)。客户端和服务器之间的合同是同步且简单的:
- 请求:客户端要求数据(例如,“获取我用户配置文件”)。
- 过程:服务器检索数据(数据库查询:约50毫秒)。
- 响应:服务器发送数据回。
如果第2步花费超过30秒(或一些云上的60秒),基础设施惊慌失措。负载均衡器(NGINX、AWS ALB、Cloudflare)假设服务器已死、“僵尸”或困在无限循环中。它切断连接以保护系统。 这是一个功能,不是bug。它防止了挂起的过程吃掉RAM和CPU线程。它强制了”快速失败”纪律。
进入Agentic AI:时间粉碎工作负荷
经典上,计算机很快。如果查询花费5分钟,你的SQL很糟糕。 但Agentic AI不仅仅是”查询”。它是”思考”。
一个”O1”级别推理模型或Agentic工作流不仅仅查找数据。它:
- 分解一个提示成一个计划。
- 浏览网络(抓取10个网站)。
- 编写代码。
- 运行代码在沙盒中。
- 分析错误日志。
- 重构代码。
- 迭代。
这个过程不是以毫秒衡量的。它以分钟衡量。有时是小时。 当你强制一个5分钟的思考过程进入30秒的REST管道时,管道爆裂。客户端(浏览器)仍然在等待,但中间人(负载均衡器)已经挂上了电话。代理4分钟后完成它的工作,但它没有人说话。结果是一个丢失的任务,一个沮丧的用户,和浪费的计算信用。
架构转变:从同步到事件驱动
要在Agentic时代生存,我们看到自SOAP/XML之死以来最重要的架构转变。我们从同步请求/响应转向异步事件驱动架构(EDA)。
“票证”系统
在新范式中,当你要求AI”为我构建一个网站”时,服务器不持有线。
- 请求:客户端发送提示。
- Ack:服务器立即回复(HTTP 202已接受):“我得到了。这是你的票证ID #1234。我在处理它。再见。”
- 断开连接:HTTP连接关闭。浏览器可以自由做其他事情。
- 处理:代理在后台工作(分钟/小时)。
- 通知:完成后,服务器发送一个信号。
信号协议:浏览器如何知道?
我们看到处理第5步的协议战争:
- 轮询:浏览器每5秒问,“你完成了吗?” (简单,但资源密集)。
- Webhooks:服务器在完成后调用特定的URL(对于服务器到服务器很好,对浏览器很差)。
- 服务器发送事件(SSE):单向持久通道,其中服务器推送更新(“扫描…”、“编写代码…”、“完成。”)。这正成为流式LLM令牌的标准。
- WebSockets:全双向通信。对大多数文本生成来说是过度的,但对实时语音/视频代理是必要的。
耐用执行爆炸
超时危机已推动了耐用执行平台如Temporal、Inngest和Hatchet的爆炸性增长。
在一个标准的Python/Node脚本中,如果服务器在代理4分钟进入任务时重启或崩溃,那4分钟的工作就丢失了。AI有”失忆”。 耐用执行引擎引入持久日志。他们在每个步骤保存函数的”状态”。
- 步骤1:计划生成(已保存)。
- 步骤2:抓取Google(已保存)。
- 崩溃(服务器重启)。
- 恢复:服务器唤醒,看到步骤2已完成,立即在步骤3恢复。
这至关重要,因为AI是非确定性和昂贵。你无法承受重新运行一个$2.00 API调用,仅因为pod重启。耐用执行确保一旦代理启动,它将完成,有保证的。
未来:A2A(代理到代理)
我们迅速接近一个世界,其中互联网流量的大多数不是人类对服务器,而是代理对代理(A2A)。 这些代理不在乎”加载旋转器”或”感知延迟”。它们在乎可靠性和正确性。
我们看到新协议的诞生(如MCP——模型背景协议)专门设计成允许代理在长时间内发现和彼此说话。 “即时网络”时代正在结束。“思想网络”正在开始。我们只需要停止超时它。
资料来源 (4)
- temporal.io Durable Execution
- platform.openai.com OpenAI: Optimizing Latency
- aws.amazon.com Asynchronous Patterns
- inngest.com Event-Driven Systems
🦋 Bluesky 讨论
在 Bluesky 上讨论