← 返回知识库

龙虾 · 银行智能中台架构方案

v2.0 · 三维鉴权版 · 2026-06
30 万+
存量服务规模
3
鉴权模型(用户×渠道×数据)
5
系统架构分层
6
工具检索准确性保障
12
交付周期

Context 与定位

本方案使用 AgentScope-Java v2.0 构建「银行智能中台」(代号:龙虾),定位为基础服务层——不直接面向终端用户,而是作为其他业务系统的后端能力引擎被调用。

龙虾的定位边界

做什么:提供 AI Agent 对话能力 + 30万存量服务工具化封装 + 统一的智能工具调度入口。
不做什么:不做终端用户认证(由上游渠道完成)、不做 IM/消息渠道、不做业务流程编排(由调用方系统负责)。


鉴权模型:三维授权体系

龙虾作为基础服务,调用方来自三个维度的交叉,鉴权模型必须从传统 RBAC 升级为三维 ABAC:

三维主体矩阵

维度行内员工 (B2E)对公客户 (B2B)对私客户 (B2C)
身份标识工号 (HR/UM系统)企业客户号 (ECIF)个人客户号 (CIF)
身份来源行内 LDAP/统一用户中心核心客户信息系统核心客户信息系统
典型角色客户经理 / 风控审批 / 柜员 / 运营企业法人 / 财务 / 经办人个人持卡人
数据可见范围所属机构 + 岗位授权范围仅限本企业及关联企业仅限本人
接口可见性按角色 + 系统白名单按产品签约 + 企业类型按产品持有 + 客户等级

渠道维:调用方系统身份

龙虾不直接面向终端用户,所有调用来自上游业务系统。每个渠道具有不同的可信等级接口权限集

渠道类型典型系统认证强度典型调用场景
内部业务系统信贷系统 / 风控系统 / 柜面高(行内 SSO + mTLS)客户经理查客户征信 → 龙虾调CBS接口
电子渠道手机银行 / 网银 / 小程序中(用户已登录 + 设备指纹)客户问"我的贷款额度" → 龙虾调零售信贷接口
外部合作方第三方支付 / 银联 / 合作平台低(仅限特定API + 证书绑定)合作方查产品利率 → 龙虾调产品信息接口
管理后台Web Dashboard高(管理员工号 + OTP)租户管理员配置工具白名单

数据维:谁能看什么数据

鉴权不仅控制"能否调接口",还控制"能看什么数据"。数据范围分三级:

数据范围说明适用场景
SELF仅限数据主体本人/本企业C端客户查自己的账户/征信/贷款
BRANCH所属分行/支行范围内客户经理查本支行所有客户
ALL_AUTHORIZED按角色+产品签约的完整授权范围风控审批员跨支行评估风险

令牌传播链:渠道认证 → 龙虾授权

龙虾不做终端认证,而是信任上游渠道已完成的认证,通过令牌传播链实现鉴权:

终端用户 (员工/客户)
   │  [渠道完成认证]
   │  手机银行 → 密码/生物识别
   │  柜面     → 工号+密码+OTP
   │  信贷系统 → 行内SSO
   ▼
渠道系统
   │  调用龙虾时携带:
   │  ┌─────────────────────────────────┐
   │  │ X-Channel-Id: credit-system     │  ← 谁在调我
   │  │ X-End-User-Type: EMPLOYEE       │  ← 终端用户类型
   │  │ X-End-User-Id: EMP-00342        │  ← 终端用户标识
   │  │ X-Data-Scope: BRANCH            │  ← 数据范围
   │  │ X-Tenant-Id: branch-beijing     │  ← 所属租户
   │  │ Authorization: Bearer <JWT>     │  ← 渠道签发的JWT
   │  └─────────────────────────────────┘
   ▼
龙虾 (基础服务)
   │ 验签 → 解析三维上下文 → 决定可用接口+数据过滤
   │
   ├─ 1. 验渠道签名  → 确认调用来自合法渠道
   ├─ 2. 解析用户身份 → EMPLOYEE / CORP_CUSTOMER / RETAIL_CUSTOMER
   ├─ 3. 叠加数据范围 → SELF / BRANCH / ALL_AUTHORIZED
   └─ 4. 执行工具调用 → 仅返回授权范围内的数据

核心设计决策:为什么是令牌传播而非统一认证

方案优点缺点适用场景
统一认证中心
(所有渠道跳转龙虾登录)
权限集中管控
审计日志完整
渠道接入成本高
用户体验割裂
存量系统改造大
新建系统、
渠道数量少
令牌传播
(渠道认证后签发JWT)
渠道零改造接入
终端用户体验无感
存量系统友好
需信任渠道认证强度
需渠道签名校验
已有多个渠道
存量系统多
(本方案选择)
混合模式
(关键操作回源验证)
安全性与便利性平衡实现复杂度最高金融交易等高安全场景

风险提示

令牌传播的核心风险是"渠道认证强度不一致"——柜面系统使用工号+OTP(高安全),手机银行可能仅用密码+设备指纹(中安全)。龙虾需要根据渠道认证强度,对高风险操作(大额转账、授信审批)追加二次确认。


架构总览(5 层扩展版)

原 5 层架构不变,但 Gateway Layer 从单纯的"多租户路由"升级为"三维鉴权网关"

┌──────────────────────────────────────────────────────────────────┐
│                   Web Dashboard (唯一前端)                          │
│    Vue3 + Arco Design  │  SSE流式  │  租户管理  │  审计  │  工具市场  │
└──────────────────────────┬───────────────────────────────────────┘
                           │ SSE / HTTP REST
┌──────────────────────────▼───────────────────────────────────────┐
│              Gateway Layer ★ 升级为三维鉴权网关                     │
│                                                                  │
│  ┌──────────────┐  ┌────────────────┐  ┌─────────────────────┐  │
│  │ 渠道签名校验   │  │ 三维上下文构建   │  │ 令牌校验 + 范围裁剪  │  │
│  │ ChannelId→    │  │ User×Channel   │  │ JWT验签 → DataScope│  │
│  │ 公钥验签      │  │  ×DataScope   │  │ → 预过滤 BitMap     │  │
│  └──────────────┘  └────────────────┘  └─────────────────────┘  │
│                                                                  │
│  Spring Boot 3.5 + WebFlux │ Redis Session │ Nacos 注册           │
└──────────────────────────┬───────────────────────────────────────┘
                           │
┌──────────────────────────▼───────────────────────────────────────┐
│              Agent Orchestration Layer (智能体编排)                 │
│  Master Agent → Router Agent → Sub-Agent Pool                      │
│  信贷 │ 风控 │ 客服 │ 数据查询 │ 运营 │ 合规 │ IT运维 │ ...        │
└──────────────────────────┬───────────────────────────────────────┘
                           │
┌──────────────────────────▼───────────────────────────────────────┐
│              Capability Layer (能力层)                              │
│  Tools (30万服务) │ Skills 技能库 │ Memory 三层记忆 │ Sandbox       │
└──────────────────────────┬───────────────────────────────────────┘
                           │
┌──────────────────────────▼───────────────────────────────────────┐
│        Enterprise Service Integration (30万存量服务集成)             │
│  元数据注册 → ToolDefinition自动生成 → 动态调用                      │
└──────────────────────────────────────────────────────────────────┘

关键技术决策与分析

决策点选型依据替代方案优缺点
Agent 框架AgentScope-Java v2.0-RC2分布式+事件系统+Middleware完整,天然支持多Agent编排LangChain4j / Spring AI / 自研 原生Java生态,无 Python 依赖; RC2 尚未GA,API可能变动
唯一交互界面Web Dashboard(无IM)银行内网环境,浏览器天然可用;IM渠道需额外适配企业微信/钉钉/飞书 Bot 零渠道适配成本; 员工需打开浏览器,不如IM方便
鉴权模型三维ABAC(用户×渠道×数据范围)调用方包含行内员工+C端客户,渠道多样,传统RBAC无法覆盖纯RBAC / OAuth2.0 Scope / OPA策略引擎 覆盖全场景; 实现复杂度高,上下文传播需全链路治理
30万服务集成自动发现+动态Tool生成手工封装需225人年,物理不可行手工MCP Server封装 / API网关手动配置 唯一可行方案; 依赖OpenAPI覆盖率(当前~40%)
多租户隔离Workspace物理隔离 + 三维TenantContext银行合规底线:租户间数据不可互见逻辑隔离(单DB+tenant_id列)/ 混合模式 安全最高; 资源开销大,每租户独立Agent实例
通信协议SSE(对话流)+ HTTP REST(管理API)比WebSocket简单可靠,银行内网丢包率低WebSocket / gRPC Stream 防火墙友好,无协议升级; 单向流,客户端不能中途发指令

30万存量服务集成策略

核心思路:ToolDefinition 而非 MCP Server

这是整个方案最关键的差异化设计。面对30万存量服务,手工封装 MCP Server 需要 225 人年,物理不可行。本方案的核心创新是:自动化产物是数据库记录(ToolDefinition),而非进程(MCP Server)

对比维度手工MCP模式自动化ToolDefinition模式(本方案)
产物每个服务一个MCP Server进程每条API一条ToolDefinition记录(~2KB)
30万服务资源15TB内存 + 30万进程~600MB数据库 + 0新进程
启动速度MCP Server冷启动2-5s无需启动,随查随用
新服务上线需手工编写+部署注册中心出现 → 10分钟内自动可用
调用链Agent → MCP Client → MCP Server → 真实服务(多一跳)Agent → ServiceInvoker → 真实服务(直连)
维护成本30万个进程的运维监控1个ServiceInvoker通用组件

自动化管道

注册中心(Nacos/Eureka)   →  元数据提取  →  LLM描述增强  →  分组标注
  每10分钟增量同步         OpenAPI/Swagger    qwen-turbo批量     按客群/业务线
                           gRPC Reflection    原始 → 语义增强     自动分类
                           API Gateway元数据

   →  ToolDefinition入库  →  工具市场上架  →  租户启用  →  Agent可调用
      PostgreSQL+pgvector    状态:待审核       人工一次配置    零人工
      +Elasticsearch全文索引

元数据覆盖率与降级策略

自动生成的工具质量取决于上游API文档的完整度。对不同类型的服务采用分级处理:

元数据质量预期占比处理方式工具质量
OpenAPI/Swagger 完整~40%完整解析 name/desc/params/response schema,LLM增强描述⭐⭐⭐⭐⭐ 高
gRPC Proto Reflection~15%Proto 解析 → method/field映射 → 补充业务描述⭐⭐⭐⭐ 较高
API Gateway 基础元数据~35%提取 path+method+基础参数 → LLM推断业务语义⭐⭐⭐ 中等
无元数据(遗留系统)~10%仅生成占位ToolDefinition(name+path),标记"待完善"⭐⭐ 低(需人工补文档)

实用主义策略

优先保障核心系统(CBS/CRM/风控/信贷等前20%高频服务)的工具质量,这些系统通常已有完整OpenAPI文档。长尾遗留系统允许低质量占位,逐步补文档——80%的Agent调用集中在前20%的工具上。


核心挑战:30万工具 × 64K 上下文 → 准确高效调用

问题量化

30万工具 × 每工具~300 tokens = 9000万 tokens。64K上下文可用空间约40K tokens,单次可装载工具 ≤ 130个——仅占全部工具的 0.04%。必须把工具选择变成一个三级过滤漏斗。

三级过滤漏斗

30万工具
    │
    ▼
┌──────────────────────────────────────────────────────────┐
│ Layer 0: 确定性预过滤 (Deterministic Pre-filter)           │
│ ★ 核心创新:三维上下文硬过滤                                 │
│                                                          │
│ 用户画像 × 渠道权限 × 数据范围 → BitMap AND 运算            │
│                                                          │
│ 规则1: 渠道 → 手机银行看不到柜面专用接口                     │
│ 规则2: 用户类型 → C端客户看不到员工管理工具                   │
│ 规则3: 客群/角色 → 对公客户经理物理看不到对私储蓄工具          │
│ 规则4: 地区 → 北京分行看不到上海分行专属服务                   │
│ 规则5: 已开通系统 → 未签约产品对应接口不可见                   │
│ 规则6: 数据范围 → SELF/Branch/ALL 三级过滤                  │
│ 规则7: 合规评级 → 低评级用户看不到高风险操作                   │
│                                                          │
│ 效果: 30万 → 500~3000(削减 99%+)                          │
│ 延迟: < 5ms (纯内存BitMap)  确定性: 100% 无遗漏               │
└──────────────────────────┬───────────────────────────────┘
                           │ ~2000 候选
                           ▼
┌──────────────────────────────────────────────────────────┐
│ Layer 1: 意图提取 + 混合检索                                │
│ Dense(向量) + Sparse(BM25) → RRF融合 → Top-100            │
│ 延迟: < 80ms  命中率: >95%                                 │
└──────────────────────────┬───────────────────────────────┘
                           │ 100 候选
                           ▼
┌──────────────────────────────────────────────────────────┐
│ Layer 2: 精排 + Agent上下文注入                             │
│ Cross-encoder → 100→15  注入Agent context                  │
│ 延迟: < 150ms  最终准确率: >97%                              │
└──────────────────────────────────────────────────────────┘

检索准确性保障(六层)

层级机制效果可验证性
L0 确定性预过滤7条规则 × BitMap AND(新增3条渠道/类型/数据范围规则)30万→500~3000,100%确定性抽样100用户,验证过滤后工具数
L1 工具描述增强LLM离线增强:用途+客群+常见问法+注意事项语义检索命中率提升30%+A/B对比增强前后检索效果
L2 混合检索+精排Dense+Sparse → RRF → Cross-encoder RerankTop-15命中率>97%人工标注1000条银行问法
L3 Agent自行验证LLM判断检索结果是否匹配意图 → 不匹配则 search_tools()首次无结果率<3%统计二次检索触发率
L4 用户/租户个性化高频工具加权 + 协同过滤常用工具排第一统计首位工具点击率
L5 人工反馈闭环Dashboard「工具选错了」按钮 → 回流校准Reranker持续优化误调用率趋势图

为什么预过滤必须是确定性的

向量检索是概率性的(可能漏、可能错),但在银行场景,某些"漏"和"错"不可接受——对公客户经理看到对私储蓄工具 → 合规事故;未签约产品的API被调用 → 越权。Layer 0 用 BitMap 确定性硬过滤,保证了这类错误的概率为 0。


关键场景走查

场景 1:客户经理查客户征信(B2E 典型场景)

触发: 客户经理在信贷系统输入 "查张三的征信"
    │
渠道: 信贷系统 (Channel=credit-system, Auth=mTLS+SSO)
    │ Header: End-User-Type=EMPLOYEE, User-Id=EMP-00342, Data-Scope=BRANCH
    ▼
龙虾 Gateway:
    │ Layer 0 预过滤:
    │   规则1: credit-system → 允许信贷/风控/查询类接口
    │   规则2: EMPLOYEE → 允许内部员工工具集
    │   规则3: 客户经理+对公 → 对公信贷类 + 通用查询
    │   规则4: 北京分行 → 北京分行可见的服务
    │   规则5: 已开通CBS,CRM → CBS+CRM的API
    │   规则6: BRANCH → 可查本支行客户数据
    │   规则7: 合规评级HIGH → 全部工具可用
    │   → 30万 → 约1200个候选工具
    │
    │ 意图提取: "查征信" → {intent:征信查询, domain:credit, entity:个人客户}
    │ 混合检索: 在1200个候选内 → Top-100
    │ 精排: → Top-15 → 注入Agent
    │
    ▼
Agent: 选择 cbs_query_credit_report(idNumber="110101...")
    │ 调用前: PermissionMiddleware 验证:
    │   ✓ 客户经理可查征信 (角色权限)
    │   ✓ 张三在北京分行范围内 (数据范围)
    │   ✓ 信用查询是读操作 (自动放行)
    ▼
ServiceInvoker → CBS核心信贷系统 → 返回征信报告
    │ 审计中间件记录: EMP-00342 | credit-system | query_credit_report | 北京分行 | SUCCESS
    ▼
Agent: "张三征信评分720分,共有3笔贷款记录..."  (脱敏展示)

场景 2:C端客户查贷款额度(B2C 典型场景)

触发: 对私客户在手机银行问 "我能贷多少钱"
    │
渠道: 手机银行 (Channel=mobile-bank, Auth=密码+设备指纹)
    │ Header: End-User-Type=RETAIL_CUSTOMER, User-Id=CUST-88231, Data-Scope=SELF
    ▼
龙虾 Gateway:
    │ Layer 0 预过滤:
    │   规则1: mobile-bank → 仅限电子渠道开放的接口(不含柜面/内部专用)
    │   规则2: RETAIL_CUSTOMER → 仅限C端客户可见工具
    │   规则3: 对私客户 → 对私产品类工具
    │   规则6: SELF → 仅限本人数据(硬限制)
    │   → 30万 → 约300个候选工具
    │
    │ 意图提取: "我能贷多少钱" → {intent:贷款额度查询, domain:retail_loan}
    │ 混合检索: 300候选 → Top-50
    │ 精排: → Top-10 → 注入Agent
    │
    ▼
Agent: 选择 retail_query_loan_limit(customerId="CUST-88231")
    │ 调用前: PermissionMiddleware 验证:
    │   ✓ 数据范围=SELF → 只能查 CUST-88231 本人的贷款信息
    │   ✓ 渠道=mobile-bank → 贷款额度查询是开放接口
    │   ✗ 如果Agent试图调 "修改贷款额度" → DENY(写操作 + 渠道认证强度不够)
    ▼
ServiceInvoker → 零售信贷系统 → 返回额度信息
    ▼
Agent: "您目前的可用额度为30万元,其中信用贷20万、抵押贷10万..."

场景 3:跨渠道数据泄漏防御(安全关键场景)

攻击假设:攻击者获取了手机银行的合法Token(C端客户身份),试图通过龙虾查询非本人数据。

攻击路径: 手机银行Token → 龙虾 → 构造请求查他人征信

防御层次:
  ① Data-Scope=SELF → 硬限制,只能查 CUST-88231 本人
  ② Layer 0 预过滤 → tool_definitions 的 data_scope 字段 = SELF 的工具
     只有"本人可查"标签的接口才出现在候选池
  ③ PermissionMiddleware → 工具调用前再次校验:
      请求的 customerId 必须 == Context.endUserId
      不匹配 → DENY + 告警
  ④ SensitiveDataMiddleware → 即使绕过(理论上不可能),输出脱敏
  ⑤ AuditMiddleware → 全量记录: 谁、什么时候、从哪个渠道、调了什么、返回了什么

结论: 5层纵深防御。即使单层被突破,后续4层仍可拦截。

银行合规中间件链

龙虾内置5个核心中间件,以责任链模式串联,每次 Agent 操作依次经过。中间件不是"可选插件"而是银行合规的底线实现

中间件拦截时机功能为什么必须
ChannelAuthMiddleware请求到达时验证渠道签名+令牌有效性+构建三维上下文防止非法系统调用龙虾;渠道认证强度分级决定了后续权限决策
PermissionCheckMiddleware每次工具调用前工具白名单校验 + 写操作人工确认 + 数据范围校验防止越权操作;写操作必须本人确认(即使角色允许)
SensitiveDataMiddleware用户输入&LLM输出时身份证/银行卡/手机号自动脱敏 + 疑似泄露告警防止敏感数据通过LLM泄漏(即使内网也可能有日志泄露风险)
AuditMiddleware每次操作全程全量记录:谁+渠道+操作+入参+出参+耗时+成功/失败银保监会合规要求;事后溯源唯一依据
ComplianceMiddleware每次Agent决策后检查Agent输出是否符合监管要求(不推荐非持牌产品、不提供投资建议等)LLM幻觉可能导致合规风险——Agent可能"建议"客户买非授权产品

里程碑规划(12 周)

阶段周期核心目标交付物风险点
Phase 1
骨架+单Agent对话
Week 1-3Spring Boot + AgentScope 基础搭建;HarnessAgent 最小可用;Web Dashboard 对话界面可对话的 Dashboard 原型;千问模型联通;基础 WorkspaceAgentScope RC2 稳定性;千问模型延迟
Phase 2
多Agent+工具市场MVP
Week 4-6Sub-Agent池;Router Agent;动态Tool生成引擎;30万服务扫描器工具市场Dashboard;信贷/风控/客服三个Sub-Agent可用;~100个核心系统工具自动生成OpenAPI覆盖率不足导致工具质量差;Router Agent意图识别不准
Phase 3
三维鉴权+合规+企业集成
Week 7-9三维ABAC鉴权落地;5个合规中间件全部就绪;渠道签名校验;租户物理隔离完整鉴权链路可演示;敏感数据脱敏生效;审计日志可查询渠道对接工作量可能超预期;合规中间件可能误拦截
Phase 4
生产加固
Week 10-12分布式部署;Sandbox隔离;监控告警;压力测试;安全渗透测试1000并发会话稳定运行;P99延迟<5s;安全测试通过报告性能瓶颈未知;国产化适配(信创)

关键风险与缓解

风险概率影响缓解措施触发信号
AgentScope v2.0 未按预期GA基于RC2开发核心逻辑,预留升级脚本;备选方案:退回AgentScope v1.x + 自研补缺失功能RC3延迟超过4周
30万服务OpenAPI覆盖率不足40%三种降级路径(Swagger→gRPC→基础元数据);优先保障核心系统工具质量(前20%高频服务)Phase 2扫描后覆盖率<30%
三维鉴权上下文丢失/篡改严重渠道签名校验+JWT防篡改;全链路traceId关联验证;异常上下文自动降级为最小权限审计日志发现上下文不一致
LLM幻觉触发错误业务操作严重写操作必须人工确认;ComplianceMiddleware拦截不合规输出;关键操作二次确认Agent输出含非授权建议
多租户数据泄漏严重Workspace物理隔离+审计全量+渗透测试;租户销毁时立即清理所有数据渗透测试发现跨租户访问
C端与B2E权限混淆三维ABAC的UserType字段决定权限模型分叉;代码审查确保两套逻辑完全隔离C端客户成功调用了B2E接口
银行系统响应慢/超时3次重试+降级提示+缓存GET结果;对超过2s的接口异步化P95延迟>3s

验证方式

  1. Dashboard E2E:打开浏览器 → 登录 → 发送消息 → SSE流式返回 → 工具调用卡片展示 → 审计日志可查询
  2. 三维鉴权验证:C端客户Token + Data-Scope=SELF → 试图查他人数据 → 被拦截;员工Token + Data-Scope=BRANCH → 可查本支行数据
  3. 多租户隔离:租户A的Agent调用工具返回"未授权",租户B同名工具正常
  4. 渠道隔离:手机银行渠道 → 仅开放电子渠道工具集;信贷系统渠道 → 完整内部工具集
  5. 30万服务扫描:启动后10分钟内完成全量元数据同步,Dashboard工具市场可见新服务
  6. 合规验证:输入身份证号 → 自动脱敏;尝试write工具 → 被拦截弹确认;Agent输出含投资建议 → ComplianceMiddleware拦截
  7. 压力测试:JMeter 1000并发SSE连接 → 错误率<1%,P99延迟<5s