
1. 从单体客服到多智能体一次被逼出来的架构升级先说一个反直觉的判断传统客服系统不是死在不够智能而是死在过于集中。我做过一个真实的金融客服项目早期是典型的单体对话系统一个意图识别模型、一个对话管理模块、一个知识库查询接口再加一个工单系统对接总共五个服务逻辑全部揉在一个代码库里。上线初期效果还行用户问信用卡怎么还款转账限额是多少这类高频问题准确率能到85%以上。但三个月后业务方开始提各种组合需求——用户要查账单、又要改预留手机号、还想顺便投诉网点服务这个时候单体架构就开始失控了。问题的本质在于客服场景天然是多路并发、多角色协作的。用户一句话里可能同时包含查询需求、操作需求和情绪宣泄需求传统做法要么把这句话强行归类到某一类要么用一堆 if-else 把流程串起来。前者牺牲体验后者拖垮维护成本。再加上金融行业对安全审计和权限隔离近乎偏执的要求单体架构几乎没有活路。我当时的结论是必须换一种组织方式把一个无所不能的大模型拆成一群各司其职的小 Agent。这就引出了这篇文章的主题——工业级多智能体客服系统的整体架构到底该怎么画。我先把话说在前头这套架构不是论文里那些漂亮的概念图而是经过生产环境验证、被真实流量捶打过的东西。所谓银行级它和普通电商客服、SaaS 客服最大的区别在四个字可追溯、可拦截、可熔断、可灰度。这四个词贯穿了后面所有组件设计的取舍。2. 顶层设计的五层拆解从接入到决策再到执行回执工业级和玩具级的区别第一眼就体现在分层粒度上。我的经验是多智能体客服系统至少要拆成五层接入层、认知层、调度层、执行层、治理层每一层各管一段上下层之间只通过标准协议通信禁止跨层调用。2.1 接入层全渠道统一网关不是简单转发用户从 App、小程序、网银网页、电话银行进来表面上是渠道差异实际上带来的是协议、时效、安全等级的三重差异。接入层需要一个统一的消息网关把所有渠道的请求标准化成内部统一的消息格式——我用的是类似 ChatML 结构的事件模型包含 session_id、user_id、channel_type、timestamp、message_payload、context_snapshot 等字段。这里有一个极易踩坑的点不要试图在接入层做任何语义处理。做语义理解是认知层的事接入层只做协议适配、流量整形、Basic Auth 校验和幂等去重。我见过有团队把用户画像查询也放在接入层结果导致网关 CPU 飙高、消息积压这属于职责混乱。2.2 认知层意图识别、情绪探测与上下文浓缩认知层是用户语音或文本进入系统后遭遇的第一道智能关卡。我们内部把它拆成三个并行子模块意图粗分类、情绪与风险信号识别、上下文浓缩器。意图粗分类不追求精细标签只分到粗粒度意图域比如账户查询/资金交易/业务办理/投诉建议/闲聊五大类用较小的模型就能达到高召回。情绪与风险信号识别金融场景特别需要识别用户是否愤怒、是否有投诉升级倾向、是否可能涉及欺诈话术。这层输出一个 emotion_score 和 risk_flags 列表。上下文浓缩器把最近 N 轮对话压缩成语义摘要保留用户槽位信息和未决事项方便上层调度做多轮决策。这层输出的不是最终答案而是结构化的情境快照。这个设计是为了让调度层拿到足够决策的事实而不是一堆原始句子。2.3 调度层多智能体的大脑路由策略决定系统上限调度层是整个多智能体系统的决策中枢。它做的事情很单纯根据认知层的输出决定接下来由哪个或者哪几个 Agent 来接管对话。这个决定质量的高低直接决定用户体验。我把调度策略分为三种模式实际生产中是动态组合使用的规则路由某些强约束场景比如用户明确说我要投诉必须强制路由到投诉处理 Agent不允许模型自由决定。语义路由基于向量相似度或 LLM 分类把意图粗标签映射到具领域 Agent 上适合意图发散的场景。多智能体协同路由复杂任务拆解为多个子任务分发给多个 Agent 并行处理再聚合结果生成回复。这里有一个关键设计——每个 Agent 的能力注册表。调度层需要知道每个 Agent 能干什么、输入输出 schema 是什么样的、当前负载是多少。我把能力注册表做成了可动态热更新的配置每次 Agent 变更不需要重启调度服务这在大版本迭代救过我好几次。2.4 执行层领域 Agent 群里每个家伙只管一件事执行层是真正干活的实体。在银行客服场景必要的最小 Agent 集合至少包括Agent 名称核心职责关键依赖账户查询 Agent查余额、流水、积分核心银行接口、权限校验资金操作 Agent转账、还款、缴费交易网关、风控引擎、限额配置业务办理 Agent挂失、改密、变更预留信息客户管理系统、短信验证码投诉/舆情 Agent记录投诉、安抚、承诺回访工单系统、舆情关键字库知识问答 Agent产品咨询、活动规则解释知识库向量检索、产品 FAQ每个 Agent 内部是独立的任务执行链接收调度下发的任务指令调用必要的后端系统接口拿到结果后生成面向用户的回复同时把操作类结果沉淀到操作回执队列。这里最重要的原则是单一职责一个 Agent 不要试图处理两种完全不同的业务域否则调度层就会失去对系统的控制力。2.5 治理层安全审计、数据埋点与模型效果追踪银行级系统没有治理层前面都是空中楼阁。治理层包含三块核心组件全链路审计日志每一轮对话、每一次 Agent 决策、每一个外部接口调用都必须记录操作者、时间戳、入参、出参、决策原因。这不仅是监管要求也是后期排查线上故障的依据。配置中心与开关管理每个 Agent 的可访问权限、接口超时、模型参数、路由策略全部动态配置化。上线一个新手势不需要改代码只要改配置再加灰度流量。质量与成本度量统计每个 Agent 的准确率、失败率、平均响应时延、模型 Token 消耗这是业务方和管理层最关心的报表。3. 四个无法回避的工程难点状态、安全、并发、回滚蓝图画得再好看落到工程实践上总会遇到一堆绕不开的坎。下面这四件事我认为是任何做工业级多智能体系统的人都躲不掉的。3.1 对话状态管理不只有一个 session而是多级状态叠加多智能体和单 Agent 最大的状态差异在于状态不再是单一 session 的对象而是用户级长期状态 会话级短期状态 任务级临时状态的三元组叠加。用户级长期状态包括用户风险等级、认证等级、常用账户、历史偏好需要从客户画像系统读取。会话级短期状态当前这轮对话涉及到的未决事项、已经填好的槽位、引用到的消息片段。任务级临时状态某个具体操作比如转账在当前流程中执行到哪一步、对端账户校验是否通过。我采用 Redis 分布式锁来维护这套状态每个 key 使用可过期 TTL 策略避免状态无限增长。这里要说一句千万不要把状态存在 Agent 的本地内存里一旦 Agent 实例重启用户对话就直接断掉这在生产环境是事故级别的问题。3.2 安全管控与操作权限Agent 再聪明也不能越权银行场景中Agent 背后的模型能力再强也不能绕过权限体系。我们把操作类能力抽象成受限工具集由权限服务统一管控。每个 Agent 在调用任何涉及资金、敏感信息的工具之前必须先完成三重校验身份校验当前会话用户是否已完成实名认证、是否处于有效登录态。操作授权用户是否为该账户的合法操作人是否在可信设备上操作。限额与风控本次操作金额、频次是否触发风控规则是否需要进行短信二次确认。这个机制的本质是大模型负责想权限系统负责批。即使 Agent 生成的计划里包含帮用户转账五百万这种指令权限系统也会直接拦截拒绝Agent 只能拿到一个操作未授权的错误码。3.3 并发流量削峰客服系统最怕的不是功能少而是突刺金融 APP 每次推送活动客服入口流量可能是平时的几十倍。如果按峰值流量设计系统成本高到离谱如果不做保护系统直接被打垮。所以我们引入了自适应的流量整形策略全局限流使用 Sentinel 或同类组件限制每秒进入认知层的请求数。分级降级当系统整体负载超过阈值优先保障用户敏感操作如挂失、账户冻结等冷路径对于闲聊、非紧急咨询等温路径直接走静态兜底文案。Agent 级排队每个 Agent 独立配置最大并发数超过并发后请求排队等待避免单 Agent 被打满拖垮整个调度流程。3.4 灰度发布与快速回滚AI 模型无法保证不犯错只能保证能随时切换模型类系统的升级比纯工程系统更难做灰度因为模型行为不可精确预测。我们的做法是新旧版本 Agent 并行部署调度层通过配置中心动态调整流量比例从 5% 开始逐步放量。一旦监控发现成功率下降或用户差评率升高立即把流量全部切回旧版过程控制在 30 秒内。这个机制听起来简单但必须提前把监控项、告警阈值、回滚脚本全部准备好否则真正出问题时手忙脚乱。4. 一张架构图的正确打开方式如何让管理层和开发者都满意画架构图不需要酷炫但需要让看的人各自拿到各自需要的信息。我给内部的架构图分了两层展示逻辑架构图和部署架构图两者侧重点完全不同。4.1 逻辑架构图按数据流画突出职责边界逻辑架构图严格从用户入口开始按消息流顺序画接入层、认知层、调度层、执行层、治理层每层之间用箭头标注关键数据项。这里有个经验教训不要画成星型结构把所有东西连到一个中心上那样看不出数据流向也无法暴露单点故障。我在逻辑架构图上额外标注了同步调用和异步消息的区别。凡是操作类指令转账、挂失必须是同步链路用户需要立刻拿到结果凡是审计、日志、数据同步类动作全部走异步消息队列不阻塞主链路。这样管理层理解起来直观开发同学画接口时序图也有据可依。4.2 部署架构图按可用性画突出容灾与扩展部署架构图是给运维和 SRE 看的关注的是进程数、集群数、网络分区、消息队列分区等。我建议按区域切分接入层部署在边缘节点、业务逻辑层部署在核心机房、大模型推理服务部署在独立的 GPU 集群上。三个区域之间通过消息队列解耦避免一个区域的故障波及全局。另外架构图中一定要画清楚每个 Agent 的副本数和故障转移策略。我见过很多团队架构图只画组件不画副本这样的图一上线就废根本没法指导运维。比如用户 Agent 我至少部署三个副本采用主动/被动模式故障时调度层通过健康检查自动摘除异常实例。4.3 组件选型的心得不追新只求稳面对多智能体开发生态每天都有新框架出来但工业级项目从选型到落地需要的是稳定可控。下面是我在架构选型上的真实取舍组件环节我采用的方案选型理由备选方案消息中间件RabbitMQ/Kafka 组合既有可靠消息保证又有高吞吐日志通道RocketMQ对话状态存储Redis Cluster低延迟、TTL 机制贴合会话时效性内存网格服务之间调用gRPC强类型接口、便于生成 SDKRESTful APIAgent 编排框架LangGraph有向图流程控制比纯 LangChain 更适合生产级流程编排自研状态机大模型底座私有化部署的金融微调模型数据合规优先性能可接受闭源 API选型这件事没有标准答案但我坚持一个原则凡是涉及用户资金和敏感数据的链路尽量用私有化、可控性强的组件凡是提升开发效率的工具可以适度拥抱开源生态。过度追求新框架反而容易在排障时陷入无人区。5. 从蓝图到落地我建议的第一期迭代范围最后说点实在的蓝图再完整一次性全做出来也会被业务方和研发成本拖死。我的建议是分三步走每一步都有明确的交付物和验收标准。5.1 第一步跑通窄域闭环只做咨询不碰操作第一期不要碰资金类操作只做三类咨询账户信息查询、产品规则问答、常见业务办理指引。调度层只部署三个 Agent流程简单风险可控。这一步的目标不是性能而是验证多智能体协作流程、状态管理、审计日志这三条主线是否顺畅。业务团队也不用太担心模型说错话因为操作链路完全没打开。5.2 第二步接入高频操作建立强管控机制跑通咨询闭环后选择最痛的一两个操作场景接入比如信用卡账单分期手续费试算或借记卡挂失这些操作虽然涉及账户但破坏性有限且流程标准化程度高。这一步的验收标准是操作成功率、二次确认覆盖率、审计日志完整性三者全部达标。风控接口必须真实接入不做 mock否则上线后一定会出事。5.3 第三步开放 Agent 扩展机制让业务方参与进来前面跑的整个框架稳定后把 Agent 的新增方式做成模板化、配置化业务产品经理可以按照标准格式提交一个新的业务 Agent 需求研发团队只需开发相应的工具调用和接口封装即可。这一步是系统从项目走向平台的转折点。当业务方能够自助地新增一个问答型 Agent 而无需改动调度核心代码时整张蓝图的使命才算真正完成。我自己在推进过程中最大的体会是多智能体架构的难点从不在画图而在于组织权和治理权的分配。调度层愿意放弃部分自由发挥把关键决策交给规则和权限系统忍住让模型大包大揽的冲动系统才会真正稳定下来。下一次有机会我再展开讲讲调度层里语义路由和规则路由打架时具体怎么调。