
1. 从一个真实困境说起为什么能跑起来的AI Demo和能上线的AI系统之间隔着一道鸿沟过去一年多我参与过好几个企业内部的AI应用落地项目从智能客服、文档问答到工单自动分类几乎每一个项目都经历过同样的剧本第一周搭出一个Demo效果惊艳老板点头第二周开始接入真实业务系统问题开始冒出来第三周发现要处理权限、要记录日志、要做限流、要对接多个模型供应商第四周团队开始怀疑人生——我们到底是在做AI还是在重新造一套后端基础设施这个困境的本质是AI应用和传统业务系统在工程形态上存在结构性差异。传统业务系统的核心是确定性逻辑输入A经过规则B输出C。而AI应用的核心是概率性推理同样的输入可能因为模型版本、温度参数、上下文长度、检索结果的不同而产生完全不同的输出。这种不确定性直接导致了一堆传统架构里不存在的工程问题。QuickBlue 这个项目就是在这个背景下进入我视野的。它给自己的定位是AI应用底座说白了就是把AI应用开发中那些重复、琐碎、但又绕不开的基础设施问题统一收拢到一个平台层去解决让业务团队专注于Prompt设计、知识库构建、业务逻辑编排这些真正产生价值的事情。我第一次看到这个定位时心里是有点怀疑的。因为底座这个词在技术圈被滥用了太多次很多号称底座的东西拆开一看就是几个Spring Boot Starter加一个管理后台。但仔细研究QuickBlue的技术选型和架构设计之后我发现它确实在认真回答一个真问题当企业要同时运行十几个甚至几十个AI应用时如何避免每个应用都重复建设模型接入、会话管理、向量检索、权限控制、可观测性这些能力这篇文章不打算写成产品说明书。我想做的是把QuickBlue这类AI应用底座背后的设计逻辑拆开讲清楚它为什么需要微服务架构、为什么选Spring Cloud这套技术栈、JDK 21在这里扮演什么角色、以及企业在实际落地时会遇到哪些坑。如果你正在评估要不要引入一个AI应用底座或者正在自己搭建类似的平台这些内容应该能帮你少走一些弯路。2. AI应用底座到底在解决什么问题拆解四类重复建设在讨论QuickBlue的架构之前必须先搞清楚一个前提企业为什么需要一个专门的AI应用底座而不是让每个AI项目自己搞定一切我见过太多团队在这个问题上判断失误要么过度建设要么重复造轮子。下面这四类问题是我在实际项目中反复观察到的、几乎每个AI应用都会遇到的重复建设。2.1 模型接入层的碎片化从换个模型改三天说起大部分团队做第一个AI应用时都是直接调用某一家模型厂商的SDK代码里硬编码API Key和模型名称。这在单应用场景下没问题但一旦企业同时有多个AI应用问题就来了A应用用的是模型XB应用用的是模型YC应用想同时用两个做对比。每个应用都要自己处理鉴权、重试、超时、流式输出解析、Token计数、成本统计。更麻烦的是模型切换。我经历过一次真实场景某个应用因为成本和响应速度的考虑需要从一个大模型切换到一个小模型结果发现代码里模型调用逻辑散落在十几个地方改了两天才改完还漏了两处。这就是典型的模型接入层没有抽象导致的后果。一个合格的AI应用底座应该把模型接入抽象成统一的接口层业务代码只依赖抽象接口具体用哪个模型由配置决定。QuickBlue在这方面的设计思路是提供一个模型网关层统一处理多厂商模型的协议差异、流式响应、失败重试和用量统计。这样业务侧切换模型时改的是配置而不是代码。2.2 会话与上下文管理的复杂性不只是存个聊天记录很多人以为会话管理就是把聊天记录存到数据库实际做起来远不止如此。AI应用的会话有几个特殊之处上下文窗口有限超过长度需要做截断或摘要多轮对话需要维护状态但状态可能分布在多个服务实例上会话可能跨设备、跨渠道用户今天在网页聊明天在App继续上下文要能接上。我见过一个团队会话状态直接存在应用内存里单实例部署时没问题一上多实例负载均衡用户就发现聊着聊着AI失忆了。这就是没有把会话状态外置的典型问题。QuickBlue这类底座通常会提供统一的会话服务把会话状态存到Redis这类外部存储中同时处理上下文窗口管理、历史消息摘要、会话过期清理这些细节。2.3 知识库与向量检索的工程化RAG不是调个API那么简单RAG检索增强生成现在几乎是企业AI应用的标配但真正把它做稳的团队不多。文档解析、分块策略、向量化、索引构建、相似度检索、重排序、引用溯源每一个环节都有坑。而且这些能力在不同AI应用之间高度相似完全没必要每个应用都重写一遍。一个AI应用底座应该把知识库能力做成共享服务统一的文档接入管道、可配置的分块策略、共享的向量存储、标准化的检索接口。QuickBlue在这块的定位就是让业务应用通过API调用知识库服务而不是自己维护一套向量数据库和检索逻辑。2.4 可观测性与治理AI应用的黑盒问题传统应用的监控相对成熟QPS、延迟、错误率、CPU内存。但AI应用需要监控的东西更多Token消耗和成本、模型响应质量、Prompt版本效果对比、检索命中率、用户反馈。这些指标如果每个应用各自为政企业层面就无法形成统一的AI治理视图。我参与过一个项目上线三个月后老板问我们AI这块一共花了多少钱结果没人能准确回答因为成本数据散落在各个应用的日志里。这就是缺乏统一可观测性的代价。AI应用底座的一个核心价值就是把这些治理能力集中起来让企业能看清AI应用的整体运行状况。3. 为什么QuickBlue选择微服务架构而不是单体理解了AI应用底座要解决的问题接下来一个自然的问题是为什么这类平台普遍采用微服务架构而不是做一个单体应用这个问题我被问过很多次也见过一些团队为了简单选择单体结果在后期付出更大代价。下面从几个角度拆解这个选择背后的逻辑。3.1 能力模块的独立演进需求AI应用底座包含的能力模块——模型网关、会话服务、知识库服务、权限服务、可观测性服务——它们的演进节奏和技术依赖差异很大。模型网关需要频繁跟进各厂商API变化可能几周就要更新一次知识库服务的核心是向量检索算法和存储迭代周期相对稳定权限服务则要对接企业现有的认证体系改动往往涉及安全合规。如果这些模块都塞在一个单体应用里任何一个小改动都要整体重新部署风险大、效率低。微服务架构让每个模块可以独立开发、独立部署、独立扩缩容。模型网关流量大就多给几个实例知识库服务吃内存就单独配置资源互不影响。3.2 故障隔离一个模块挂了不能拖垮全部AI应用有一个特点不同模块的稳定性差异很大。模型调用依赖外部厂商网络抖动、限流、服务不可用都是常态而会话管理、权限校验这些内部服务相对稳定。如果做成单体模型调用的超时和异常可能拖垮整个应用的线程池导致连登录都登不进去。微服务架构配合熔断降级机制可以把故障限制在单个服务内。模型网关出问题降级到备用模型或返回友好提示不影响用户查看历史会话。这种隔离能力在AI应用这种强依赖外部服务的场景下尤其重要。3.3 团队协作与职责边界中大型企业里AI平台往往不是一个人或一个小团队维护的。模型接入可能由算法团队负责知识库由数据团队负责权限和网关由平台团队负责。微服务的边界天然对应团队职责边界每个团队维护自己的服务通过明确定义的API契约协作减少互相阻塞。这里有个经验微服务拆分不是越细越好。我见过把AI应用底座拆成二十多个微服务的结果服务间调用链路长得吓人一个请求要经过七八跳排查问题极其痛苦。合理的拆分粒度应该以业务能力为单位而不是以技术分层为单位。QuickBlue的模块划分看起来是围绕能力域来的这个方向是对的。3.4 与Spring Cloud技术栈的契合微服务架构落地需要一整套配套能力服务注册发现、配置管理、负载均衡、熔断限流、网关路由、链路追踪。Spring Cloud生态经过多年发展这些能力都有成熟组件。QuickBlue选择Spring Cloud作为基础本质上是站在成熟生态的肩膀上不用自己造这些轮子。不过这里要提醒一句Spring Cloud Alibaba部分组件已经进入维护状态选型时需要关注组件的活跃度和替代方案。后面我会专门讲这个问题。4. Spring Cloud在AI应用底座中的具体分工确定了微服务架构接下来要回答的是Spring Cloud的各个组件在AI应用底座里分别承担什么角色我把QuickBlue这类平台中常见的组件分工整理成下表方便对照理解。能力域典型组件在AI底座中的职责服务注册发现Nacos / Eureka模型网关、会话服务等实例的注册与发现配置管理Nacos Config模型参数、Prompt模板、限流阈值的动态配置API网关Spring Cloud Gateway统一入口、鉴权、路由、限流、请求日志负载均衡Spring Cloud LoadBalancer模型网关多实例间的流量分发熔断限流Sentinel模型调用失败熔断、接口QPS限制链路追踪Micrometer Tracing跨服务调用链追踪定位AI请求瓶颈声明式调用OpenFeign服务间HTTP调用的声明式封装4.1 配置中心AI应用动态调整的生命线AI应用对配置动态性的要求远高于传统应用。Prompt模板要能随时调整模型参数温度、最大Token数要能按应用配置限流阈值要能根据流量动态修改。如果这些都写死在代码里每次调整都要重新部署效率极低。Nacos Config这类配置中心在这里的价值就体现出来了配置变更实时推送应用无需重启。我实际操作中的经验是把Prompt模板放在配置中心时要注意版本管理因为Prompt改动对输出质量影响很大出问题时需要能快速回滚到上一个版本。建议配置中心里的Prompt模板带上版本号和变更记录。4.2 网关层AI请求的统一入口与治理点Spring Cloud Gateway作为统一入口在AI底座里承担的不只是路由转发。它还是鉴权、限流、审计、成本归集的关键位置。所有AI请求经过网关时可以在这里做用户身份校验、请求频率限制、Token预算检查、请求日志记录。这里有个容易忽略的点流式响应SSE在网关层的处理。AI应用大量使用流式输出网关需要正确配置以支持长连接和分块传输否则会出现响应被缓冲、用户看不到逐字输出的问题。这是我在实际部署中踩过的坑网关的超时配置和缓冲配置都要针对流式场景调整。4.3 熔断与限流保护AI应用不被外部依赖拖垮模型调用是AI应用中最不稳定的环节。厂商限流、网络抖动、模型过载都可能导致调用失败或超时。Sentinel这类熔断限流组件在这里的作用是当模型调用失败率超过阈值时快速失败并降级而不是让请求堆积、线程耗尽。我的实操建议是熔断策略要按模型厂商分别配置因为不同厂商的稳定性差异很大。同时降级策略要提前设计好是切换到备用模型还是返回缓存结果还是给用户一个友好的稍后再试提示。这些策略应该在平台层统一配置而不是让每个业务应用自己实现。4.4 链路追踪定位AI请求慢在哪一环一个AI请求的链路可能很长网关鉴权 → 会话服务取上下文 → 知识库服务检索 → 模型网关调用模型 → 结果后处理 → 返回。任何一环慢都会影响用户体验。没有链路追踪排查问题基本靠猜。Micrometer Tracing配合Zipkin或类似后端可以把整个链路的耗时可视化。我特别建议在追踪数据里记录每个环节的Token消耗和模型调用耗时这对成本优化和性能调优都很有价值。比如发现某个应用的检索环节特别慢可能是分块策略或索引结构需要优化。5. JDK 21在这个技术栈里不是版本号好看那么简单QuickBlue的技术选型里JDK 21是一个值得单独拿出来讲的点。很多团队升级JDK只是跟风但JDK 21对AI应用底座这类高并发、IO密集型的服务确实有实质性的性能收益。下面说清楚它到底带来了什么。5.1 虚拟线程高并发IO场景的降本利器AI应用底座是典型的IO密集型服务大量时间花在等待模型响应、等待向量检索、等待数据库查询上。传统线程模型下每个请求占用一个平台线程线程池大小限制了并发能力。要支撑高并发就得开很多线程内存开销和上下文切换成本都很高。JDK 21正式引入的虚拟线程让每个请求可以用一个虚拟线程处理底层由少量平台线程承载。当虚拟线程阻塞在IO等待时平台线程可以切换去处理其他虚拟线程。这意味着同样的硬件资源可以支撑更高的并发而且代码写法几乎不用改。我在一个模型网关服务上做过对比测试同样的压测条件下用虚拟线程后支撑相同QPS所需的线程数大幅下降内存占用也更低。对于AI底座这种大量时间在等外部响应的场景虚拟线程的收益非常明显。5.2 结构化并发与作用域值让并发代码更可控JDK 21还带来了结构化并发Structured Concurrency的预览特性以及作用域值Scoped Values。结构化并发让一个请求内并行调用多个模型做对比这类场景的代码更清晰、异常处理更可靠。作用域值则提供了一种比ThreadLocal更适合虚拟线程的上下文传递方式。在AI底座里一个请求可能需要同时查会话、查知识库、查用户权限这些操作可以并行执行。结构化并发让这些并行任务的生命周期管理变得简单不会出现某个子任务还在跑但主请求已经返回的泄漏问题。5.3 升级JDK 21的实际注意事项升级不是没有代价的。我的经验是升级前要重点检查几类问题依赖库的兼容性特别是一些老版本的字节码增强库、序列化库JVM参数的调整虚拟线程场景下一些传统线程池参数需要重新评估监控指标的适配确保能观测到虚拟线程的运行状况。另外虚拟线程不是万能的。如果是CPU密集型任务虚拟线程没有优势甚至可能因为调度开销略慢。AI底座里模型调用、检索这些IO密集环节适合虚拟线程但像向量计算这种CPU密集环节还是要靠传统线程池和合理的并行度控制。6. 从零搭建AI应用底座时最容易踩的五个坑前面讲了不少架构层面的东西这一节我想聊点更接地气的如果你要基于QuickBlue这类思路自己搭建或落地一个AI应用底座哪些坑最容易踩这些都是我和身边同行在实际项目中交过学费的地方。6.1 坑一把底座做成大杂烩什么都往里塞最常见的错误是一听说要做底座就把所有能想到的功能都往里加模型管理、知识库、工作流编排、Agent框架、数据标注、模型微调……结果底座变得极其臃肿学习成本高维护困难业务团队反而更不愿意用。我的建议是底座只做共享且稳定的能力。模型接入、会话管理、权限、可观测性这些是共享的而具体的业务逻辑、Prompt设计、工作流编排应该留给业务应用。底座的边界要清晰宁可少做不要做杂。6.2 坑二忽视多租户隔离后期改造成本极高企业级AI底座几乎必然要支持多租户不同部门、不同业务线共用一套底座但数据要隔离、配额要独立、配置要互不干扰。如果一开始没考虑多租户后期改造会非常痛苦因为租户标识要渗透到数据模型、缓存Key、配置结构、权限校验的每一个角落。我的经验是从第一天就把租户ID作为一等公民。数据库表带租户字段Redis Key带租户前缀配置按租户维度组织权限校验先过租户再过角色。这些前期多花的时间后期会十倍百倍地省回来。6.3 坑三模型调用没有统一抽象切换成本高前面提过模型接入层没有抽象是常见问题。具体表现是业务代码里直接依赖某厂商SDK模型名称、参数、响应解析散落各处。等到要换模型、要加模型、要做多模型对比时改动量巨大。正确的做法是定义统一的模型调用接口把厂商差异封装在适配层。接口设计要考虑流式和非流式、同步和异步、单轮和多轮这些场景。QuickBlue这类底座的价值之一就是把这个抽象层做好了业务侧不用重复实现。6.4 坑四可观测性只做了能看没做到能查、能算、能预警很多团队的可观测性停留在接入了监控能看到QPS和错误率。但AI应用需要的是更细粒度的观测每个应用的Token消耗和成本、每个Prompt版本的效果指标、检索命中率和相关性、用户反馈和满意度。这些数据如果不在底座层统一采集企业就无法做AI治理。我建议在底座设计时就把成本归集和质量指标作为一等需求。每次模型调用记录Token数和费用每次检索记录命中情况每次用户交互记录反馈。这些数据积累起来才能支撑后续的优化决策。6.5 坑五低估了流式响应的工程复杂度流式响应看起来只是把结果一块块返回实际涉及一堆工程细节网关要支持长连接和分块传输、服务端要正确处理背压、客户端要能处理中断和重连、错误要在流中途正确传递。我见过不少团队在流式响应上翻车表现为本地测试正常一上生产就出现响应卡顿或截断。处理流式响应时要特别注意超时配置和缓冲配置。网关、负载均衡、反向代理每一层都可能引入缓冲导致流式效果失效。另外流式场景下的错误处理要设计好流已经开始返回后出错不能简单返回HTTP错误码而要在流内传递错误信息。7. 关于Spring Cloud Alibaba停更与组件选型的现实考量聊AI应用底座的技术选型绕不开一个现实问题Spring Cloud Alibaba部分组件已经进入维护状态这对新建平台意味着什么这个问题在技术社区讨论很多我结合自己的观察说几点实际考量。7.1 停更不等于不能用但要评估风险首先要澄清一个常见误解组件进入维护状态不等于立刻不能用。已经稳定的功能在维护状态下依然可以正常工作很多企业生产环境还在跑。但风险在于新出现的兼容性问题、安全漏洞、与新版本JDK或Spring Boot的适配可能得不到及时修复。对于新建的AI应用底座我的建议是核心组件优先选择活跃维护的替代方案非核心或已有稳定替代的组件可以继续用但要制定迁移预案。不要因为现在还能跑就完全无视这个信号。7.2 服务注册与配置中心的替代思路Nacos作为注册中心和配置中心目前社区活跃度相对较好是很多团队的选择。如果考虑替代Consul、etcd也是可选方案但迁移成本要考虑。我的实际经验是注册中心和配置中心尽量选社区活跃、文档完善、有商业支持背书的方案因为这两个组件是底座的基础设施出问题影响面最大。7.3 熔断限流组件的选择Sentinel是Spring Cloud Alibaba体系里常用的熔断限流组件功能完善。如果考虑替代Resilience4j是一个轻量级选择与Spring Boot集成良好社区活跃。两者在功能上有重叠选型时主要看团队熟悉度和具体需求。我的建议是熔断限流这种横切关注点优先选与主框架集成度高、配置简单的方案避免引入过多独立组件增加运维复杂度。7.4 选型的核心原则稳定优先避免追新AI应用底座是基础设施稳定性优先级高于技术先进性。我的选型原则是核心组件选经过大规模生产验证的边缘组件可以尝试新技术。不要因为某个组件看起来更酷就替换掉稳定运行的方案迁移成本和风险往往被低估。同时要关注组件的长期维护承诺。开源组件的生命周期不确定选择有明确维护计划、有活跃社区、最好有商业支持的方案能降低长期风险。8. 一个可参考的落地路径从最小可用底座到完整平台最后这部分我想给正在考虑落地AI应用底座的团队一个务实的路径参考。不要一上来就追求大而全的平台那几乎必然导致项目延期和团队疲惫。下面是我认为比较合理的分阶段落地思路。8.1 第一阶段模型网关 会话服务解决最痛的问题第一阶段只做两件事统一的模型接入网关和统一的会话管理服务。这两个是几乎所有AI应用都需要的而且重复建设成本最高。模型网关解决多厂商接入、切换、成本统计问题会话服务解决上下文管理、多实例状态共享问题。这个阶段的目标是让第一批AI应用能跑起来同时验证底座的稳定性和易用性。不要急着加知识库、加工作流先把最基础的能力做扎实。8.2 第二阶段知识库服务 权限体系支撑RAG类应用当第一批应用跑稳后第二阶段加入知识库服务和统一权限体系。知识库服务提供文档接入、分块、向量化、检索的标准化能力权限体系对接企业现有认证实现多租户隔离和细粒度授权。这个阶段要特别注意知识库的多租户隔离和检索质量。不同租户的知识库要严格隔离检索结果的相关性要有评估机制。这些是RAG类应用能否真正产生价值的关键。8.3 第三阶段可观测性 治理能力让AI应用可管可控第三阶段补齐可观测性和治理能力成本归集、质量指标、Prompt版本管理、效果对比、告警预警。这个阶段的目标是让企业能看清AI应用的整体运行状况能基于数据做优化决策。我特别建议在这个阶段建立AI应用的健康度评估体系把成本、延迟、质量、用户反馈综合成一个可量化的指标定期review。这样AI应用才不会变成上线即失管的黑盒。8.4 贯穿始终的原则业务驱动小步快跑无论哪个阶段都要坚持业务驱动。底座的能力建设应该由真实业务需求拉动而不是技术团队自嗨。每加一个能力都要问现在有业务应用需要它吗它能解决什么具体问题同时要小步快跑每个阶段都尽快让业务应用用起来收集反馈快速迭代。底座的价值不在于功能多而在于业务团队愿意用、用了之后效率真的提升了。我见过太多功能齐全但没人用的平台那是最可惜的浪费。我个人在实际推进这类平台时的体会是最难的不是技术实现而是让业务团队信任并依赖底座。这需要底座团队放下技术优越感真正去理解业务应用的痛点把底座做成业务团队想用而不是技术团队想做的东西。QuickBlue这类项目的价值最终也要由使用它的业务团队来评判。