为什么传统架构模式正在失效?
TL;DR
本文核心观点:
- 架构范式转变 — AI-Native时代,复杂性从”代码复杂度”转移到”Context复杂度”,传统微服务模式不再适用
- 六大战术模式 — Intent Router、Context Cache、Model Gateway、Feedback Loop、A/B Agent、Human-in-the-Loop构成AI-Native架构的核心工具箱
- 四大设计原则 — Context边界优先、延迟感知设计、可观察性优先、渐进式AI化,是落地AI-Native架构的关键决策框架
- 核心洞见 — 优雅的技术组织不是使用最流行架构模式的组织,而是最懂得为AI组织Context的组织
*“2024年,某独角兽公司的新产品上线三个月后,工程师们发现他们精心设计的微服务架构正在成为一个负担。不是微服务不好,而是他们试图用面向人类开发者的架构模式,去支撑一个主要由AI生成代码的系统。” *
那个过度设计的系统
让我们看一个典型的场景。
某创业公司决定构建一个AI-Native的客服系统。他们的架构师是一位经验丰富的老手,设计了一个标准的微服务架构:
- API Gateway:统一入口,认证、限流
- User Service:用户管理
- Conversation Service:对话管理
- AI Service:调用大模型
- Knowledge Base Service:知识库管理
- Analytics Service:数据分析
每个服务都有自己的数据库,服务间通过消息队列通信,完美的分布式架构。
三个月后,问题开始显现:
- AI Service成为了瓶颈,每次对话都要调用外部API,延迟不可控
- Context在多个服务间传递,序列化/反序列化成了性能杀手
- 一个简单的功能改动需要修改3-4个服务,协调成本极高
- 最讽刺的是:70%的代码是AI生成的,但AI并不理解这个复杂的架构
问题不在于微服务,而在于我们用错了架构范式。
核心观点:AI-Native架构需要新语言
让我说一个反直觉的事实:为人工编码设计的架构模式,不适合AI生成代码的系统。
传统的架构模式(微服务、分层架构、CQRS等)基于以下假设:
- 开发者需要理解整个系统才能做出正确的修改
- 代码的边界应该反映组织的边界(Conway定律)
- 复杂性应该通过分解来管理
但在AI-Native系统中,这些假设正在改变:
| 传统假设 | AI-Native现实 |
|---|---|
| 人需要理解系统 | AI理解系统,人只需要定义Intent |
| 组织边界决定架构 | Intent边界决定架构 |
| 分解管理复杂性 | Context管理复杂性 |
关键洞察:AI-Native架构的核心问题不是”如何分解系统”,而是”如何组织Context”——让AI能够理解它需要的上下文,同时隔离不需要知道的复杂性。
💡 Key Insight
AI-Native架构的核心问题不是”如何分解系统”,而是”如何组织Context”——让AI能够理解它需要的上下文,同时隔离不需要知道的复杂性
穿越周期:从大教堂到集市到AI-Native
让我们看看软件架构的演化史。
1990年代,单体架构(大教堂模式):精心设计的庞大系统,每个部分都有明确的位置和职责。像建造大教堂一样,需要详尽的设计和长期的规划。
2010年代,微服务架构(集市模式):Eric Raymond的《大教堂与集市》影响了软件架构。小团队、独立部署、快速迭代。像集市一样,充满活力但也混乱。
2020年代,AI-Native架构(?):我们正在寻找这个新范式。
| 时代 | 架构范式 | 核心原则 | 复杂性管理 |
|---|---|---|---|
| 单体时代 | 分层、模块化 | 内聚耦合 | 代码组织 |
| 微服务时代 | 服务边界、DDD | 业务能力对齐 | 服务拆分 |
| AI-Native时代 | Context边界、Intent对齐 | AI可理解性 | Context组织 |
历史在押韵:每一次架构范式的转变,都重新定义了”复杂性在哪里,如何管理它”。在AI-Native时代,复杂性从”代码复杂度”转移到了”Context复杂度”。
💡 Key Insight
历史在押韵:每一次架构范式的转变,都重新定义了”复杂性在哪里,如何管理它”。在AI-Native时代,复杂性从”代码复杂度”转移到了”Context复杂度”
反直觉洞察:六大战术模式
我提出六个面向AI-Native架构的战术模式:
Intent Router:让AI理解用户想要什么
问题:用户的自然语言请求需要路由到不同的处理逻辑。
传统方案:复杂的if-else或规则引擎
AI-Native方案: 关键:Router本身也是AI,它能理解用户意图的细微差别,将请求路由到最合适的处理单元。
Context Cache:把上下文存在模型外面
问题:AI处理需要大量Context,但频繁构建Context成本高。
关键:预加载和缓存用户相关的Context,减少每次请求的Context构建时间。
Context Cache的核心洞察是:把上下文存在模型外面,而不是每次都重新构建。 在传统架构里,我们缓存的是数据——数据库查询结果、API响应。但在AI-Native架构里,真正昂贵的不是数据获取,而是Context构建时间:大段对话历史、用户偏好向量、全局知识检索——这些构成一次AI调用所需的全部上下文。
Context Cache的策略分为两种:预加载(pre-loading)和懒加载(lazy-loading)。 预加载适合已知需要大量Context的场景——比如用户刚登录,你就知道接下来会有多轮对话,那么在第一轮响应返回之前,异步地把用户历史、全局知识都加载进去。懒加载则在每次请求时按需拉取,牺牲一点延迟换去更精准的Context。
eviction策略是Cache设计的关键。常见的是LRU(最近最少使用)配合语义优先级——与当前Intent强相关的Context片段被标记为高优先级,保留时间更长;通用背景知识则更容易被淘汰。这一点与DDD的界定的”有界上下文(bounded context)”概念形成有趣对应:每个有界上下文对应一块自包含的Context,在Cache层面天然适合作为一个独立的缓存分区。
💡 Key Insight
Context Cache的关键不在于”缓存什么”,而在于预判Intent、提前加载语义相关的Context分区,让AI调用发生的时候,所需的一切已经在内存里
Model Gateway:让合适大小的模型做合适的事
问题:不同的AI任务需要不同的模型(快但弱 vs 慢但强)。
关键:根据任务复杂度、成本预算、延迟要求,自动选择最合适的模型。
Model Gateway的本质是一个路由决策引擎,而不是简单的”便宜模型做小事、贵模型做大事”。每个AI任务来到网关,网关需要回答:这个请求的Intent是什么?它的延迟要求是多少?成本预算是多少?有没有特殊的质量要求?
举一个典型的场景:在那个客服系统里,用户问”我的订单到哪了”——这是一个意图明确、答案结构化、延迟敏感的低风险查询,用一个小模型(快但弱)配合RAG就能完成。但用户说”这个产品我不满意,要求全额退款”——这涉及政策理解、例外处理、情感判断,就需要大模型(慢但强)加人工审核链路。
Model Gateway的路由逻辑通常有三种实现方式:基于规则的静态路由(简单但僵硬)、基于置信度的动态路由(更灵活,但需要校准阈值)、基于LLM的智能路由(Router本身也是一个小模型,判断用哪个模型最合适)。后者是AI-Native架构里最有趣的模式——用AI来决定用哪个AI。
Fallback链也是关键设计:当主模型超时或返回错误时,应该fallback到哪个备选模型?很多团队在这里踩坑:他们只配了”大模型→错误”这种二元Fallback,但现实中更合理的应该是”大模型→中模型→小模型→规则引擎”的多级降级链。前面故事里提到的那个AI Service瓶颈问题——每次对话都调用外部API、延迟不可控——本质上就是缺少一个智能的Model Gateway来对请求做分流和降级。
💡 Key Insight
Model Gateway的核心不是”选哪个模型”,而是建立一条延迟、成本、质量三者之间的动态权衡链,让每一次AI调用都在约束条件下达到最优
Feedback Loop:让系统越用越好
问题:AI的输出质量需要持续优化。
关键:建立从用户反馈到模型改进的闭环,让系统越用越好。
Feedback Loop回答的是一个问题:你怎么知道AI输出变好了? 在传统代码里,我们有单元测试、集成测试、CI/CD来验证正确性。在AI系统里,输出质量是概率性的、上下文相关的,传统的测试框架根本不适用。所以Feedback Loop的本质是一个持续评估+持续改进的双环结构。
内环是实时质量控制:每一次AI输出,系统都会记录多个信号——用户是否点击了”重新生成”?用户的下一个问题是否在纠正AI的错误?用户是否在很短时间内重复了同一个问题?这些信号构成隐式反馈,比显式评分(”这条回答有用吗?”)噪声更少、更真实。
外环是定期评估与改进:每周或每月,跑一批标准化的Eval题目,用 grader model 给AI输出打分,分数低于阈值的场景进入重点改进列表。LangChain 工程实践把这种模式叫做 Hill Climbing Loop——每次 Agent 运行产生的 trace(模型做了什么、调用了什么工具、grader 反馈是什么)被分析 Agent 读取,用发现的结果重写 harness 配置,prompt 调整、工具调整、grader 调整,形成一条”每轮外部循环都让内部循环更有效”的 return arrow。(注:Hill Climbing Loop 这一术语在 LangChain 后续公开文章 The Art of Loop Engineering 中被 Sydney Runkle 系统化阐述。)
Feedback Loop最难的部分不是收集反馈,而是把反馈转化为可操作的改进。一个差评本身没有信息量,但”第3步的工具调用失败率比其他步骤高40%”就是可操作的。好的Feedback Loop设计,从一开始就要想清楚:我要追踪哪些信号?这些信号怎么映射到具体的改进动作?
💡 Key Insight
Feedback Loop的价值不在于”收集反馈”,而在于把模糊的质量感知翻译成具体的可复现的改进动作——这是AI系统从”能用”到”好用”的关键台阶
A/B Agent:用实验驱动AI行为优化
问题:如何安全地测试新的AI策略?
关键:像A/B测试UI一样,A/B测试AI Agent的行为。
传统A/B测试针对的是确定性代码:按钮颜色、文案、布局——每次实验的结果都是确定的,统计显著性容易计算。但AI Agent的行为是概率性的:同样的输入,模型可能输出两种不同质量的回复,这让传统的显著性检验变得复杂。
A/B Agent的核心设计要素有三个:流量分配、指标定义、置信度判断。
流量分配通常用分层(stratified)方式:确保实验组和对照组在用户类型、会话时长等维度上分布一致。很多团队直接用简单的随机分流,结果发现实验组和对照组的用户画像本来就不一样,结论自然站不住脚。
指标定义是A/B Agent成败的关键。你测的是”任务完成率”还是”用户满意度”?前者可以通过日志直接统计,后者需要设计隐式信号(用户是否继续提问、是否转人工、对话轮次是否异常高)。与模型版本发布相关的指标更特殊——比如”幻觉率”,这个指标需要人工抽样评估,无法全量自动计算。
最后是统计显著性。LLM输出的差异比传统UI元素大得多,所以 A/B Agent 通常需要更大的流量才能达到统计显著性。Anthropic 工程团队在公开分享中描述过他们的做法:用多个 Claude 实例同时跑实验,每个在各自独立分支上,每个实验至少跑满数百到上千次交互才做结论(详细案例见 Fortune 关于 Claude Code 团队的报道)。这个成本不低,但这是 AI 系统做实验的代价——没有什么捷径。
💡 Key Insight
A/B Agent的本质是把”AI行为”当作一个需要度量的系统属性,而不是一个可以一次性调对的参数——它需要独立的实验基础设施
Human-in-the-Loop:让人类判断始终可及
问题:AI可能出错,关键决策需要人类确认。
关键:根据AI的置信度和任务的关键性,动态决定是否需要人类介入。
Human-in-the-Loop(HitL)不是”AI做所有事,人类只在最后把关”——那种模式会把人类变成一个永远在赶工的后置审批节点。好的HitL设计是动态置信度阈值配合分级介入:AI根据当前输出的置信度,决定自己处理还是升级人工;人类则始终处于一个”可及但不一定每次都介入”的状态。
无 HiTL 的危险已经在多个 AI 工程实践案例中被反复观察:早期某大型出行平台在没有建立人工审核回路时,AI 编程工具的预算在数个月内失控消耗数千万美元(基于公开的后期复盘,详见 Loop Engineering 案例分析)。问题的根源不是 AI 不够好,而是系统在没有人工监督的情况下以失控的速度消耗资源。这暴露了一个核心矛盾:当 AI 置信度评分只反映模型对自己输出的自信,而不反映输出的实际正确性时,单纯的置信度阈值是危险的。
真正有效的HitL设计需要三个机制:动态阈值、升级路径、可解释的升级理由。动态阈值的意思是:同一个”置信度0.85”,在任务关键性高的场景(金融交易、医疗诊断)应该触发升级,在任务关键性低的场景(客服闲聊)则可以放行。升级路径必须短——如果人类需要花五分钟才能review一个AI决策,这个决策就不能依赖实时人工介入。可解释的升级理由则是给human reviewer的context:不是把一个裸结果丢给人类,而是附带”模型为什么这么判断、有哪些不确定性、哪些点需要重点看”的结构化摘要。
Addy Osmani 等工程师把缺乏 HiTL 的危害叫 Comprehension Debt(认知债务):AI 写的代码越多,人对代码库的理解越少(详见 Osmani 关于 Loop Engineering 的文章)。这正是 HitL 要解决的问题——不是替代 AI,而是确保人在循环里的价值是真实的,不是形式上的。
💡 Key Insight
Human-in-the-Loop的核心不是”人在最后审批”,而是一套动态的、可配置的介入策略,让AI的置信度和任务的关键性共同决定是否需要人的判断
实战:AI-Native架构设计原则
Context边界优先:按理解范围拆分,而非按业务能力
不是按业务能力拆分,而是按Context边界拆分。
传统DDD:按领域(用户、订单、库存)拆分服务 AI-Native:按Context范围(单轮对话、用户历史、全局知识)拆分
Context边界优先的设计原则,核心是回答一个问题:AI在处理一个请求时,需要知道什么?不需要知道什么? 这个看起来简单的问题,实际上是AI-Native架构里最需要反复推敲的设计决策。
以一个典型的电商场景为例。传统微服务拆分是:用户服务、订单服务、商品服务、库存服务。这是一种面向人类开发者的组织方式——每个服务对应一个业务领域,工程师容易理解。但当AI要处理”用户问为什么我的订单还没到”这个请求时,它需要的Context不是”订单服务里的订单状态”,而是:从用户提出问题这一刻起的对话历史、用户历史行为(全网购物记录)、当前订单的完整流转轨迹、以及相关的物流上下文。这四个Context片段横跨了三个传统微服务,如果按业务能力拆分,AI就不得不调用三个服务再自己做聚合——这正是前面提到的”Context在多个服务间传递,序列化/反序列化成了性能杀手”的根本原因。
所以Context边界优先的拆分逻辑是:先把AI处理请求所需的全部Context片段列出来,然后看哪些片段天然共生、经常一起被使用——这些片段构成一个Context-bounded service。 单轮对话内的上下文(Intent + 当前输入)天然是一个Context单元;跨会话的用户历史是另一个;全局知识(产品知识库、政策条款)是第三个。这三个Context各自有自己的生命周期和访问模式,适合作为三个独立的Context-bounded服务。
这个原则还有另一个推论:Context边界决定了AI的”理解范围”,而不是决定团队的组织边界。”谁负责这个代码”在AI-Native时代要让位给”谁为这个Context的质量负责”。
💡 Key Insight
Context边界优先的本质是按AI的理解范围来设计系统边界,而不是按人类开发者的业务领域来设计——这是AI-Native架构与微服务架构最根本的分歧
延迟感知设计:AI调用的架构响应
AI调用有延迟,架构需要考虑:
- 异步处理非关键路径
- 流式响应提升感知性能
- 预计算和缓存减少实时AI调用
AI调用的延迟和传统I/O延迟有本质区别。数据库查询、网络I/O的延迟是可预测的——100ms以内,基本稳定。但调用GPT-4o的延迟是高度可变的:快的时候500ms,慢的时候15秒。架构对这种不确定性的响应,不能靠”等它回来”,而必须从一开始就假设AI调用是异步的、可中断的、需要后备方案的。
流式响应(streaming)是降低感知延迟最有效的手段。不是等AI生成完整回复再返回,而是让AI生成的同时就向用户推送token——用户的等待从”5秒后看到完整答案”变成”每秒看到10个token涌出”。这对用户体验的影响是惊人的。GitHub Copilot、ChatGPT都是这么做的。但在架构层面,流式响应要求你的API层和前端都支持Server-Sent Events或WebSocket,这往往需要改造现有的请求处理管线。
异步处理是另一个核心策略。一个AI-Native系统的请求处理链路,通常只有核心路径(用户输入→Intent识别→Context组装→AI调用)必须同步;用户画像预加载、知识库预热、非关键路径的结果通知都可以异步。在那个客服系统的故事里,”70%的代码是AI生成的,但AI并不理解这个复杂的架构”——这种讽刺的根源之一,就是他们把大量非关键路径也做成了同步AI调用,导致整个系统被AI延迟拖死。
预计算是延迟感知设计里最反直觉的部分:不要等AI需要什么才去算什么,要在空闲时就算好。 用户的全局知识索引、常见问题的回答模板、意图分类的历史模型——这些都是可以在后台预计算并缓存的。Context Cache(模式二)本质上是预计算策略的一种实现。
💡 Key Insight
延迟感知设计的核心不是”让AI调用的更快”,而是从架构层面把AI调用从同步关键路径上移开,让AI延迟变成一个可管理的、异步的、不阻塞用户界面的东西
可观察性优先:让AI行为可见可追溯
AI的行为比传统代码更难预测,需要更强的可观察性:
- 记录每次AI调用的输入输出
- 跟踪Intent理解和路由决策
- 监控Context使用效率
传统代码的日志告诉你”发生了什么”——函数被调用了,参数是什么,返回值是什么。AI调用的日志必须告诉你”AI在想什么”——它对输入的理解是什么,它选择了哪个模型,它的Context里有哪些片段,它的置信度是多少。两者维度完全不同。
一个完整的AI可观察性体系,至少要记录四类数据:输入信号(User Input + Context)、Intent解析结果、模型路由决策、输出质量信号。 输入信号里要特别记录”Context使用效率”——这次请求带了512K的Context,模型实际用了多少?这影响你优化Context压缩策略的判断。Intent解析结果要记录Router的置信度和最终路由决定,这是你判断”用户真正想要什么”的核心数据。模型路由决策则记录了每次选择大模型还是小模型、为什么选——这是Model Gateway优化的基础。
工具层面,Langfuse和Helicone是当前AI可观察性的两个主流开源选择。Langfuse偏向LLM应用的调试和评估,支持trace、prompt版本管理、eval评分;Helicone则偏向请求层面的指标观测,支持自定义属性、速率限制、成本追踪。两者不是互斥的,很多团队会同时用——Langfuse看”AI行为对不对”,Helicone看”AI调用贵不贵、省不省”。
AI可观察性最难的不是建仪表盘,而是建立质量基准线(baseline)和持续评估机制。你需要先跑一批标准请求,记录AI输出的质量分数,建立baseline;然后每次系统变更(换模型、改prompt、调Context策略)后,重新跑同一批请求,对比分数变化。没有baseline的监控是盲目的——你看到延迟从1秒变成2秒,但你不知道这是好事还是坏事。
💡 Key Insight
AI可观察性的核心是把AI的”思考过程”变成可观测的数据——Intent解析、路由决策、Context使用效率、输出质量信号——而不是只观测输入和输出两个黑盒端点
渐进式AI化:判断哪些任务值得AI介入
不是所有功能都需要AI:
- 简单的CRUD:传统代码
- 复杂判断:AI辅助
- 创造性任务:AI主导
渐进式AI化的核心是一个判断框架:这个任务,AI介入的成本(延迟、金钱、不可预测性)是否低于AI介入的收益(质量、速度、扩展性)? 这个框架不应该是模糊的,而应该是可量化的。
具体来说,每个需要考虑AI化的功能,都应该从三个维度评估:
确定性维度:这个任务是否有唯一正确答案?越是确定性高的任务(如”计算两个日期之间的天数”),越不适合AI;越是开放判断(如”这封邮件的语气是愤怒还是失望”),越适合AI。
频率维度:这个任务每天被调用多少次?如果一个功能每天被调用10万次,即使每次AI调用节省1秒,总收益就是27小时/天,这个投资是值得的。但如果一个功能每天只被调用1次,为了AI化而引入的复杂性可能就不值得。
质量收益维度:AI介入能带来多少质量提升?一个简单的是/否判断,AI介入可能只提升5%准确率;但一个开放式文本生成,AI可能比规则引擎好10倍。质量收益越大,AI化的动机越强。
这个框架还有一个时间维度:今天的AI化决策,可能因为API价格下降或模型能力跃升而在6个月后变得过时。 所以渐进式AI化不仅是”现在要不要AI化”,还包括”建立机制定期重新评估”。很多团队在2024年认为太贵的AI化场景,在2026年可能已经变得经济。
对于已有代码库迁移到AI-Native的团队,渐进式AI化还有一层含义:不要试图一次性把所有功能都AI化,而是从”AI介入收益最大、确定性最低”的场景开始,优先处理那种”规则引擎永远写不对、但AI能做对”的任务——这类任务通常也是团队最痛苦的技术债。
💡 Key Insight
渐进式AI化的本质是把”要不要用AI”从一个哲学问题变成一个可量化的工程决策:确定性、频率、质量收益三个维度,算清楚投入产出比再做决定
架构决策矩阵
| 决策维度 | 传统方案 | AI-Native方案 |
|---|---|---|
| 服务拆分 | 业务领域 | Context边界 |
| 数据存储 | 关系型数据库 | 向量数据库 + 传统DB |
| 处理流程 | 同步 | 异步 + 流式 |
| 错误处理 | 重试、降级 | 置信度阈值、人机协作 |
| 缓存策略 | 数据缓存 | Context缓存 |
| 扩展性 | 水平扩展服务 | 水平扩展AI实例 |
写在最后
架构模式的演化,本质上是对”复杂性在哪里”这个问题的不断重新回答。
在单体时代,复杂性在代码内部;在微服务时代,复杂性在服务间的交互;在AI-Native时代,复杂性在Context的管理。
优雅的技术组织不是使用最流行架构模式的组织,而是最懂得为AI组织Context的组织。
回到开头的故事:那个用微服务架构硬撑AI-Native客服系统的独角兽,他们的失败不是技术选型的失败,而是认知框架的失败——他们用人类开发者的思维去设计AI运行时的上下文。就像2010年代很多团队用单体思维去套微服务,结果画虎不成反类犬。
六大战术模式和四大设计原则,不是要你推倒重来,而是提供一个AI-Native的决策框架。Intent Router让你知道用户想要什么;Context Cache让AI不用每次重新计算;Model Gateway在成本和质量之间找到最优解;Feedback Loop让系统从错误里学习;A/B Agent让你安全地实验;Human-in-the-Loop确保人类判断始终可及。四大原则——Context边界、延迟感知、可观察性、渐进式AI化——则是这六个模式得以落地的结构性保障。
AI-Native架构的成熟还需要时间。2025年的我们,就像2012年的微服务先驱——知道方向是对的,但还在摸索具体路径。这不是坏事:正是这种不确定性,给了早期实践者建立竞争优势的机会。
向死而生,不是悲观,是清醒。承认传统架构模式的局限,然后拥抱面向AI的新范式。
这就是AI-Native软件工程的智慧。
💡 Key Insight
优雅的技术组织不是使用最流行架构模式的组织,而是最懂得为AI组织Context的组织——这一点在2025年还没有被广泛理解,这恰恰是早期实践者的机会
延伸阅读
经典案例
- OpenAI的API架构设计
- LangChain的架构演进
- Claude的上下文管理策略
技术实现
- Vector Databases: Pinecone, Weaviate, Chroma
- LLM Orchestration: LangChain, LlamaIndex
- AI Observability: Langfuse, Helicone
学术与理论
- 《Designing Data-Intensive Applications》: 数据密集型应用设计
- 《Building Microservices》: 微服务架构
- 《Fundamentals of Software Architecture》: 软件架构基础
Published on 2025-04-01 深度阅读时间:约 12 分钟
💬 评论
💡 使用 GitHub 账号登录 即可参与讨论