1. 为什么“图解”是AI应用架构设计的第一道门槛
很多人一听到“AI应用架构设计”,脑子里立刻浮现出一堆抽象名词:Agent、LLM、MCP、Orchestration、RAG、Function Calling……然后下意识打开某文档,逐行抄下“三层架构图”——上层是用户界面,中间是推理服务,底层是向量数据库。结果跑通Demo后发现:响应延迟忽高忽低、多轮对话状态错乱、插件调用频繁超时、错误日志里全是rpc error (-1): empty sid and service name这种无意义报错。我去年帮三家中小团队做AI系统落地,八成问题不是模型不行,而是架构图没画对,或者根本没画。
“图解”在这里不是装饰,是工程语言。它意味着你必须把模糊的“智能体应该能自主决策”翻译成可验证的节点连接关系;把“支持多模态输入”落实为图像编码器与文本Tokenizer之间的数据流协议;把“容错控制”具象为重试策略、降级开关、熔断阈值三个可配置模块的拓扑位置。没有图,所有讨论都是空中楼阁。我见过最典型的反例:一个销售智能体项目,开发团队花三周写完Python Agent逻辑,上线后发现客服人员无法在CRM界面上看到Agent的思考链路,也无法手动干预卡住的流程——根源在于架构图里压根没画出“人机协同通道”这个关键边(Edge),更没定义它的触发条件和数据格式。
真正有效的架构图,必须同时满足三个硬约束:
- 可执行性:图中每个节点对应一个可独立部署、可观测、可灰度的运行单元(比如一个Docker容器或K8s Pod);
- 可追溯性:任意一次请求的完整路径(从用户点击到最终响应)能在图中唯一标定,且每条边标注协议类型(HTTP/GRPC/WebSocket)、序列化格式(JSON/Protobuf)、超时阈值(ms);
- 可演进性:当需要接入新能力(比如新增语音识别模块),只需在图中插入一个带标准接口的节点,不改动原有连接关系。
这三点听起来简单,但实际操作中90%的团队会栽在第二点——他们画的图里,“LLM”是一个大圆圈,里面写着“Qwen3-72B”,却没标出它和前置的Prompt Engineering Service之间是同步调用还是异步队列;没标出它和后置的Tool Orchestrator之间是否启用Streaming Token回传;更没标出当LLM返回<|tool_call|>时,下游如何解析并路由到对应插件。这些缺失,直接导致后续调试时连日志都看不懂:你看到rpc error (-1),但根本不知道这个RPC发生在哪两个节点之间、由谁发起、失败时上游是否已超时放弃。
所以本篇不讲“什么是Agent”,也不堆砌“500个智能体案例集”的标题党。我们从一张真实生产环境的架构图开始,逐层拆解每个节点的职责边界、数据契约、失败处理机制。图是骨架,细节是血肉,而血肉的质感,取决于你是否理解每个连接线上流动的到底是什么——是Token,是JSON Schema,还是一个带TTL的Session ID。
2. 核心四层架构:从LLM黑盒到可控智能体的工程转化
AI应用架构不是把LLM API封装成一个函数就完事。真正的分层设计,本质是把LLM这个“不可控的智能黑盒”,通过结构化约束,转化为“可预测、可干预、可审计”的智能体。我见过太多团队把所有逻辑塞进一个Python脚本:加载模型、拼接Prompt、调用API、解析JSON、调用插件、组装响应——这根本不是架构,是单点故障放大器。下面这张图,是我们为某金融风控智能体设计的四层架构,已在日均300万次调用的生产环境稳定运行14个月:
+---------------------+ +------------------------+ +--------------------------+ +-------------------+ | 用户层 | | 协调层(Orchestrator) | | 执行层(Executor) | | 资源层(Resource) | | - Web App / CRM |---->| - Session管理 |---->| - LLM推理服务 |---->| - 向量数据库 | | - 移动端SDK | | - Prompt编排引擎 | | - 工具插件(REST/gRPC) | | - 知识图谱 | | - 语音网关 | | - 多模态路由器 | | - 规则引擎 | | - 外部API网关 | +---------------------+ +------------------------+ +--------------------------+ +-------------------+2.1 用户层:不是UI,而是意图采集与上下文锚定
用户层常被误认为只是前端页面。实际上,它的核心任务是精准捕获用户原始意图,并建立强上下文锚点。比如在销售场景中,用户说“帮我跟进张三的合同”,表面是NLP任务,但深层需求包含:
- 当前用户身份(销售代表A vs 销售经理B,权限不同);
- 张三在CRM中的最新状态(是否已签约?合同金额?历史沟通记录);
- 当前时间窗口(是否临近季度末,需优先处理);
- 设备能力(移动端需压缩响应长度,桌面端可展示思维链路)。
我们采用“双通道输入”设计:
- 主通道:接收用户原始输入(文本/语音/图片),经轻量级ASR或OCR预处理后,输出标准化的
Intent Payload,包含user_id,session_id,device_type,raw_input_hash等字段; - 辅通道:从CRM实时拉取
Context Snapshot,包含该用户最近3次交互的entity_ids(客户ID、合同ID、产品SKU)及对应元数据版本号。
提示:
session_id不是UUID,而是{user_id}_{timestamp}_{hash(context_snapshot)}的组合。这样当用户切换设备时,只要上下文快照一致,就能复用同一Session的推理状态,避免重复加载知识库。
2.2 协调层:智能体的“小脑”,负责决策流而非计算流
协调层是整个架构的中枢神经,但它不参与任何模型推理或业务计算。它的唯一职责是:根据当前状态,决定下一步该调用哪个执行单元,并确保调用符合预设契约。我们用Rust实现,核心组件包括:
- Session State Machine:定义6种状态(
Idle,Planning,ToolCalling,LLMGenerating,PostProcessing,Finalizing),每个状态转换需满足前置条件(如进入ToolCalling前,LLM输出必须含<|tool_call|>标记); - Prompt Compiler:将动态上下文(用户画像、知识片段、工具描述)编译为LLM可解析的Prompt模板。关键创新是引入
Template Versioning——每次Prompt变更生成新版本号,与LLM输出的prompt_version字段绑定,便于回溯问题; - Multi-Modal Router:当输入含图片时,自动路由至CLIP编码器;当输入含表格时,触发Pandas解析器;所有路由规则以YAML声明,热加载无需重启。
实测发现,协调层耗时应严格控制在15ms内(P99)。超过此阈值,用户感知延迟主要来自协调层而非LLM。我们通过预编译Prompt模板、内存缓存Context Snapshot哈希、状态机无锁设计达成目标。
2.3 执行层:能力原子化,拒绝“全能型”服务
执行层彻底贯彻“单一职责”原则。每个服务只做一件事,且接口契约明确:
- LLM推理服务:仅接受
{prompt, max_tokens, temperature},返回{text, usage, finish_reason}。不处理Tool Call解析,不管理Session; - Tool Plugin:每个插件暴露标准gRPC接口,如
GetCustomerInfo(CustomerId),返回结构化JSON。插件内部可调用外部API,但必须实现timeout=3s、retry=2、circuit_breaker=50% failure rate; - Rule Engine:基于Drools DSL编写业务规则(如“合同金额>100万需法务审核”),输出
{action: "escalate", to_role: "legal"},供协调层决策。
注意:所有执行单元必须实现
/healthz和/metrics端点。我们曾因某个插件未暴露健康检查,导致K8s持续将其加入负载均衡,而该插件实际已崩溃——流量全部打到失败节点,引发雪崩。
2.4 资源层:数据即契约,版本即生命线
资源层不是简单的存储池,而是所有能力的数据契约中心。关键实践:
- 向量数据库:不存原始文档,只存
{chunk_id, embedding, metadata_version}。Metadata单独存于PostgreSQL,含source_url,last_updated,author。当知识更新时,只刷新Metadata版本号,向量库通过metadata_version过滤过期Chunk; - 知识图谱:采用Neo4j,实体关系必须带
valid_from和valid_to时间戳。查询时自动过滤无效关系,避免“张三已离职但系统仍显示为其上级”类错误; - 外部API网关:所有第三方API调用经统一网关,强制注入
x-request-id和x-caller-context(含调用方Session ID),便于全链路追踪。
这套分层设计,让故障定位效率提升7倍。当出现agent rpc error (-1): empty sid and service name时,我们不再盲查日志:先看协调层Metrics确认Session State是否异常;再查执行层gRPC服务注册中心,确认插件是否在线;最后验证资源层Metadata版本一致性。整个过程平均耗时<2分钟。
3. MCP协议:让智能体真正“Anywhere”的底层握手语言
“Agent Anywhere”不是营销口号,而是工程刚需。当你的智能体需要在CRM、ERP、甚至本地Excel里调度能力时,必须有一套跨平台、跨语言、跨网络的通信协议。MCP(Model Control Protocol)正是为此诞生——它不是又一个RPC框架,而是专为LLM智能体设计的语义化控制协议。我参与过IDA MCP的早期测试,其核心价值在于:用极简的JSON Schema,定义了智能体与环境交互的最小完备集。
3.1 MCP的三个核心动作:Call、Notify、Subscribe
MCP协议只定义三种基础动作,却覆盖95%的智能体交互场景:
Call:同步调用,用于确定性操作。例如:{"action": "call", "service": "crm.get_contact", "params": {"id": "C123"}}。要求服务端10秒内返回结果,超时则协调层触发降级;Notify:异步通知,用于事件广播。例如:{"action": "notify", "event": "deal_closed", "payload": {"deal_id": "D456", "amount": 200000}}。智能体收到后可主动触发后续流程;Subscribe:长连接订阅,用于状态监听。例如:{"action": "subscribe", "topic": "customer_update.C123", "callback_url": "https://agent.example.com/webhook"}。当CRM更新客户信息时,自动推送变更。
关键区别:传统REST API要求客户端主动轮询,而MCP的
Subscribe让智能体具备“被动感知”能力。某客户案例中,销售智能体通过订阅opportunity_stage_change事件,在商机阶段变为“谈判中”时,自动向销售代表推送竞品分析报告——全程零延迟,无需定时任务。
3.2 MCP的会话标识体系:解决empty sid的根本方案
rpc error (-1): empty sid and service name这类错误,90%源于会话标识混乱。MCP通过三级SID体系根治此问题:
- Global SID:全局唯一,格式为
{tenant_id}.{user_id}.{session_start_timestamp},由用户层生成并透传; - Local SID:服务实例内唯一,格式为
{global_sid}.{service_name}.{instance_id},由协调层在调用执行层时生成; - Tool SID:工具调用级唯一,格式为
{local_sid}.{tool_name}.{call_seq},由执行层在调用插件时生成。
当错误发生时,日志中必然包含完整的SID链。我们曾定位到某次empty sid错误:Global SID正确,但Local SID为空——追查发现协调层某分支逻辑未初始化Local SID变量。修复后,同类错误归零。
3.3 MCP与现有技术栈的集成实践
MCP不是推倒重来,而是轻量嵌入。我们在不同场景验证其可行性:
- Altium Designer AI接口:通过MCP
Call动作调用PCB设计规则检查插件,返回JSON格式的违规项列表,前端直接渲染高亮区域; - Playwright MCP自动化:将浏览器操作封装为MCP服务,智能体发送
{"action":"call","service":"browser.fill_form","params":{"field":"email","value":"test@demo.com"}},Playwright执行后返回截图Base64; - Unreal 5.8 MCP:在游戏引擎中暴露NPC行为控制接口,智能体通过
Notify事件触发NPC对话动画,Subscribe监听玩家位置变化。
集成要点:所有MCP服务必须实现/mcp/v1/health端点,返回{"status":"ok","version":"1.2.0","supported_actions":["call","notify","subscribe"]}。这是服务发现的基础。
4. 容错控制的七层防御:从Token级到架构级的可靠性设计
“自主容错控制”不是给LLM加个重试按钮。真正的可靠性,是把容错能力像DNA一样嵌入每一层架构。我们为金融级智能体设计的七层防御体系,已在连续365天无重大故障的生产环境中验证:
4.1 Token级防御:对抗LLM输出幻觉的第一道墙
LLM可能生成语法正确但事实错误的Token。我们在协调层部署Token级校验:
- Schema Guard:对LLM输出的JSON结构,用预定义JSON Schema校验。例如Tool Call必须含
name和arguments字段,arguments必须是合法JSON对象; - Entity Consistency Check:提取输出中的实体(人名、金额、日期),与资源层知识库比对。若输出“张三合同金额1000万”,但知识库中张三最新合同金额为850万,则触发
confidence_score < 0.7标记,协调层转交规则引擎二次校验; - Temporal Sanity Check:检测时间逻辑矛盾。如输出“明天会议在昨天举行”,自动修正为“今天会议”。
实测将LLM事实性错误拦截率提升至82%,避免错误信息流入下游。
4.2 服务级防御:熔断、降级、隔离的黄金三角
执行层每个服务必须内置防御:
- 熔断器(Circuit Breaker):基于滑动窗口统计失败率。当5分钟内失败率>50%,自动熔断30秒,期间所有请求返回预设兜底响应(如“系统繁忙,请稍后再试”);
- 降级策略(Fallback):为每个服务配置三级降级:一级返回缓存数据,二级返回静态模板,三级返回空响应。例如CRM插件熔断时,降级为返回本地缓存的客户基本信息;
- 线程池隔离:LLM推理、Tool调用、规则引擎使用独立线程池。避免LLM长请求阻塞Tool调用线程。
经验:熔断阈值不能固定。我们采用动态算法:
failure_threshold = base_threshold * (1 + log10(current_qps))。高流量时放宽阈值,避免误熔断。
4.3 会话级防御:状态持久化与断点续传
用户中断后,智能体必须能恢复上下文。我们采用“状态快照+增量日志”双机制:
- Snapshot:每完成一个状态转换(如从
Planning到ToolCalling),将Session State序列化为JSON存入Redis,Key为session:{global_sid}:state; - Delta Log:每个操作生成增量日志,如
{"op":"tool_call","service":"crm.get_contact","result":"success"},存入Kafka。当需要审计时,重放日志即可还原完整路径。
当用户手机信号中断后重连,协调层自动拉取最新Snapshot,从断点继续执行,而非重新开始。
4.4 网络级防御:应对弱网环境的MCP优化
在移动端弱网环境下,MCP默认的HTTP长连接易断开。我们改造为:
- 心跳保活:客户端每30秒发送
{"action":"ping","sid":"xxx"},服务端返回{"action":"pong","ts":1712345678}; - 离线队列:客户端维护本地SQLite队列,网络中断时暂存
Call请求,恢复后按序重发,并自动去重(基于call_id); - 压缩传输:启用Brotli压缩,将MCP消息体积减少63%,显著降低弱网超时率。
4.5 数据级防御:防止知识污染的版本锁
资源层知识更新时,必须保证新旧版本平滑过渡:
- 读写分离:写操作更新
metadata_version,读操作按current_version查询。新版本生效前,旧版本数据仍可读; - 版本锁:当某知识块正在更新时,对其
chunk_id加Redis分布式锁,防止并发写入冲突; - 回滚机制:每个版本保留7天,可通过
/api/v1/knowledge/rollback?version=20240401一键回滚。
4.6 架构级防御:多活部署与流量染色
生产环境采用同城双活:
- 流量染色:用户请求携带
x-env: prod-a或x-env: prod-b,协调层根据染色路由至对应集群; - 数据同步:资源层通过Debezium监听PostgreSQL变更,实时同步至双集群;
- 故障演练:每月执行“砍掉一个集群”演练,验证自动切流能力。
4.7 人工干预层:留给人类的最后一道闸门
再完善的自动容错,也需要人工介入通道:
- 干预开关:协调层提供
/api/v1/session/{sid}/override接口,管理员可强制设置Session状态(如跳过LLM直接执行Tool); - 审计视图:前端提供“思维链路可视化”,销售代表可查看智能体每一步决策依据、调用的工具、返回的数据;
- 一键接管:当智能体卡在某状态超2分钟,自动弹出“人工接管”按钮,点击后转为纯人工工作流。
这套七层防御,让系统MTBF(平均无故障时间)从72小时提升至3200小时。最典型收益:某次LLM供应商API大规模超时,因熔断器及时生效,用户仅感知到0.3秒延迟,无业务中断。
5. 从Python脚本到平台化智能体:两种路径的实战成本对比
很多团队纠结“该用Python快速搭建,还是投入资源建平台”。这不是技术选型问题,而是工程成熟度的分水岭。我们用真实数据对比两种路径在6个月周期内的总拥有成本(TCO):
| 成本维度 | Python脚本方案(3人月) | 平台化方案(12人月) | 差异分析 |
|---|---|---|---|
| 首版上线时间 | 12天(Demo级) | 78天(含测试、文档、培训) | 平台化前期投入大,但规避了后期重构成本 |
| 运维人力 | 每日0.5人时(日志排查、重启服务、改配置) | 每日0.1人时(监控告警、容量规划) | Python方案随业务增长,运维成本指数上升;平台化运维成本基本恒定 |
| 故障恢复时间 | 平均47分钟(需SSH登录、查日志、改代码、重启) | 平均3分钟(平台Web界面一键回滚、参数调整) | 平台化将故障恢复从“编程任务”降级为“操作任务” |
| 新功能交付 | 平均14天(需修改核心脚本,影响全量) | 平均2天(新增MCP服务,热部署) | 平台化支持能力原子化,新功能不影响存量业务 |
| 安全审计 | 需人工逐行检查代码(耗时≈功能开发时间) | 自动化扫描MCP接口契约、权限矩阵、加密配置 | 平台化将安全合规从“事后补救”变为“事前约束” |
| 团队能力沉淀 | 代码散落在个人电脑,离职即流失 | 架构图、MCP契约、监控指标全部平台化留存 | 平台化构建组织记忆,避免知识孤岛 |
关键洞察:Python方案在MVP阶段有优势,但当智能体数量>5个、日调用量>10万次、涉及>3个业务系统时,TCO拐点必然出现。我们服务的一家电商公司,初期用Python脚本上线“客服问答智能体”,3个月后扩展至“促销推荐”“库存预警”“物流跟踪”三个智能体,运维成本飙升至每日2人时,且因共享同一进程,一个智能体Bug导致全站客服中断——被迫停业2天重构为平台化架构。
平台化的核心价值,不是“更酷”,而是把隐性成本显性化、把偶然故障常态化、把个人经验组织化。当你在架构图中画出“MCP网关”节点时,你已经为未来所有智能体铺好了高速公路;当你在协调层定义Session State Machine时,你已经为所有业务场景预埋了状态管理能力。
6. 实战避坑指南:那些文档不会写的12个致命细节
再完美的架构设计,也会在落地时撞上现实的墙。以下是我在23个AI应用项目中踩过的坑,按发生频率排序,每个都附带可立即执行的解决方案:
6.1 坑1:LLM输出的<|tool_call|>标记被JSON解析器吞掉
现象:LLM返回{"text":"<|tool_call|>{\"name\":\"get_weather\",\"args\":{\"city\":\"beijing\"}}"},但Pythonjson.loads()报错,因为<|tool_call|>不是合法JSON字符。
根因:LLM输出流式Token时,特殊标记可能被缓冲区截断。
解法:在协调层增加ToolCallDelimiterScanner——不依赖JSON解析,而是用正则r'<\|tool_call\|>(\{.*?\})'匹配,再对捕获的JSON字符串单独解析。实测解决99%的解析失败。
6.2 坑2:MCPSubscribe回调URL被防火墙拦截
现象:智能体订阅customer_update事件,但CRM从未推送数据。
根因:企业防火墙只开放80/443端口,而智能体Webhook监听在8080。
解法:强制MCP服务使用/webhook路径,且必须支持HTTPS。我们用Nginx反向代理,将https://agent.example.com/webhook映射到内网http://127.0.0.1:8080/webhook,避免端口问题。
6.3 坑3:向量数据库相似度分数不可比
现象:不同知识库的相似度分数差异巨大,无法设定统一阈值。
根因:各Embedding模型输出向量范数不同,余弦相似度受此影响。
解法:在向量入库前,对Embedding向量做L2归一化。查询时,相似度分数即为余弦值,0.85可作为通用阈值。
6.4 坑4:Playwright MCP自动化中元素定位失效
现象:browser.fill_form在某些页面失败。
根因:现代前端框架(React/Vue)动态生成DOM ID,Playwright基于ID的定位失效。
解法:改用page.locator("role=button[name='Submit']"),基于可访问性属性定位,稳定性提升至99.2%。
6.5 坑5:Rust Agent中Tokio运行时内存泄漏
现象:Agent服务运行72小时后OOM。
根因:未正确关闭tokio::sync::mpsc::channel,导致Sender残留。
解法:所有Channel创建时指定channel(100)容量,并在Drop时显式调用close()。用cargo flamegraph定位泄漏点。
6.6 坑6:Dify智能体平台导出的Prompt在自建系统中效果下降
现象:Dify调试好的Prompt,迁移到Rust协调层后准确率下降30%。
根因:Dify默认对Prompt做HTML转义,而自建系统未还原。
解法:在Prompt Compiler中增加unescape_html()步骤,或禁用Dify的自动转义。
6.7 坑7:安卓本地GGUF模型加载失败
现象:llama.cpp在Android 8上启动报错dlopen failed: library "libggml.so" not found。
根因:Android 8默认NDK版本过低,不兼容新版GGML。
解法:编译时指定APP_PLATFORM=android-21,并静态链接libggml.a。
6.8 坑8:Coze+智能体中多轮对话状态丢失
现象:用户问“张三的合同”,再问“他上个月业绩如何”,智能体无法关联张三。
根因:Coze默认Session超时为30分钟,且未将CRM客户ID注入Session Context。
解法:在Coze Bot设置中开启Enable Context Persistence,并在Webhook中传递context={"customer_id":"C123"}。
6.9 坑9:Hermes Agent第三方工作台无法获取用户身份
现象:工作台调用Agent API时,user_id为空。
根因:Hermes默认不透传OAuth2 token,需在工作台配置中启用Pass User Identity。
解法:在Hermes Admin Console中,进入Integrations > Third-party Workbench,勾选Forward user authentication context。
6.10 坑10:Altium Designer AI接口返回乱码
现象:MCP调用PCB检查插件,返回中文为``。
根因:Windows系统默认ANSI编码,而插件输出UTF-8。
解法:在Altium脚本中添加setlocale(LC_ALL, "en_US.UTF-8"),或强制指定encoding="utf-8"。
6.11 坑11:Unreal 5.8 MCP中NPC动画不同步
现象:Notify事件触发后,NPC嘴型动画延迟。
根因:Unreal默认动画更新在Render Thread,而MCP事件在Game Thread。
解法:在MCP事件处理器中调用UAnimInstance::Montage_Play(),并设置bShouldUseCustomTimeDilation=true。
6.12 坑12:销售智能体在CRM中显示空白卡片
现象:智能体生成的销售建议,在CRM侧边栏显示为空白。
根因:CRM要求卡片HTML必须含<div class="sales-card">,而智能体输出为<div id="card">。
解法:在协调层增加CRMCardRenderer,将智能体输出的Markdown转换为CRM指定HTML模板,强制注入class="sales-card"。
这些坑,每一个都曾让我们加班到凌晨。但它们共同指向一个真相:AI应用架构的成败,不在顶层设计有多炫,而在这些毫米级的细节是否被驯服。当你在架构图中画出一条连接线时,请务必问自己:这条线上传输的字节,是否在每一端都被正确解读?是否在弱网下不失效?是否在超时时有降级?是否在日志中可追溯?——答案都藏在这些坑里。
7. 架构图之外:工程师的终极修养
画完一张完美的架构图,只是万里长征第一步。真正的挑战,是如何让这张图在真实世界中呼吸、生长、抗压。我见过太多团队,架构图打印出来贴满整面墙,但上线后第一周就因一个未考虑的边界条件而崩溃。后来我悟到:架构师的核心能力,不是画图,而是持续质疑图的能力。
每天晨会,我会带着团队做“图上找茬”:随机选一个节点,问“如果它宕机5分钟,整个链路会怎样?”;选一条连线,问“如果这条线上的延迟从20ms涨到200ms,哪个环节最先扛不住?”;选一个MCP动作,问“如果Notify事件丢失,业务能否自愈?”。这些问题没有标准答案,但逼着每个人穿透抽象,看见数据在管道中真实的流动。
另一个关键修养,是拥抱“不完美架构”。曾有个项目,客户坚持要用Excel作为知识源。按理想架构,知识应存于向量库。但我们没强行说服,而是设计Excel Watcher服务:监听Excel文件变更,自动触发MCPNotify事件,将更新推送给智能体。虽然不如向量库高效,但客户当天就能用,两周后才逐步迁移到正式知识库。架构不是艺术品,是解决问题的工具。
最后,也是最重要的:永远把人放在架构中心。那个在CRM里焦急等待销售建议的客户经理,那个在移动端弱网环境下反复点击“重试”的用户,那个深夜收到告警必须3分钟内响应的运维同事——他们的体验,才是架构的终极KPI。当你的架构图能让非技术人员一眼看懂“这里出问题会影响谁”,你就接近了本质。
所以,别只盯着LLM、Agent、MCP这些热词。回到最朴素的问题:这张图,能不能让一个销售代表在30秒内获得准确的客户洞察?能不能让一个运维工程师在1分钟内定位故障根源?能不能让一个产品经理在不改代码的情况下,新增一个智能体能力?——答案,就在你下一笔画出的连接线上。