
做AI应用架构设计这几年我最大的一个感触是很多团队不是不会写代码而是画不清楚架构。传统Web项目里前端、后端、数据库、缓存往图上一摆接口一标大家照着开发基本不会跑偏。可换成AI应用事情完全变了。模型、提示词、知识库、工具调用、记忆管理这些东西互相纠缠光靠脑子想或者拿一张旧系统架构图往上套很快就会挂一漏万。我见过不少项目前期架构讨论很热闹一到落地就发现数据流没想清楚智能体该调哪个工具也没理明白。后来我把“图解”这件事重新捡起来专门用画图的方式拆AI应用效果立竿见影。这篇内容想结合我做智能体应用的实操经验把AI应用架构怎么画、画到什么粒度、用什么工具讲清楚适合正在做AI应用开发、智能体应用或者打算往这个方向走的程序员和运维工程师参考。1. 为什么AI应用架构特别需要“图解”1.1 传统架构图和AI应用架构图差在哪很多人觉得画架构图不就是一堆方块加箭头有什么可讲究的。其实传统应用架构和AI应用架构的“画法”底层逻辑完全不同。传统应用里系统的行为是可预测的界面调接口、接口查数据库、数据库返回数据链路相对固定画图时把模块和接口关系理清楚就行。AI应用则多了一个不确定的“模型决策”环节同样的用户输入换个大模型或者改一下上下文行为可能完全不一样。我整理过一个对比表格方便理解两者差异对比维度传统应用架构AI应用架构决策逻辑代码规则、状态机模型提示词动态生成数据流请求/响应相对固定检索、记忆、外部工具多路交织故障模式超时、死循环、数据库瓶颈模型幻觉、工具调用失败、上下文丢失变更频率随版本计划迭代Prompt、模型、知识库随时可能调整这张表想说明一个核心观点AI应用架构图如果还只画服务方块不画数据流和控制流那基本是一张“安慰图”。画了但不解决问题团队成员看着图点头真到排查问题时又各看各的。所以AI应用架构必须更强调数据从哪来、经过什么处理、到哪里去以及模型在哪些环节参与决策。这也是我坚持用图解方式来做AI应用设计的原因图不是为了好看是为了把不确定性摆到桌面上一起讨论。1.2 图解思维能解决哪些实际问题具体来说图解思维在AI应用开发流程中能扎扎实实解决四类问题。对齐需求。AI应用涉及的角色很杂产品经理关注用户体验后端关心接口和模型调用算法同学关心Prompt和召回效果运维关心成本和延迟。一张系统上下文图可以快速让大家站在同一个视角上。举个例子我参与的一个AI客服项目第一轮沟通时产品说“用户提问后要自动查订单”后端理解成“直接调订单接口”算法理解成“把订单信息全塞进Prompt”。后来把上下文图和数据流图画出来大家才发现需要先判断用户意图再决定要不要查订单以及查完订单后信息如何拼装。这种歧义光靠文档很难暴露图画出来一眼就能看穿。排查问题。线上AI应用出问题时最怕的就是链路太长不知道在哪一环断掉。比如用户说“帮我看看昨天告警”结果智能体回复“我无法访问告警系统”。光看日志很难快速定位。如果团队有清晰的时序图就可以沿着图逐步排查是入口没把请求转给编排层还是编排层没触发工具调用还是工具返回了空数据但模型没感知到。时序图在AI应用里价值堪比传统应用的调用链监控。评估风险。AI应用天然涉及数据外送、Prompt注入、工具越权等问题。把数据流图画出来后哪些用户输入会进入Prompt哪些业务系统会被外部工具调用可以一眼看清楚。有次我审一个智能体方案图上一根线从外部用户直接画到了内部工单系统的“创建工单”接口中间没有任何权限校验节点。现场就把这个问题堵住了。如果没有图这种安全问题很可能到上线测试才暴露。演进规划。架构图还能帮你判断系统能不能平滑升级。比如把模型接入画成一个独立组件后面换更强的模型只需要替换这个组件其他模块不受影响。把知识库画成独立数据层新业务接入时就能复用同一套检索链路。图解不是静态交付物它应该是一个可以跟着系统一起演进的规划工具。2. AI应用架构的核心组成拆解2.1 模型接入层不是简单的API调用很多AI应用架构图会把“大模型API”画成一个云朵然后业务直接调用。这种画法在原型阶段没问题但一旦上生产就会出问题。模型接入层在真实系统里需要完成的工作远不止发一个HTTP请求要做多模型路由不同场景用不同模型比如复杂推理用更强的模型简单分类用便宜的小模型要做统一的超时重试和降级模型服务不稳定时回退到备用模型还要做Token用量计量时刻掌握成本。画这一层时我建议把“模型网关”单独画成一个方框并在旁边标注它的职责统一API格式、管理模型路由、记录Token使用量。这里有个特别容易踩的坑上下文窗口管理。模型就像一个厨师厨房里的食材再多端上桌的菜也只能装一个盘子。当知识库召回内容、历史对话、用户当前问题都拼在一起时很容易超过模型的上下文长度。所以模型接入层还要包含一个“上下文组装器”负责裁剪、摘要、丢弃不重要的信息。这些细节如果不画进架构图开发时就会各显神通最后线上状态全凭运气。2.2 智能体编排层从Prompt到Agent这一层是AI应用和传统应用区别最大的地方。普通模型调用是“一问一答”但智能体应用需要“计划—行动—观察”的循环用户提一个复杂目标Agent先拆解任务决定调用哪些工具观察工具返回结果再决定下一步动作。编排层就是这个循环的“大脑”。在画编排层时要特别区分“工作流”和“Agent”。工作流适合任务路径固定的场景比如表单填写、固定审批流程每一步做什么完全预先定义好。Agent则适合开放场景比如用户问“帮我分析下最近系统的异常”它需要自己决定是先查告警还是先看日志。架构图里要明确标出哪些环节是流程化的哪些是模型自主决策的。我常见的问题是有人把所有逻辑都交给Agent图倒是简单了但成本、延迟、可解释性全面失控。反过来所有步骤都写死又失去了智能体该有的灵活性。一张好的编排层架构图应该像一张城市交通图既有固定线路工作流又有自由路网Agent决策还要标清楚哪里允许左转、哪里是单行道。2.3 数据与记忆层RAG和长期记忆AI应用的数据层相比传统应用的数据库设计要复杂得多。最典型的是RAG检索增强生成链路先把文档切分成片段做向量化后存入向量库用户提问时把问题也向量化召回最相关的片段再和问题一起丢给模型。画这一层时我坚持把“离线链路”和“在线链路”分开画。离线链路是文档上传、切片、Embedding、入向量库在线链路是用户查询、向量化、召回、重排、组装Prompt。两条链路混在一张图里很容易让人误解。还有一个容易忽略的是记忆层。智能体应用除了临时会话上下文还需要长期记忆比如用户偏好、项目背景、历史决策。架构图上应该画出不同的记忆存储位置比如Redis缓存短期会话、向量库存长期事实、业务数据库存用户画像。我调试过很多多轮对话相关问题最后都指向同一个原因记忆没有分层设计所有历史一股脑塞给模型要么超长丢失要么把无关旧事混进来干扰判断。数据层画清楚这些问题在代码之前就能发现。2.4 应用与集成层对外提供能力应用层是用户真正触点Web页面、小程序、企业微信/钉钉/飞书机器人等。很多架构图把这一层简化为一个“前端”框就完事但AI应用的渠道接入层远比传统前端复杂。它要处理消息格式转换、会话保持、异步回调、用户身份映射。比如机器人通过企业IM收到一条消息需要先解析消息卡片识别用户身份再把消息转成内部会话格式交给Agent最后把Agent的回复组装成适合IM平台的卡片。这一层还要画出几个横切能力权限与鉴权、限流与配额、审计日志。特别是审计日志AI应用必须记录用户原始输入、经过脱敏后的Prompt、模型输出结果、调用了哪些工具。一旦出现数据泄露或违规内容这些日志就是责任界定的唯一依据。我参与过的一个智能体项目上线第二天用户报告回答异常最后定位靠的就是审计日志。架构图上不画这一环等于系统裸奔。建议每个渠道接入模块都单独画出来标注使用的IM协议类型和鉴权方式。3. 图解AI应用架构的方法与实操3.1 一图看懂上下文先画系统上下文图动手画AI应用架构我强烈建议不要直接画组件图而是先画系统上下文图。这张图只回答一个问题“这个AI应用和谁交互外部系统和数据从哪里来”。整个系统在图中只画一个大的中心方框周边画出用户、第三方系统、模型服务、运维人员等角色用线条标出交互内容和方向。实线表示直接调用虚线表示间接依赖或消息订阅。实操时我喜欢用C4模型的思路但不严格套用。先画一张“上帝视角”的图让产品、非技术同事也能看懂。有一次给业务方讲解AI运维助手的方案我没有先讲Agent或RAG而是画了用户、告警系统、日志系统、知识库四个外部角色所有人都马上理解了助手的位置。系统上下文图不必高深但它能锁定系统边界避免后面讨论时出现“这个功能是不是应该由AI来做”的争论。画完之后再决定哪些外部依赖是必须的哪些可以放到二期这个过程本身就是一次需求收敛。3.2 组件关系图把模块和依赖画清楚有了上下文图下一步就是拆组件。组件关系图重点展示AI应用内部有哪些模块模块之间如何调用。我习惯每个模块用三行信息名称、职责、关键配置。例如渠道接入层接收IM消息转内部格式配置密钥、平台回调URL。智能体编排层拆解任务调用工具和模型配置最大循环次数、超时时间。模型网关统一模型API路由、重试、Token计量配置模型列表、备用模型、上下文字数上限。向量知识库文档切片、Embedding、相似度检索配置切片长度、Overlap、TopK、阈值。工具插件连接告警、日志、工单等外部系统配置API地址、鉴权方式。箭头方向很关键我统一用实线表示同步调用虚线表示异步事件或数据流。在AI应用里还要额外标注“模型决策点”用菱形或者圆点标出模型参与判断的地方这样看的人才能知道哪些流程是确定的、哪些是模型自由发挥的。组件图画到这个程度开发分工就基本清楚了每个小组负责一个框边界明确。3.3 时序图理清用户、Agent、工具、模型的交互组件图是“静态关系”时序图才是AI应用里最有含金量的一张图。因为智能体的行为是动态的一个请求下来可能要在用户、渠道层、编排层、模型、工具、知识库之间来来回回穿梭很多次。必须画清楚每一步的顺序不然开发很容易把该并行的写成串行或者把该串行的写成并行。一个典型的AI问答时序可以这样走用户发送提问 → 渠道接入层做鉴权和格式转换 → 编排层判断需要知识库信息 → 调用向量检索拿回相关片段 → 编排层组装上下文并调用大模型 → 模型判断还要查业务系统 → 编排层调用工具插件比如告警查询 → 把工具结果再次交给大模型生成最终回答 → 返回给用户。这个图里右边可以标注每次交互的耗时。我实测过一个Agent应用一次简单问答因为“模型—工具—模型”循环了两轮耗时8秒用户完全没法忍。后来在时序图上分析发现第一轮模型调用只是为了确认意图完全可以前置一个快速分类模型完成。这种优化没有时序图很难直观看到。画时序图时还要把超时和失败分支画进去比如工具调用超时后Agent是重试还是直接告知用户这些决策点都是最容易出bug的地方。3.4 部署架构图从开发到上线的资源视图逻辑上的组件图画得再漂亮还得落到部署环境。部署架构图解决的是“东西放在哪里”应用跑在哪些服务器上模型API是外部依赖还是内部服务向量库用托管还是自建消息队列和缓存放在哪一层哪些服务暴露公网哪些只能内网互通。特别要提醒一点AI应用的逻辑组件和物理资源并不总是一一对应。模型网关在逻辑上是一个独立模块物理上可能是API网关加云函数加多个模型服务端点的组合。画部署图时要明确标注每个物理节点的环境比如Kubernetes集群、虚拟主机、Serverless。还要画上网络策略一般渠道接入层需要公网入口但编排层、数据层都要收在私有网络里。我见过一个项目把向量库直接暴露在公网只靠IP白名单保护简直是把知识库大门钥匙挂在门口。部署图上把这些边界画清楚上线前做安全评审时就能省去大量口舌。4. 实战案例一个“扣子”风格智能体应用的图解设计与落地4.1 需求与模块划分前面讲了不少方法论这里用一个实际案例串一遍。我最近在一个项目里用扣子Coze平台做AI智能体应用场景是运维助手运维工程师在IM群里机器人让它分析告警、查询日志、生成处置工单。需求看似简单但拆开看就发现需要多个模块配合。结合扣子的玩法我把应用拆成五个模块入口模块挂在企业IM群聊接收消息并返回结果智能体编排模块用扣子工作流组织“分析—决策—行动”的流程工具插件模块对接告警系统、日志平台、工单系统每个工具做成独立插件知识库模块收录了常见故障排查手册、运维操作规范模型服务用大模型做意图理解、总结和生成回复。这个划分不是拍脑袋而是遵循了“变更频率相似”的原则工具插件变更多知识库内容更新频繁编排模块相对稳定。把不同变更频率的组件拆开后续迭代才不会被互相卡住。4.2 画图过程中的关键取舍这轮画图我最深的体会是架构图不是地图不能把所有细节都放上去。一开始我把每个工具插件的鉴权方式、每个知识库的切片参数都画在主图上结果图变得一团糟团队没人愿意看。后来我做了分层取舍主图只画核心流程和关键组件把细枝末节放到子图或附录里。具体做法是先画一张“请求主线图”从用户提问到最终回答只保留最核心的路径用户→入口→编排→模型/知识库/工具→返回。然后把工具路由逻辑单独画一张子图把知识库离线更新流程又放到另一张子图。为了方便不同角色我还列了一个阅读索引产品经理和业务方看上下文图开发人员看组件图加时序图运维和部署人员看部署图安全评审看数据流和安全边界标注。这样画图的过程其实也是在逼自己把系统分层想清楚。4.3 从图到代码的落地映射画图最终是为了落地。在扣子这类低代码/半代码平台上架构图上的组件和工作流节点是可以直接对应起来的。比如“智能体编排模块”对应扣子工作流画布里的节点编排“工具插件模块”对应平台里的Plugin或自定义工具“知识库模块”对应平台里的知识库资源“模型服务”对应大模型节点里的具体模型和参数配置。我在实际落地时会先把架构图拆成开发任务清单。第一步先把入口和IM渠道的对接跑通确保消息能进来能出去第二步接模型服务确定意图判断和第一版回复能力第三步建知识库灌入运维文档并测试检索效果第四步逐个接入工具插件第五步把编排逻辑在扣子工作流里串起来做端到端测试。每个任务完成后回到架构图上做勾选遇到需要调整整个链路的地方不是改代码而是先改图、评审、再动手。这样做的好处是图和代码始终保持同步不会出现代码都写完一大半、图还停留在上个版本的情况。5. 画架构图时最容易踩的坑与排查技巧5.1 太追求细节导致没法沟通我在这个上面栽过跟头。有一版架构图我把所有模块、所有API、所有缓存策略全画进去了图上密密麻麻几十个框。自己看着很爽拿出去评审发现没人认真看。后来才想明白一张图能承载的信息量有限给谁看、表达什么决定了画图的方式。现在我做图严格执行“一图一主题”单图核心元素尽量控制在几个关键模块以内细节留给下一层子图。如果一张图需要解释超过三分钟说明画复杂了。还有一个更实操的经验画图前先用白板或手写板做草图。草图只画主线不追求符号规范等大家讨论到共识了再花时间用正式工具整理成精美版本。千万别一上来就开画图软件抠边界对齐那会严重消耗讨论时间。我自己的习惯是白板草图阶段至少占七成时间正式绘图只花三成。毕竟图是沟通工具不是视觉作品。5.2 混淆逻辑架构与物理架构逻辑架构关心的是“系统分成哪些逻辑单元”物理架构关心的是“这些单元部署在哪里、怎么运行”。很多人画图时把这两层混在一起比如把“模型网关”直接画在“Kubernetes集群”里面同时又在这个框里画一个“外部的大模型API”导致看不清楚哪些依赖是内部的哪些是外部的。混淆逻辑和物理架构的问题通常在排查和扩容时才爆发。有一次团队在架构图上看到一个“知识库”框有人以为它部署在本地服务器于是直接把所有文档往里灌结果导致线上故障。其实架构图代表的是逻辑组件底层用的是云上的向量数据库服务两者完全不同。现在我要求团队至少画两张图一张逻辑组件图一张部署架构图。如果只画一张那么每个框都要标注清楚“逻辑角色”和“物理形态”不允许有歧义。这个规定看着简单但对后续维护帮助特别大。5.3 忽略数据流向与安全边界AI应用的数据安全边界比传统应用更值得警惕。因为用户输入会被直接送进Prompt外部工具返回的数据也可能被模型引用甚至工具本身还可能被提示词注入攻击诱导越权操作。画架构图时必须把“数据进入模型”的每一条线用特殊颜色或标注标识出来并写明是否经过脱敏、是否经过内容审核。我踩过一个很实际的坑画AI运维助手时工具插件直接用了运维系统的管理员账号架构图上也没有单独画鉴权和服务账号隔离。有次安全测试用了一段精心构造的提示词诱导智能体执行了查询所有服务器密码的操作。虽然当时环境是测试机但这个教训足够深刻。从那以后所有工具插件在图上必须标出最小权限策略数据链路必须标出脱敏节点。我建议每个AI应用架构设计评审时都先问一句“这张图里最该保护的数据是哪份谁能接触到它”如果能从图上找到答案说明安全边界画到位了。6. 工具选型与团队协作经验6.1 不同场景下用什么工具画架构图的工具选择我认为没有唯一答案关键看使用场景。快速讨论和白板草稿阶段我常用手写板或实时协作白板在线协同方便思维自由不用管格式。正式方案文档阶段我用可编辑性强的绘图工具画完能导出成图片放进设计文档。代码化画图工具适合放在代码仓库里统一管理方便评审时看Diff。我整理了一张选型参考场景推荐工具优势注意点快速草稿、线上讨论Excalidraw、白板上手快、协作自然不擅长做复杂架构图正式方案、详细组件图draw.io / diagrams.net模板丰富、可导出多格式文件较难做文本Diff版本管理、代码评审PlantUML 等代码化工具文本即图、可Diff学习成本略高、表达能力有限云资源部署图Cloudcraft 等云架构工具直接映射真实云资源通用逻辑图支持较弱选工具的标准就一条团队每天开发都要看的图最好放在代码仓库里用纯文本或统一格式维护偶尔评审才用到的图可以用可视化工具画完后导出归档。比工具更重要的是图要让团队愿意打开、愿意更新。如果你画的图放进仓库半年没人碰那就等于白画了。6.2 如何让图保持“活文档”状态架构图最常见的死法是“画完就没人管”。系统一迭代图还是老版本最后没有参考价值甚至误导人。我现在的做法是把图当代码来管理。团队约定所有架构图统一放在代码仓库的指定目录下命名带版本或日期每次架构调整必须在同一份设计文档里同步更新对应的图代码评审的时候如果涉及架构变更PR描述里必须附上受影响图的效果对比。我把每个图都指定了一个“Owner”由这个同学负责维护图的一致性和更新节奏。平时每周架构评审会花十五分钟过一遍图的变化而不是等到季度大评审再看。这个习惯看起来很慢实际节省了大量返工时间。有一次因为更新了一张时序图开发中途避免了一次工具调用顺序错误的返工省下的时间远超维护图的时间。总结成一句话架构图不能是交付物它应该和代码一起持续演进这样才对得起花在它上面的每一分钟。