从零开始以 AI 为核心构建系统
最近半年我帮几个团队做架构评审,几乎每次都会遇到同一个提问:“我们已经接入了大模型,这算不算 AI Native?”等我看了代码,发现绝大多数情况都是传统 CRUD 系统旁边加了一个聊天机器人,或者在原有接口里塞了几个提示词调用。这本质上还是 AI 增强(AI Enhanced),离真正的 AI Native 还差得很远。
这篇文章我想把“AI Native 架构建议”这件事讲透:不是为了追热词,而是当系统从设计之初就把模型推理、上下文记忆、Agent 编排当成一等公民来对待时,我们作为架构师到底要重构哪些东西。我会分享一套从零构建 AI Native 系统的分层蓝图、每个模块背后的设计理由,以及我实际踩过的坑。如果你正准备做一个新项目,或者想把现有系统从“外挂 AI”演进成“内生 AI”,这篇文章值得花二十分钟读完。
1. AI Native 不是“接入大模型”,而是重新定义系统边界
1.1 三种系统的边界在哪里
很多团队把 AI 能力当作一个独立模块,业务流程该怎么样还是怎么样,用户数据进了 MySQL,日志进了 Elasticsearch,大模型只是业务逻辑里的一个分支。我习惯把这种系统叫 AI-Enhanced(AI 增强型)。
往上一层是 AI-Oriented(AI 导向型),大模型承担了核心决策,比如智能客服、推荐排序,但系统边界仍然是人定的:用户来了,先走意图识别,再走知识库检索,最后模板生成。流程是硬编码的,模型只是在节点上做推理。
而 AI-Native(AI 原生型)从系统骨架层面就不一样:系统的数据模型、服务划分、状态流转、甚至接口协议,都在为模型的使用方式服务。用户请求进来,系统不是按固定的 controller-service-dao 链路去处理,而是由一个编排层根据当前上下文动态决定调用哪个模型、哪些工具、哪个知识源。业务边界不再是固定的微服务边界,而是由模型能力和工具调用的协作方式重新定义。
我用一个比喻来帮团队理解:AI-Enhanced 是给公司请了一个专家顾问,平时坐旁边,有需要就问他;AI Native 是把这个专家变成公司的核心运营中枢,所有业务协作、决策路径、知识管理,都要围绕他的能力上限和工作方式来重新设计。
1.2 反直觉的结论:AI Native 不等于全自动
很多人设计 AI Native 系统时会走进一个极端——觉得既然“AI 为核心”,就应该让模型全权处理所有事情,人在环里的节点越少越好。我在项目里踩过这个坑之后,结论恰恰相反:越成熟的 AI Native 系统,越依赖“确定性闸门”来控制模型的行为边界。
模型是一个概率推理器,它擅长的是把模糊的用户意图转化为一系列可执行的子任务,但子任务里如果涉及金额支付、权限修改、数据删除这类高风险操作,绝对不能只靠模型判断。更合理的设计是:模型负责理解意图和制定计划,执行层对关键动作设置硬校验,超过预算要人工审批,异常行为要有熔断开关。
所以 AI Native 的本质不是把所有决策交给模型,而是以模型推理为中枢,在它周围构建数据、工具、反馈闭环,同时保留必要的规则引擎作为安全边界。Native 的是组织架构,不是自动化程度。
1.3 技术底座什么时候才算成熟
不是所有团队都能在五年前做 AI Native,因为模型能力跟不上。真正让这套架构变得可行的,是三件事的同步演进:第一,基础模型的复杂推理能力(尤其在代码生成、逻辑判断、长上下文的处理上)达到可用水平;第二,Agent 编排和工具调用的协议逐渐标准化,例如 Function Calling 机制、MCP(模型上下文协议)这类生态开始统一;第三,多模态能力让系统可以同时消费文本、图片、音视频输入,而不再局限于结构化表单。
这三件事意味着我们在设计系统时,可以默认模型能理解复杂上下文、能调用外部工具、能解释自己的决策过程。而架构师的工作,就是把这个“默认能力”转换成可运维、可评估、可控的产品系统。
2. 从零起步:一张能落地的 AI Native 分层蓝图
2.1 先看整体分层逻辑
我给出的架构不是传统微服务那种按业务域拆的方式,而是按模型协作链路来分层。整个系统分成六个逻辑层:模型访问层、上下文与记忆层、Agent 编排层、业务资源与工具适配层、交互与体验层、治理与可观测层。每层各管一件事,层与层之间通过标准协议通信,后续替换模型、增加工具、调整策略都不会互相牵连。
如果你把整个 AI Native 系统想象成一个成熟的项目团队,那么模型访问层是这个团队能够同时对接的多个外部专家(不同厂商、不同规格的模型);上下文与记忆层相当于团队的协作文档库和工作记忆,每个人都能读取和更新;Agent 编排层是项目经理,负责把大任务拆成子任务并分派给合适的人;业务资源与工具适配层是团队日常使用的工具箱,每个工具都需要有清晰的说明书;交互与体验层是前台接待处,负责和用户进行实时对话并收集反馈;治理与可观测层则是质量部和监控室,确保每个环节可追踪、可审计。
2.2 模型访问层:统一入口是一切的基础
模型访问层是整个架构的流量入口,所有大模型调用都经过它,而不是让业务代码各自拼接厂商 SDK。这个层至少要提供三样东西:统一接口协议、模型路由策略、故障处理策略。
统一接口协议的意思是业务方调用模型时,不关心背后是 GPT、Claude 还是国产开源模型,只面向一个抽象接口传消息。路由策略解决的是不同场景该用哪个模型的问题:简单分类任务走小模型省成本,复杂推理任务才上旗舰模型。故障处理策略则包含超时重试、模型降级(比如主模型挂了自动切备用)、以及限流熔断,防止某个客户端的异常流量把配额耗尽。
这个层在传统系统里没有对应物,最接近的可能是 API 网关,但比网关更厚,因为它还要负责注册模型元数据、管理上下文窗口限制,甚至把同一份请求同时发给多个模型做结果对比。
{ "model": "router", "strategy": "cost-first", "candidates": [ { "provider": "openai", "model": "gpt-4o", "max_tokens": 128000, "cost": "high", "capability": ["reasoning", "tool"] }, { "provider": "local", "model": "qwen2.5-72b", "max_tokens": 32000, "cost": "low", "capability": ["reasoning"] } ], "rules": { "task_type": "classification", "max_tokens_estimate": 500, "fallback_order": ["local", "openai"] } }2.3 上下文与记忆层:决定系统智商的核心
传统系统里数据放在数据库,业务逻辑处理的是结构化字段。AI Native 系统里,模型的行为质量严重依赖上下文的质量。这个层要解决三个问题:短期上下文、长期记忆、语义缓存。
短期上下文是指一次用户会话内所有和当前任务相关的信息,比如对话历史、检索到的文档片段、工具执行返回的结果。设计要点是“保持精简”,不能无限堆积原始消息,而是在到达模型窗口上限之前,由上下文管理器执行摘要、裁剪和结构化压缩。
长期记忆则跨会话,包含用户偏好、历史目标、知识库沉淀。它需要向量化存储加关键词检索混合使用,模型在每次决策前会把最相关的记忆拉回短期上下文。
语义缓存在很多架构里被忽略,但其实非常有用,尤其适合用户提问高度重复的产品:把相同语义的请求结果缓存住,下次遇到类似问题直接返回,不需要再次调用模型。这一步能省下大量成本。
2.4 Agent 编排层:把大任务拆成可执行的子流程
Agent 编排层是整个系统最复杂、也最容易失控的部分。它接收来自交互层的用户目标,通过推理生成执行计划,然后按计划调用工具、汇总结果、判断是否达成目标,必要时根据反馈修正计划。
设计这个层时,我坚持一个原则:采用“计划-执行-反馈”的循环结构,而不是“一条链子走到黑”的顺序结构。即 Agent 每一步都先评估当前状态和目标之间的差距,再决定下一步动作。这样即使前一步工具返回异常结果,Agent 也能实时调整策略而不会盲目继续。
同时,编排层必须设置硬性边界:最大步数限制、单步超时、子任务预算。否则很容易出现模型在一个问题上反复尝试,导致成本和延迟双失控。关于这部分的具体细节,我会在后面踩坑章节单独展开。
2.5 业务资源与工具适配层:给模型一双真正的手
模型本身没法直接操作你的订单系统、支付系统或数据库,必须通过工具适配层暴露能力。这个层要做的是把系统已有的 API、内部服务、数据查询能力,包装成模型可识别的“工具”,并给每个工具配一份结构化描述文档。
关键点在于工具描述的语义精确度。模型靠描述来决定“什么场景该调用哪个工具”,如果工具命名含糊或参数说明不完整,模型就会胡乱调用。实操中我会要求每个工具都必须提供:功能概述、适用场景举例、参数类型和取值范围、返回结构示例、错误码说明。这些信息打包成 JSON Schema 格式,在每次请求时注入给模型。
还要做工具权限分级。不同场景下模型能调用的工具集合不同,例如只读场景只能调查询类工具,运营后台场景可以调用低风险写操作,涉及财务类的工具则必须经过人工确认才可执行。这块清单必须放在权限中心统一管理,并且每次调用都要记录审计日志。
2.6 交互与体验层:流式响应与人机协同节点
用户可感知的部分集中在交互层。AI Native 系统的交互形式和传统系统完全不同:响应是流式的,用户能像打字聊天一样看到任务逐步推进;系统在关键节点会主动向用户确认(这是那个“确定性闸门”的交互体现);用户可以随时介入纠正 Agent 的执行方向。
交互层还要负责把模型内部的推理过程翻译成人能看懂的语言。例如 Agent 正在执行三步操作,交互层要实时展示“正在分析需求”“正在检索政策文件”“正在生成合同草稿”之类的过程状态。这样用户就不至于面对一个黑盒等待结果。
反馈闭环也在这里收集:用户对某条生成的满意/不满意信号,会回流到记忆层和评测集,持续优化后续行为。没有反馈闭环的系统,不管模型多强,都会在持续使用中累积行为偏差。
3. 五个核心设计决策:我为什么这样定
3.1 模型网关为什么不能省
有人觉得团队小、业务简单,直接调用厂商 SDK 就行,何必多包一层。我一开始也觉得网关是过度设计,但半年内经历了三次不得不改的场景之后,看法完全变了。
第一次是模型厂商价格调整,我们想把主推模型从旗舰版切到性价比版,因为业务方直接在代码里写死了 SDK,结果改了十几个服务;第二次是某模型发生了安全事件,需要紧急替换,当时没有网关统一阻断,线上还在持续调用问题模型;第三次是要给不同客户配置不同模型白名单,因为没有网关层,只能逐服务加配置。
模型网关在 AI Native 系统里的地位,相当于传统架构里的注册中心和 API 网关,是所有模型流量的必经之路。最重要的是它让模型变更变成一次配置改动,而不是牵一发动全身的重构。
3.2 上下文管理为什么要独立成层
如果只是做一个简单的聊天机器人,把历史消息一股脑传给模型就够了。但真正做产品级 AI Native 系统,上下文管理必须独立出来。
原因一:上下文窗口虽然越来越大,但模型对中部信息的注意力明显弱于头部和尾部。你把二十轮对话、十份文档全塞进去,模型常常会漏掉关键信息。独立的上下文管理会做压缩、摘要和优先级排序,只把最相关的部分送入模型。
原因二:token 成本随输入长度线性增长(实际上还有惩罚项),无序堆积上下文的系统,可能在用户每次提问时都重复消耗大量 token。独立成层之后,可以统计每个会话的上下文使用量,做预算控制。
原因三:长期记忆的读写策略必须统一定。如果每个业务线自己决定往记忆库写什么,后续跨业务协作时模型读到的记忆是相互冲突的。
我把这层设计成 Pipeline 模式:原始信息进入上下文管理器之后,先经历清洗(去重、拦截敏感信息)、然后压缩(生成结构化摘要)、最后按任务相关性排序,输出一个精简但信息密度最高的上下文包。
3.3 Agent 编排和工具为什么不能耦合
很多团队做 Agent 时,把工具调用逻辑写死在编排代码里,比如一个函数专门调用订单查询工具,另一个函数专门调用库存查询工具。短期看这样确实直观,但很快就遇到两个问题:新增工具样例需要改代码;同一套编排逻辑无法复用到不同领域的系统上。
我的做法是让工具通过“定义-执行-反馈”三阶段协议参与编排。定义阶段:工具描述存入工具注册中心(Schema 描述由工具提供方维护);执行阶段:Agent 只输出一个格式化的工具调用请求(包含工具名和参数 JSON),由执行引擎执行并回传结果;反馈阶段:执行结果以标准化格式返回到 Agent 上下文,Agent 决定下一步动作。
这样编排逻辑根本不需要知道工具内部怎么实现。要接一个天气查询工具,只需要在注册中心做一项配置。项目里我把它做成了可视化管理界面,研发和运营都能自助添加工具。这带来的好处是 Agent 的复用性大幅提升,同一个编排引擎可以服务多个业务场景。
3.4 Agent 状态必须外置
在早期的原型里,Agent 的执行状态是保存在内存变量里的,比如当前步骤、已收集信息、待办列表。这在单机演示没什么问题,但一旦要支撑多用户并发、跨节点重试、人工介入审批,就会崩溃。
我后来坚持“无状态 Agent”设计:Agent 本身不保存任何私人状态,所有状态(当前计划、已完成步骤、已获取的信息、待确认的清单)都持久化到外部状态存储中。每次执行下一步时,从状态存储恢复完整现场,执行完再把新状态写回去。
这个设计带来的直接好处有三个:第一,任务可以随时暂停和恢复,比如用户在审批环节卡了两小时,回来还能继续推进;第二,执行过程完全可审计,每个时间点的状态都能重放;第三,便于测试,因为每个状态的输入输出都是确定的,可以针对性地写回归用例。
3.5 评测体系要从第一天开始搭建
AI Native 系统的质量评估不能靠“上线之后看效果”,而是要在开发第一天就建立评测基准。我做的评测体系分三层:单元评测、场景评测、在线评测。
单元评测针对具体的提示词模板和工具调用逻辑,比如“给定一个模糊订单查询请求,Agent 能否正确选择订单查询工具并提取参数”这类,可以离线批量跑;场景评测覆盖完整的用户旅程,例如从“客户咨询返修政策”到“生成返修工单”的端到端链路;在线评测则通过灰度流量,实时对比新版模型配置和线上版本的满意度指标。
没有这套体系,你根本无法判断“升级模型版本到底是变好了还是变坏了”,也无法在新模型上线前拦截明显的行为退化。这是我见过很多 AI 项目翻车的直接原因——大家只看功能演示,不看回归指标。
4. 渐进落地路径:从“外挂 AI”到“内生 AI”
4.1 先用一张表判断哪些业务值得 AI Native 化
我建议团队不要盲目把整个系统翻成 AI Native,而是先用一张表筛选候选场景:
| 场景特征 | 适合 AI Native 化 | 保持传统架构 |
|---|---|---|
| 用户意图复杂多变 | 是,模型擅长解析模糊需求 | 否,规则根因跟不上 |
| 执行路径需要动态调整 | 是,Agent 可以规划 | 否,流程必须固化 |
| 容错容忍度高 | 是,允许模型偶尔犯小错 | 否,系统不能出错 |
| 反馈闭环容易建设 | 是,可以持续优化 | 否,没有评价数据 |
| 可解释性要求高 | 谨慎,需要人工闸门配合 | 否,需要确定性逻辑 |
如果某个业务场景是“固定流程、高并发、零容忍错误”,即使强行做 AI Native 也很难比传统系统更好。比如订单状态查询这种高频基础功能,用传统接口处理又稳又快,没必要让模型参与。真正的机会在于那些传统规则引擎做不好、处理逻辑复杂、需要理解上下文的场景。
4.2 选试点场景的三条标准
我通常会建议选一个“中等复杂度、有反馈闭环、不影响核心资金链路”的场景先跑通。中等复杂度保证问题足够有价值但又不至于太难;有反馈闭环指的是用户对结果的满意程度可以量化,例如客服场景的工单结案时间、文档处理场景的采纳率;不影响核心资金链路则为安全兜底,万一模型行为失控,不至于造成资损。
很多团队会犯一个错误:第一个试点就选了“全自动客服”,想一步到位。结果就是客服不满意、客户不满意、运营不满意,项目死得很惨。正确的做法是先从“辅助坐席生成回复建议”开始,模型给出建议,坐席确认后发送。这一方面积累了真实用户反馈数据,另一方面也把人对修订行为变成了有价值的训练样本。
4.3 从外挂到内生的三种过渡策略
如果你已经有一套老系统,不能推倒重来,我总结了三种过渡策略供参考。
第一种是旁路模式(Shadow Mode)。所有业务流量照常走老逻辑,但同时把数据复制一份给 AI Native 系统跑仿真,两边结果做对比。这种模式对线上无风险,非常适合积累第一批评测数据。
第二种是双流程模式(Human-in-the-Loop)。AI 系统直接参与业务流程,但在关键节点都必须经过人工确认。这个阶段开始产生了真实的人工修正数据,是评测集最宝贵的扩增来源。
第三种是完全接管模式。当统计数据显示 AI 版本在某场景下的效果稳定优于人工/规则版本,再切换到完全接管,同时在后台铺设异常熔断开关,一旦指标超过警戒线立即回滚。
4.4 组织方式和工程配套要同步升级
AI Native 架构同时带来研发组织的角色变化。传统研发团队里是产品经理定义需求、后端实现 API、前端消费接口;AI Native 时代,团队里至少需要三类新角色:提示词工程师(或叫模型行为工程师)负责调优提示词和工具描述,让模型的决策质量稳定可控;数据标注与评测工程师负责建立和维护评测集,做模型的回归验收;AI 平台工程师负责模型网关、上下文管理、Agent 编排这类公共服务,类似于传统团队里的平台基建团队。
还要注意,提示词和工具 schema 应该纳入版本管理。我在团队里要求所有模型行为相关配置都走 Git 提交,每次变更必须关联一批评测集结果。这样任何一个线上问题的出现,都能追溯到是哪版提示词或哪个工具变更引入的,否则 AI 原生系统会变成“玄学系统”。
5. 真实踩坑记录:这半年让我长记性的五个问题
5.1 上下文爆炸:日志拼接让模型输出质量骤降
我们内部做过一个代码辅助系统,每次请求会把代码仓库的变更 diff、最近 commit 日志、相关测试结果全部塞进上下文。结果模型给出的建议开始变得空泛,经常说“建议优化代码质量”这种正确的废话。
排查后发现问题出在信息冗余。diff 可能有上千行,日志文件也有很多噪音,模型被淹没在海量低信号数据里,反而感知不到真正的目标。后来上下文管理器加了“相关性剪枝”:先让一个快速模型对信息块做相关性打分,只保留得分最高的一部分候选信息进入最终上下文。
这个经历给我的教训是:上下文管理器的核心目标不是“塞得下”,而是“留得精”。宁可让模型看到的信息少一点,也要确保每条信息都是高相关的。
5.2 token 成本失控:用户问一次,系统花了一毛钱
我们的文档问答系统早期是直接把用户问题对应的整本手册塞给模型生成回答,单次请求成本高得可怕。后来对账发现,高峰期每天光 token 费就足够给团队加一次下午茶。
优化手段组合了三招:首先,引入检索增强生成(RAG),只检索和用户问题最相关的那几个切片,而不是传整本手册;其次,增加语义缓存,同一类问题的结果可以直接复用,实测缓存命中率能做到三成以上;最后,给不同模型配不同的超时和降级策略,简单问题跳转小模型。
成本治理在 AI Native 系统里是必须从架构层面考虑的问题,不是事后优化。预算上限、单请求 token 预估、降级策略,这些要在网关层就写好规则。
5.3 Agent 死循环:一个简单任务跑了四十分钟
Agent 在尝试调用一个权限不足的工具时,被返回了错误码,然后它尝试用另一个工具去查权限,又失败,再尝试修改参数重试……最终连续调用了四十多次工具才被超时中断。
这个问题不是模型不够聪明,而是编排层缺少执行纪律。后来我给 Agent 加了三个约束:最大工具调用步数限制(默认 8 步);同类错误连续出现时必须停止循环并向用户请求输入;每个工具调用之间必须生成简短的解释,说明为什么这一步是达成目标所必需的。
加了这些约束之后,Agent 行为明显收敛,很少出现长时间原地打转的情况。关键原因是:有了明确的退出条件,模型在每一步都必须做出有价值的推进,否则就停下来找人。
5.4 幻觉结果回流:一个错误答案被缓存成标准答案
我们最初把语义缓存做成“命中即返回”,快是快了,但没有考虑缓存内容的正确性。某次模型对政策条款产生了理解偏差,生成了一个错误答案,结果这个答案被缓存,后面所有相同语义的用户都读到了错误版本。
排查之后,我们彻底改变了缓存策略:缓存只允许存储经过人工确认或者经过系统规则校验过的输出。对于模型直出的结果,可以短暂复用,但超过一定时间必须重新生成;高风险场景(涉及政策解释、数字计算)则完全禁止缓存命中。
这个教训扩散到整个记忆层:任何写入长期记忆的信息,都必须经过“可信度校验”。模型生成的内容不等于事实,这是 AI Native 系统设计者必须刻在脑子里的原则。
5.5 模型换版本:一次升级让满意度跌了 10 个点
厂商发布新版本那天,我们按惯例把线上流量切到新版本,结果用户满意度曲线在当天晚上明显下滑。回滚之后问题立刻消失。后来对比日志才发现,新版本在“格式遵循”上更强了,但“回答语气”变得更生硬,用户在意的其实是温度感。
这件事让我确立了模型变更流程:新版本不能直接上生产,要先在评测集上跑回归,再切小流量灰度,灰度期间必须对比满意度、耗时长尾、工具误用率等多个指标。每个模型版本要记录“行为指纹”,包含擅长领域、已知短板、最差场景样例,这样才能在后续决策中提前避开风险。
写在最后,算不上总结,只是我个人的体会。AI Native 架构建设到后期,真正决定系统上限的东西,往往不是单一模型的能力,而是你围绕模型构建的上下文质量、工具生态、反馈闭环和评测体系是否扎实。一个建议是:尽快建立“决策日志”机制,把每次架构选择的背景、候选方案、选择理由都记录下来。因为在 AI 时代,系统最重要的元数据就是上下文和决策本身,而你的架构流程,也会成为这个原则最早的实验场。