SaaS 多租户 Agent 平台实战:自研 Agent 中间件 SDK,Nacos 配置驱动实现开箱即用

摘要 在 SaaS AI 平台中,每一个 Agent 都需要鉴权、权限校验、trace、SSRF 防护、token 限流、参数校验等横切能力。如果每个业务 Agent 重复开发,会大量重复造轮子。本文讲解如何自研 Agent 中间件 SDK,基于钩子抽象,对接 Nacos 配置中心,实现中间件按需装配开箱即用;同时实现 LangGraph、Spring‑AI 双框架适配。

SaaS 多租户 Agent 平台实战:自研 Agent 中间件 SDK,Nacos 配置驱动实现开箱即用

前言 我们做跨境营销 SaaS Agent 平台,同时存在 Python LangGraph、Java Spring‑AI 两套 Agent 实现。 最初每个业务 Agent 都重复写一套鉴权、trace、SSRF 防护、token 配额逻辑,代码大量重复,安全逻辑容易遗漏。

调研开源 Harness 后发现:dsh、codex‑harness 插件强绑定自身运行时,无法直接复用到现有业务。于是我们自研一套 Agent 中间件 SDK。

##1、SDK 整体设计思路 定位:只做横切切面,不接管 Agent 业务 DAG 与 Agent 主循环。

  1. 定义统一抽象接口:before_agent、wrap_model_call、wrap_tool_call、after_agent。 wrap_xxx包装类型钩子支持拦截、阻断、重试;普通 before/after 仅做埋点。
  2. 中间件 Chain 链式执行模型,支持 next () 流转,可以中途终止链路。
  3. Adapter 适配层:LangGraphAdapter、SpringAIAdapter,把统一中间件,转换成各个 Agent 框架原生回调。
  4. 对接 Nacos 配置中心:管理中间件开关、黑名单、阈值参数,支持配置热更新。

注意:配置热更新只对新会话生效,正在运行中的 Agent 会话沿用旧配置。

##2、SDK 内置现成中间件 业务开发人员直接按需开启,无需重复编码:

  1. TenantAuthMiddleware:租户身份、Skill 权限校验
  2. TraceMiddleware:traceId 透传,对接 SkyWalking,全链路事件上报
  3. TokenQuotaMiddleware:token 统计、租户配额限流
  4. SsrfSecurityMiddleware:IP、域名黑名单拦截
  5. ToolParamValidateMiddleware:解决大模型参数幻觉,工具调用参数校验
  6. SessionSummarizeMiddleware:长会话自动摘要压缩
  7. HumanInterveneMiddleware:高危 skill 触发人工审核
  8. CircuitBreakerMiddleware:大模型调用熔断降级

##3、两种使用模式 ### 模式 1:代码手动装配

复制代码
chain = AgentMiddlewareChain()
chain.add(TenantAuthMiddleware())
chain.add(SsrfSecurityMiddleware())
chain.add(TraceMiddleware())
adapter = LangGraphAdapter(graph, chain)
adapter.bind()

模式 2:Nacos 配置驱动,平台化开箱即用 Nacos 存放 JSON 配置,控制中间件开关与参数,新建业务 Agent 不需要写中间件代码。

复制代码
{
  "middlewareList":[
    {"name":"TenantAuthMiddleware","enable":true},
    {"name":"SsrfSecurityMiddleware","enable":true,"blackIp":["127.0.0.1"]},
    {"name":"ReflectionMiddleware","enable":false}
  ]
}

SDK 监听 Nacos 配置变更,动态组装中间件执行链。

##4、生产踩坑点

  1. Nacos 只能管理已经开发完成的中间件;新增全新类型中间件,仍然需要开发代码更新服务。Nacos 不能执行业务逻辑。
  2. 安全校验不能只依赖 Prompt,必须放在 wrap_tool_call 中间件后端硬拦截,防御大模型幻觉、提示注入绕过。
  3. 子 Agent 不会自动继承父 Agent 中间件,需要手动绑定。
  4. 摘要中间件不能拆散 tool‑call 一问一答配对,否则 Agent 业务逻辑错乱。
  5. Redis、Nacos 属于底层基础设施组件,不是 Agent 中间件;中间件内部调用 Redis/Nacos 获取配置与计数。

##5、总结 通过自研 Agent 中间件 SDK,实现通用安全观测能力复用,业务只聚焦 DAG 业务逻辑。借助 Nacos 配置驱动,实现 Agent 平台化开箱即用。 如果公司内部已经存在多套 Agent 框架,不想迁移整套 Harness 运行时,这套方案会比直接引入 DeepSeek‑Harness 更加合适。

标签:#Agent 中间件 #SaaS 大模型 #SpringAI #LangGraph #Nacos

相关推荐
程序员梅雨11 小时前
ZooKeeper面经总结
java·大数据·linux·分布式·后端·zookeeper·中间件
Wang's Blog3 天前
Java 中间件之 RabbitMQ 快速入门: SpringAMQP 消息转换器
java·中间件·java-rabbitmq
Wang's Blog3 天前
Java 中间件之 RabbitMQ 快速入门: SpringAMQP WorkQueue 工作队列模型
java·中间件·java-rabbitmq
snhna3 天前
Agent 上云部署实战(上):从 GitHub 到 Linux,用 Dify 跑通中间件、域名和 HTTPS
linux·中间件
小白学大数据3 天前
拼多多反爬对抗实战:Scrapy 中间件化采集架构解析
开发语言·scrapy·中间件·架构
Wang's Blog3 天前
Java 中间件之 RabbitMQ 快速入门: SpringAMQP 的 DirectExchange 路由模式
java·中间件·java-rabbitmq
七夜zippoe3 天前
Agent 中间件架构:钩子链、插件注册与横切治理
ai·中间件·架构·agent·钩子链
谢亮_vipxieliang3 天前
Go Gin 中间件与参数验证:从入门到实战
中间件·golang·gin
code_slave(码畜)4 天前
微服务架构落地:消息队列架构设计(下篇)——消息堆积、死信治理与集群监控告警实战
spring boot·spring cloud·微服务·云原生·中间件·架构
吴爃4 天前
小微企业 SRE 稳定性建设(四):消息链路与消费积压
中间件·容量规划·消息队列·sre