跳到主要内容

55 篇博文 含有标签「distributed-systems」

查看所有标签

零停机 AI 部署:这是一个分布式系统问题

· 阅读需 12 分钟
Tian Pan
Software Engineer

2025 年 4 月,OpenAI 为 GPT-4o 发布了一次系统提示词更新。几小时内,1.8 亿用户发现 ChatGPT 变得谄媚奉承。这一故障并未被监控系统发现,而是由 Twitter 曝光的。回滚过程耗时三天。

这次事件揭示了 AI 行业一直在默默回避的一个事实:提示词更改就是生产部署。然而,大多数团队却将其视为普通的配置文件修改。

AI 部署的核心问题在于,你部署的不是单一内容,而是四个要素:模型权重、提示词文本、工具 Schema 以及它们共同依赖的上下文结构。每一个要素都可能独立发生偏移,每一个都可以部分发布。与导致崩溃的 API 接口不同,AI 的故障通常是概率性的、渐进的,并且在影响到大部分流量之前往往是不可见的。

这本质上是披着 AI 外衣的分布式系统一致性问题。

AI Agent 的 CAP 定理:为何你的 Agent 在本该优雅降级时却彻底崩溃

· 阅读需 10 分钟
Tian Pan
Software Engineer

你的 AI Agent 运行得一切正常,直到某一刻它彻底不行了。某个工具宕机——也许是搜索 API 触发了限流,也许是数据库响应迟缓,也许是代码执行沙箱超时——整个 Agent 随之崩溃。不是部分答案,不是降级响应,而是彻底失败。要么一片空白,要么满是幻觉。

这不是一个 Bug,而是一个设计选择——而且几乎没有人是刻意做出这个选择的。我们今天所构建的 Agent 架构隐式地选择了"彻底失败",原因只有一个:没有人设计过部分可用路径。如果你有分布式系统的经验,这个模式应该让你感到似曾相识。这正是 CAP 定理,以一副新的面孔出现了。

级联上下文污染:为何一个错误事实就能毁掉整个 Agent 运行

· 阅读需 9 分钟
Tian Pan
Software Engineer

你的 Agent 完成了一个 25 步的研究任务。最终报告看起来很精美,引用也能对上,推理链条看似连贯。但 Agent 在第 3 步幻觉了一家公司的创立年份,而后续的每一个推断——市场时机分析、竞争定位、增长轨迹——都建立在那个错误的日期上。输出结果自信地、系统性地错了,而你的流水线中没有任何环节捕捉到这个问题。

这就是级联上下文污染:一个错误的中间结论通过后续的推理步骤和工具调用不断传播,最终演变成系统级故障。这是长时运行 Agent 中最危险的失败模式,因为它看起来像是成功的。

MCP 就是新一代的微服务:AI 工具生态正在重蹈分布式系统的覆辙

· 阅读需 9 分钟
Tian Pan
Software Engineer

如果你经历过 2015–2018 年的微服务爆发期,那么 MCP 的现状应该会让你感到不安的熟悉。一个真正有用的协议出现了。它很容易搭建。每个团队都搭建了一个。没有人追踪什么在运行、谁负责维护、如何保障安全。不到十八个月,你就会盯着一张工程师私下称为"死星"的依赖关系图。

Model Context Protocol 正在沿着同样的轨迹发展,速度大约是三倍。非官方注册中心已经索引了超过 16,000 个 MCP 服务器。GitHub 上有超过 20,000 个公开仓库在实现它们。Gartner 预测到 2027 年 40% 的 agentic AI 项目将失败——不是因为技术不行,而是因为组织在自动化有缺陷的流程。MCP 泛滥正是这个问题的症状。

将你的 LLM 提供商视为不可靠上游:AI 的分布式系统实战手册

· 阅读需 12 分钟
Tian Pan
Software Engineer

你的监控仪表板一片绿色。响应时间看起来正常。错误率接近于零。然而你的用户却在提工单投诉垃圾回答,你的 agent 正在做出自信满满的错误决策,你的客服队列里塞满了与任何基础设施告警都不相关的投诉。

欢迎来到在生产环境中依赖 LLM API 的独特地狱。这是一个能在返回完美健康的 200 OK 的同时让你翻车的上游服务。

像调试分布式系统一样调试你的 AI 智能体,而非把它当作普通程序

· 阅读需 11 分钟
Tian Pan
Software Engineer

你的智能体在开发环境中运行得完美无缺。它能回答测试查询、调用正确的工具、产出干净的输出。然后它上了生产环境,在一个十二步工作流的第七步出了问题。日志显示最终输出是一堆垃圾,但你完全不知道为什么。

你开始加打印语句。你在编排代码中到处散布 logger.debug() 调用。你盯着成千上万行输出,然后意识到你在用单进程的工具调试一个分布式系统。这就是大多数团队在 AI 智能体上犯的根本错误——他们把智能体当作程序来对待,但智能体的行为更像分布式系统。

智能体死锁:当 AI 代理永远在等待彼此

· 阅读需 10 分钟
Tian Pan
Software Engineer

关于多智能体 AI 系统,有一个令人不安的事实:当你让两个或更多由 LLM 驱动的代理共享资源并同时做出决策时,它们的死锁率在 25% 到 95% 之间。不是偶尔发生。不是在边缘负载下。在使用标准提示的正常运行条件下,一旦代理必须同时协调,系统就会卡住。

这不是理论上的担忧。协调故障约占生产环境中多智能体系统故障的 37%,而没有正式编排的系统故障率在 41% 到 87% 之间。经典的分布式系统故障模式——死锁、活锁、优先级反转——又回来了,只是穿上了新衣服。

Agent 流水线中的背压:当 AI 生成工作的速度快于执行速度

· 阅读需 10 分钟
Tian Pan
Software Engineer

一个基于流行开源技术栈构建的多 Agent 研究工具陷入了递归循环,运行了 11 天才被发现。账单:47,000 美元。两个 Agent 一直在不停地互相对话,消耗着 token,而团队却以为系统在正常工作。这就是 Agent 流水线没有背压时会发生的事情。

问题是结构性的。当编排 Agent 将任务分解为子任务并生成子 Agent 来处理每一个任务,而这些子 Agent 又可以自行生成更多子 Agent 或在多个工具调用之间扇出时,你就会得到指数级的工作生成。流水线产生工作的速度超过了它能执行、完成甚至核算的速度。这与响应式系统、流式架构和网络协议几十年前解决的问题完全相同——同样的解决方案同样适用。

多 Agent 决策的共识协议:当你的 Agent 意见不一致时会发生什么

· 阅读需 10 分钟
Tian Pan
Software Engineer

你有三个 Agent 在分析一个客户支持工单。两个说"立即退款",一个说"升级到欺诈审查"。你选择了多数答案并执行了退款。三天后,欺诈团队问你为什么自动退款了一个已知的拒付模式。

这就是多 Agent 系统中的共识问题,事实证明分布式系统工程师几十年前就解决了其中的重要部分。但天真地移植这些解决方案——或者更糟糕的是,默认使用多数投票——会在你的"节点"是有自己观点的语言模型时产生独特的危险故障模式。

并发智能体系统中的竞态条件:那些看起来像幻觉的 Bug

· 阅读需 15 分钟
Tian Pan
Software Engineer

三个智能体并发处理同一个客户账户更新。三者都记录了成功。最终数据库状态同时出现了三处错误,且始终没有抛出任何异常。团队花了两周时间怪罪模型。

问题不在模型。是竞态条件。

这是生产环境多智能体系统中被误诊次数最多的故障模式:由并发状态访问引发的数据损坏,因为下游智能体会基于损坏的输入自信地进行推理,从而被误认为是幻觉。模型并没有在编造内容,它只是在忠实地处理垃圾数据。

AI Agent 的预写日志:借鉴数据库恢复模式实现崩溃安全执行

· 阅读需 11 分钟
Tian Pan
Software Engineer

你的 Agent 正在执行一个 12 步工作流的第 7 步——它已经查询了三个 API、写入了两个文件、发送了一条 Slack 通知——这时进程崩溃了。接下来会发生什么?如果你的答案是"从第 1 步重新开始",那你将重新发送那条 Slack 消息、重新写入那些文件,并再次消耗你的 LLM token 预算。这正是数据库几十年前通过预写日志解决的问题。这个模式可以高度精确地映射到 Agent 架构中。

核心思路很简单:在 Agent 执行任何步骤之前,先记录它打算做什么。在继续下一步之前,记录发生了什么。这个仅追加的日志成为恢复的唯一真实来源——不是 Agent 的内存状态,不是世界的快照,而是一个可以确定性重放的意图和结果的顺序记录。

智能体幂等性:为什么你的 AI Agent 会发送两次邮件

· 阅读需 11 分钟
Tian Pan
Software Engineer

你的 Agent 处理了一笔退款,但响应超时了。框架进行了重试。结果客户收到了两次退款。你的 Agent 发送了一封跟进邮件,触碰了速率限制,在退避(backoff)后重试,结果客户收到了两条完全相同的消息。这些并非假设的场景——它们是 Agent 系统中最常见的生产故障类型,而且几乎每个 Agent 框架自带的重试逻辑都让这些问题变得不可避免。

根本原因看似简单:Agent 框架对所有工具调用的处理方式都一样,无论它是读取数据还是改变现实世界。get_user_profile() 调用重试一百次也是安全的。但 send_payment() 调用则不然。然而,大多数框架都将两者封装在相同的指数退避重试逻辑中,并美其名曰“可靠性”。