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_agentwrap_model_callwrap_tool_callafter_agentwrap_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

相关推荐
liangshanbo12152 天前
Redux 的中间件(Middleware)的工作机制
中间件·react·redux
今年下半年2 天前
SpringBoot整合金蝶中间件
spring boot·中间件·maven
青山木2 天前
RocketMQ 入门到原理(六):可靠性全景
java·后端·中间件·架构·rocketmq
青山木2 天前
RocketMQ 入门到原理(五):特殊消息类型
java·后端·中间件·架构·rocketmq
青山木3 天前
RocketMQ 入门到原理(三):消息存储原理
java·后端·中间件·架构·rocketmq
青山木4 天前
RocketMQ 入门到原理(一):整体架构与消息的生命周期
java·分布式·后端·中间件·架构·rocketmq
StevenSurpass5 天前
打印业务彻底解耦:FastPrintAgent 统一 JSON 模型 + FastReport 引擎的设计与落地
mqtt·http·中间件·打印·fastreport
avi91115 天前
无厘头 -- 基于vue 公用状态机,已用于放置类篮球卡牌Game
中间件·vue·公用状态·文件间通信
2401_868534786 天前
网络安全法规
安全·中间件
JIngles1237 天前
用 Dart 通过 S3 API 操作 MinIO:文件上传与下载 Demo
中间件·minio·存储