摘要 在 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 主循环。
- 定义统一抽象接口:
before_agent、wrap_model_call、wrap_tool_call、after_agent。wrap_xxx包装类型钩子支持拦截、阻断、重试;普通 before/after 仅做埋点。 - 中间件 Chain 链式执行模型,支持 next () 流转,可以中途终止链路。
- Adapter 适配层:LangGraphAdapter、SpringAIAdapter,把统一中间件,转换成各个 Agent 框架原生回调。
- 对接 Nacos 配置中心:管理中间件开关、黑名单、阈值参数,支持配置热更新。
注意:配置热更新只对新会话生效,正在运行中的 Agent 会话沿用旧配置。
##2、SDK 内置现成中间件 业务开发人员直接按需开启,无需重复编码:
- TenantAuthMiddleware:租户身份、Skill 权限校验
- TraceMiddleware:traceId 透传,对接 SkyWalking,全链路事件上报
- TokenQuotaMiddleware:token 统计、租户配额限流
- SsrfSecurityMiddleware:IP、域名黑名单拦截
- ToolParamValidateMiddleware:解决大模型参数幻觉,工具调用参数校验
- SessionSummarizeMiddleware:长会话自动摘要压缩
- HumanInterveneMiddleware:高危 skill 触发人工审核
- 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、生产踩坑点
- Nacos 只能管理已经开发完成的中间件;新增全新类型中间件,仍然需要开发代码更新服务。Nacos 不能执行业务逻辑。
- 安全校验不能只依赖 Prompt,必须放在 wrap_tool_call 中间件后端硬拦截,防御大模型幻觉、提示注入绕过。
- 子 Agent 不会自动继承父 Agent 中间件,需要手动绑定。
- 摘要中间件不能拆散 tool‑call 一问一答配对,否则 Agent 业务逻辑错乱。
- Redis、Nacos 属于底层基础设施组件,不是 Agent 中间件;中间件内部调用 Redis/Nacos 获取配置与计数。
##5、总结 通过自研 Agent 中间件 SDK,实现通用安全观测能力复用,业务只聚焦 DAG 业务逻辑。借助 Nacos 配置驱动,实现 Agent 平台化开箱即用。 如果公司内部已经存在多套 Agent 框架,不想迁移整套 Harness 运行时,这套方案会比直接引入 DeepSeek‑Harness 更加合适。
标签:#Agent 中间件 #SaaS 大模型 #SpringAI #LangGraph #Nacos