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

相关推荐
96245613 小时前
容器 RUNNING,为什么中间件仍不可用?ActiveMQ 与 Kafka/ZooKeeper 恢复实录
中间件·kafka·activemq
真上帝的左手14 小时前
30. 技术专题-‌应用框架组件-缓存-Redis
数据库·redis·分布式·缓存·中间件
真上帝的左手16 小时前
30. 技术专题-‌应用框架组件-搜索引擎-ES
大数据·分布式·elasticsearch·搜索引擎·中间件
kingx31 天前
BugKu PRA 渗透测试 2(Harry‘s Blog):9 Flag 全链实战复盘
中间件·渗透测试·log4j2·内网渗透·反序列化
sun_weitao1 天前
用 FastAPI + MQTT 做一个 ESP32最小化跑通示例
中间件·vue·fastapi
真上帝的左手2 天前
12. 消息队列-Kafka进阶
分布式·中间件·kafka
车载中间件通信3 天前
[TC8测试]TCP_FLAGS_PROCESSING_06
数据库·网络协议·tcp/ip·中间件·tc8
kingx34 天前
网络安全事件应急响应:X集团 WebServer 入侵溯源与处置
中间件·web·应急响应·取证·恶意样本
特立独行的猫a4 天前
ROS 2 主流DDS中间件入门:Cyclone DDS 与 Fast DDS 完全指南
中间件·ros2·dds·fast dds·cyclone dds
小易老师AI实战4 天前
用中间件把任务规划嵌进智能体循环
中间件·状态管理·智能体·工具调用·langgraph·任务规划