agent 架构设计

14 阅读22分钟

智能客服、智能医疗问诊与 rag-agent 整合架构设计


1. 整合目标与原则

1.1 目标

  • rag-agent 为基座:在现有 rag-agent(Node + Python + React)上扩展,不另起新仓;RAG 为基座能力,客服、医疗为扩展 Agent
  • 多 Agent 并存RAG 文档问答智能客服智能医疗问诊 同平台、入口分离(API + MCP)、流水线独立。
  • 多 MCP 口子:前端层设计 多个 Agent 入口,以 多个 MCP 暴露(RAG MCP、客服 MCP、医疗 MCP),便于 IDE / 工作流 / 其他 AI 按需调用。
  • 共享基础设施:Embedding、Redis、配置、日志、Node 认证与路由复用;知识库与推理链按子域隔离

1.2 原则

  • 基座 + 扩展:核心能力与扩展 Agent 分层;新增 Agent 以可插拔方式接入,通过配置与路由注册。
  • 入口区分:API 路径 + MCP 工具 双通道;前端/客户端可走 REST 或 MCP 调用各 Agent。
  • 数据隔离:RAG → Qdrant 用户文档;客服 → 客服知识库;医疗 → ChromaDB 医学三库。
  • 可独立演进:各 Agent 子域可单独迭代、扩缩容、替换组件,互不影响;新增 Agent 时不动基座核心。

2. 三类 Agent 对比(入口与流水线)

维度RAG 文档问答智能客服智能医疗问诊
入口单轮 ask多轮 chat(session)单次 consult(症状+图)
交互形态问题 → 答案+来源多轮消息 → 回复/澄清症状+可选图 → 结构化报告
核心流水线embed → Qdrant → LLM → 回答预处理 → 意图‖实体 → 对话管理 → KB → 响应图像分析 → 症状解析 → 知识检索 → 诊断 → 报告
知识库Qdrant user_{id}客服 KB(FAISS / Qdrant)ChromaDB 症状/疾病/治疗
输出answer + sources文本回复 or 澄清结构化报告
多模态

3. 整体架构图(基座 + 扩展 + 多 MCP)

3.1 逻辑分层总览

┌─────────────────────────────────────────────────────────────────────────────────────────┐
│                            前端层 · 多 Agent 口子(多 MCP)                               │
│  ┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐      … 可扩展        │
│  │  RAG Agent MCP  │    │ 客服 Agent MCP  │    │ 医疗 Agent MCP  │                      │
│  │  Manifest       │    │ Manifest        │    │ Manifest        │                      │
│  └────────┬────────┘    └────────┬────────┘    └────────┬────────┘                      │
│           └──────────────────────┼──────────────────────┘                               │
│                                  ▼                                                      │
└──────────────────────────────────┼──────────────────────────────────────────────────────┘
                                   │
┌──────────────────────────────────┼──────────────────────────────────────────────────────┐
│              Node.js · BFF + Policy Gateway(认证、鉴权、限流、MCP token→user)           │
│        /api/v1/rag/*  │  /api/v1/customer-service/*  │  /api/v1/medical/*               │
└──────────────────────────────────┼──────────────────────────────────────────────────────┘
                                   │
                                   ▼
┌─────────────────────────────────────────────────────────────────────────────────────────┐
│                    Agent Runtime / Orchestrator(统一调度与约束)                         │
│  注册表 · 能力声明 · Prompt/Policy 管控 · Tool 调度 · Memory 策略 · 安全/合规 Hook       │
└─────────────────────────────────────────────────────────────────────────────────────────┘
                                   │
            ┌──────────────────────┼──────────────────────┐
            ▼                      ▼                      ▼
┌─────────────────┐      ┌─────────────────┐      ┌─────────────────┐
│ RAG(基座)     │      │ 智能客服(扩展) │      │ 医疗问诊(扩展) │
│ RAGService      │      │ 意图/实体/对话   │      │ Coordinator     │
│ Qdrant · LLM    │      │ 客服 KB · LLM   │      │ 合规层·ChromaDB·ERNIE │
└────────┬────────┘      └────────┬────────┘      └────────┬────────┘
         │                        │                        │
         └────────────────────────┼────────────────────────┘
                                  ▼
┌─────────────────────────────────────────────────────────────────────────────────────────┐
│  共用:EmbeddingService · config · logger · Observability(Trace)                       │
└─────────────────────────────────────────────────────────────────────────────────────────┘
            │                        │                        │
            ▼                        ▼                        ▼
     ┌─────────────┐          ┌─────────────┐          ┌─────────────┐
     │ Qdrant      │          │ 客服 KB     │          │ ChromaDB    │
     │ Redis       │          │ Redis       │          │ FastDeploy  │
     │ OpenAI      │          │ OpenAI      │          │ Embedding   │
     └─────────────┘          └─────────────┘          └─────────────┘

约定:MCP 与 REST 仅调用 Agent Runtime,不直连各 Agent 内部;Runtime 负责注册、调度、Policy、Tool 路由与合规 Hook。

3.2 多 MCP 口子与 Agent 映射

                    ┌───────────────────────────────────────────┐
                    │           多 MCP 口子(前端层)            │
                    └───────────────────────────────────────────┘
                                         │
         ┌───────────────────────────────┼───────────────────────────────┐
         │                               │                               │
         ▼                               ▼                               ▼
┌─────────────────┐             ┌─────────────────┐             ┌─────────────────┐
│  RAG Agent MCP  │             │ 客服 Agent MCP  │             │ 医疗 Agent MCP  │
├─────────────────┤             ├─────────────────┤             ├─────────────────┤
│ tools:          │             │ tools:          │             │ tools:          │
│ · rag_ask       │             │ · cs_chat       │             │ · medical_consult│
│ · rag_upload    │             │ · cs_session    │             │                 │
│ · rag_status    │             │                 │             │                 │
└────────┬────────┘             └────────┬────────┘             └────────┬────────┘
         │                               │                               │
         └───────────────────────────────┼───────────────────────────────┘
                                         │
                         ┌───────────────┴───────────────┐
                         │  MCP ↔ 后端 适配层            │
                         │  请求发往 Runtime(经 Node    │
                         │  或直连 Python),不直连 Agent│
                         └───────────────┬───────────────┘
                                         │
         ┌───────────────────────────────┼───────────────────────────────┐
         ▼                               ▼                               ▼
    /rag/ask                    /customer-service/chat            /medical/consult
         └───────────────────────────────┼───────────────────────────────┘
                                         ▼
                              Agent Runtime → 分派至对应 Agent

要点:每个 Agent 对应一个 MCP 口子;MCP 内暴露 tools,经 Manifest 声明能力;MCP & REST 只调用 Runtime,由 Runtime 调度到具体 Agent。


4. Agent Runtime / Orchestrator 设计

4.1 定位与价值

  • 统一调度与约束:所有 Agent 经 Runtime 注册、暴露、被调用;避免各 Agent 各自为政、行为不一致。
  • 多 Agent 协作:后续 Agent-to-Agent、编排、组合能力可基于 Runtime 的注册表 + Tool 路由实现,而非硬编码。
  • 治理与边界:Prompt / Policy / Memory / 安全合规 Hook 收口在 Runtime,便于管控与审计。

4.2 逻辑架构

┌─────────────────────────────────────────────────────────────────────────┐
│                     Agent Runtime / Core                                 │
├─────────────────────────────────────────────────────────────────────────┤
│  · Agent 注册表(id, capabilities, tools, constraints)                  │
│  · 能力声明(Capabilities)· 与 MCP Manifest 对齐                        │
│  · Prompt / Policy 管控(按 Agent 或全局)                               │
│  · Tool 调度(tool → Agent 路由)                                        │
│  · Memory 策略(会话 / 跨轮 / 跨 Agent)                                 │
│  · 安全 / 合规 Hook(Pre-Check、Safety Filter、Output Formatter)        │
└─────────────────────────────────────────────────────────────────────────┘
                                  │
                    ┌─────────────┼─────────────┐
                    ▼             ▼             ▼
                  RAG          客服           医疗

4.3 工程落点(目录与模块)

app/core/agent_runtime/
  ├── registry.py        # Agent 注册表
  ├── agent_base.py      # BaseAgent,所有 Agent 继承并注册 capabilities / tools / constraints
  ├── tool_router.py     # Tool → Agent 路由
  ├── policies/          # Prompt、Policy 配置与执行
  ├── memory/            # 会话 / 跨轮 / 跨 Agent 记忆策略
  └── hooks/             # 安全、合规 Hook(如医疗 Pre-Check、Output Formatter)
  • 所有 Agent:继承 BaseAgent,注册 capabilitiestoolsconstraints
  • MCP & REST:请求先进 Runtime;Runtime 做路由、Policy、Hook 后再派发到具体 Agent 实现。

4.4 与 MCP、Node 的关系

  • MCP:暴露 tools;Manifest 来自 Runtime 的 Agent 能力声明;调用时走 Runtime,不直连 Agent。
  • Node:BFF + Policy Gateway;鉴权、限流、用户画像 等在此;向后调 Python 时,可统一进 Runtime 再分派,或按路由直接进 Runtime 入口。

5. rag-agent 基座与扩展性设计

5.1 基座与扩展分层

┌─────────────────────────────────────────────────────────────────────────────────────────┐
│  扩展层(可插拔 Agent)                                                                   │
│  ┌─────────────────┐  ┌─────────────────┐  ┌─────────────────┐  ┌─────────────────┐   │
│  │ 智能客服        │  │ 医疗问诊        │  │ 未来 Agent 3    │  │ …               │   │
│  └─────────────────┘  └─────────────────┘  └─────────────────┘  └─────────────────┘   │
└─────────────────────────────────────────────────────────────────────────────────────────┘
                                        │
                                        │ 注册 / 配置 / 路由
                                        ▼
┌─────────────────────────────────────────────────────────────────────────────────────────┐
│  基座(rag-agent 既有)                                                                   │
│  · Node API(认证、会话、文档/对话元数据)                                                │
│  · Python RAG(embed、Qdrant、LLM、process-document、ask)                                │
│  · React 文档管理 + RAG 对话                                                             │
│  · 共用:EmbeddingService、Redis、Config、Logger                                         │
└─────────────────────────────────────────────────────────────────────────────────────────┘
  • 基座:保持 rag-agent 现有职责与边界,不侵入改动。
  • 扩展:新 Agent 以 子域(API 路由 + 服务模块 + 可选 MCP)形式挂载;通过 配置路由表 注册,便于启用/停用与迭代。

5.2 扩展性机制(如何加新 Agent)

机制说明
Runtime 注册新 Agent 继承 BaseAgent,在 registry 登记 capabilitiestoolsconstraints;MCP Manifest 与 Runtime 同步。
路由注册新增 app/api/v1/{agent}/,在 main.pyinclude_router;Node 增加对应转发。
配置驱动AGENTS_ENABLED = ["rag","customer_service","medical"] 等;未启用则不挂路由、不注册 MCP。
MCP 注册每个 Agent 对应一个 MCP 定义(tools + Manifest);统一 MCP 网关或独立 MCP 进程按配置加载。
知识库隔离新 Agent 自带 KB(独立集合/库),与 RAG、客服、医疗隔离;建议带 KB Meta(§9.3)。
目录约定app/api/v1/{agent}.pyapp/services/{agent}/app/kb/{agent}/ 等,便于批量发现与文档生成。

6. 多 MCP 设计(多个 Agent 口子)

6.1 定位

  • 前端层提供 多个 Agent 口子,以 多 MCP 形式暴露;每个 Agent 一个 MCP,对应一组 tools
  • 使用方(React、Gradio、IDE、n8n、其他 AI 等)可按需连接一个或多个 MCP,调用对应 Agent,无需混用同一接口。

6.2 MCP 与 Agent 对应

MCP对应 Agent典型 tools说明
RAG Agent MCPRAG 文档问答rag_ask, rag_upload, rag_status文档上传、问答、任务状态
客服 Agent MCP智能客服cs_chat, cs_session多轮对话、会话状态
医疗 Agent MCP智能医疗问诊medical_consult症状+图像问诊,结构化报告

6.3 MCP 与后端对接

  • 各 MCP 的 tool 实现 内部分别调用现有 Node / Python API(如 POST /api/v1/rag/askPOST /api/v1/customer-service/chatPOST /api/v1/medical/consult)。
  • MCP 层可部署为:
    • 独立 MCP Server(按 Agent 拆多个 server),或
    • 统一 MCP Gateway:一个 server 暴露多组 tools,按 prefix 或 tool 名路由到对应 Agent 后端。

6.4 前端与 MCP 的关系

  • React:可集成 MCP 客户端,连接 RAG / 客服 / 医疗 等 MCP,在文档页、客服页、医疗页调用对应 tools。
  • Gradio:医疗页可直连 医疗 Agent MCP 或 REST;若统一走 MCP,则与 React 一致。
  • 新增 Agent:新增 MCP + tools,前端增加对应入口即可,不改已有 MCP

6.5 MCP Capability Manifest(能力清单)

  • MCP 不止 tool → API 的薄封装,建议增加 Agent Capability Manifest,与 Runtime 能力声明对齐。
  • 作用:IDE / 工作流 / Auto-Agent 可 发现 Agent 能力,做自动编排、多 Agent 协作;后续 Agent Marketplace、SaaS API 文档可自动生成。

示例(医疗 Agent)

{
  "agent": "medical",
  "version": "1.0",
  "capabilities": ["symptom_analysis", "risk_assessment", "medical_report"],
  "input_schema": { "text_input": "string", "image_b64": "string|null" },
  "output_schema": { "symptoms": "string[]", "risk_assessment": "object", "treatment_plan": "object" },
  "constraints": {
    "medical_disclaimer": true,
    "no_diagnosis": true,
    "no_dosage": true
  }
}
  • 各 MCP 提供 manifest 端点资源,供发现与校验;Manifest 由 Runtime 注册表 生成或同步。

7. 统一路由与入口(API + MCP)

7.1 API 路由规划

路径方法子域说明
/api/v1/rag/process-documentPOSTRAG文档处理(基座)
/api/v1/rag/askPOSTRAGRAG 问答(基座)
/api/v1/rag/status/:idGETRAG任务状态(基座)
/api/v1/customer-service/chatPOST智能客服多轮对话
/api/v1/customer-service/session/:idGET智能客服会话状态(可选)
/api/v1/medical/consultPOST医疗问诊单次问诊

7.2 入口与请求体摘要

入口请求体(要点)输出
RAG askquestion, user_id, conversation_id, conversation_history?{ answer, sources }
客服 chatsession_id, user_input{ response }{ response, missing_slots? }
医疗 consulttext_input, image_b64?, user_id?{ symptoms, risk_assessment, treatment_plan, ... }

7.3 MCP tools 与 API 映射

MCP tool等价 API说明
rag_askPOST /api/v1/rag/askRAG 问答
rag_uploadPOST /api/v1/rag/process-document文档处理
rag_statusGET /api/v1/rag/status/:id任务状态
cs_chatPOST /api/v1/customer-service/chat客服单轮
cs_sessionGET /api/v1/customer-service/session/:id客服会话
medical_consultPOST /api/v1/medical/consult医疗问诊

8. 各子域流水线概览

8.1 RAG 子域(基座)

用户问题 → rag_ask / /rag/ask → RAGService.askembed(query) → Qdrant(user_{id}) → LLM → answer + sources

8.2 智能客服子域(扩展)

user_input → cs_chat / /customer-service/chat → 预处理
    → [ 意图识别 ‖ 实体抽取 ] → DialogManager
    → 槽位齐 ? KB 检索 → 响应 : 澄清话术 → response

8.3 医疗问诊子域(扩展)

症状+图像 → medical_consult / /medical/consult → AgentCoordinator
    → 图像分析(可选) → 症状解析 → 知识检索(ChromaDB) → 诊断 → 报告

8.4 医疗 Agent 合规与责任隔离层

  • 医疗 Agent 须 显式加入合规与责任隔离不依赖 Prompt 约定,而是 Policy as Code

建议结构

MedicalAgent
  ├─ Pre-Checkscope / disclaimer 校验)
  ├─ Reasoning(内部推理,可隐藏)
  ├─ Safety Filter(过滤禁止输出:用药剂量、明确诊断结论等)
  └─ Output Formatter(非诊断声明、建议就医、遵医嘱等强制字段)
  • 策略示例
    • 强制输出:风险等级、建议就医条件、非诊断免责声明。
    • 禁止:用药剂量、明确诊断结论。
  • 实现:在 services/medical/ 下增加 compliance/(如 pre_check.pysafety_filter.pyoutput_formatter.py),由 Coordinator 或 Runtime Hook 调用;Strategy 可配置化。

9. 共享与隔离

9.1 共享组件

组件用途
EmbeddingServiceRAG / 客服 query / 医疗检索 向量化
Redis缓存、客服会话等
Config / Logger统一配置与日志
Node认证、路由、文档/对话元数据
FastAPI app挂载 rag、customer-service、medical 路由

9.2 按子域隔离

子域知识库推理/模型
RAGQdrant user_{id}OpenAI LLM
智能客服客服 KB(FAISS / Qdrant)意图/实体模型 + LLM
医疗问诊ChromaDB 医学三库ErnieClient (FastDeploy)

9.3 知识库 Meta Layer(分级 + 标签化)

  • 知识库不仅 按子域隔离,建议增加 KB Meta Layer,支持 分级 + 标签化,便于 Policy 与合规控制。

建议元数据

字段说明示例
domain所属域medical | cs | rag
level可见/使用级别public | internal | restricted
source来源类型guideline | faq | user_upload
validity有效期ttl / review_date
risk_tag风险标签high_risk | normal
  • 用途:医疗 Agent 优先 guideline禁止 high_risk 直接输出;客服可按业务线切换 KB;RAG 可按 level 做权限过滤。

10. 部署与模块落点(rag-agent 基座)

10.1 服务部署视图

                    ┌─────────────────────────────────────────────────┐
                    │              API Gateway / Nginx                 │
                    └─────────────────────────┬───────────────────────┘
                                              │
              ┌───────────────────────────────┼───────────────────────────────┐
              ▼                               ▼                               ▼
    ┌─────────────────┐            ┌─────────────────┐            ┌─────────────────┐
    │ Node · BFF +    │            │ Python 服务     │            │ MCP 层           │
    │ Policy Gateway  │ ──HTTP──►  │ Runtime +       │ ◄── 适配 ── │ 多 MCP 口子     │
    │ 认证/鉴权/限流   │            │ RAG+客服+医疗   │            │ + Manifest      │
    └─────────────────┘            └────────┬────────┘            └────────┬────────┘
              │                             │                             │
              │  MySQL / Redis              │  Qdrant, ChromaDB,          │  前端 / IDE /
              │  文档/对话/用户              │  FAISS, Redis, LLM,         │  工作流 等
              │  画像/权限                   │  Observability              │
              ▼                             ▼                             ▼
    ┌─────────────────┐            ┌─────────────────┐            ┌─────────────────┐
    │ 业务数据        │            │ 向量/模型/缓存   │            │ MCP 客户端      │
    └─────────────────┘            └─────────────────┘            └─────────────────┘

10.2 Python 子域与目录映射(基座 + 扩展)

子域路由服务/知识库
RAG(基座)app/api/v1/rag.pyrag_service, vector_store(Qdrant)
智能客服(扩展)app/api/v1/customer_service.pyservices/customer_service/kb/cs/ 或 FAISS
医疗问诊(扩展)app/api/v1/medical.pyservices/medical/kb/medical/(ChromaDB)
  • 均挂载到 同一 FastAPI app;扩展 Agent 按 配置 注册。

10.3 Node 层:BFF + Policy Gateway

  • Node 不止 转发,明确为 BFF(Backend For Frontend)+ Policy Gateway
  • 建议能力
    • 用户画像:普通用户 / 医生 / 客服等;按角色决定可调用的 Agent 与接口。
    • Agent 调用权限:按路由或 MCP tool 校验是否有权调用对应 Agent。
    • 调用频率限制:按 user / token / IP 限流,防滥用。
    • MCP token → user 映射:MCP 请求经 Node 时,将 token 解析为 user,再传 Python / Runtime。
  • 实现:在现有认证、路由之上增加 Policy 中间件(权限、限流、画像);新增 /customer-service/*/medical/* 转发;基座 /rag/* 保持现状。

11. 前端层:多 Agent 口子与多 MCP

11.1 口子与 MCP 对应

前端入口对接方式说明
文档管理 / RAG 对话RAG Agent MCP 或 /rag/*基座
智能客服对话客服 Agent MCP 或 /customer-service/*扩展
医疗问诊医疗 Agent MCP 或 /medical/*,Gradio 可直连扩展
  • 各入口可二选一:走 MCP(如 IDE、工作流)或走 REST(如 React、Gradio)。
  • 多个 Agent 口子 = 多个 MCP;新增 Agent 时新增 MCP,前端增加对应口子即可。

11.2 扩展新 Agent 时前端侧

  1. 新增 MCP(或在一体化 MCP Gateway 中新增 tools)。
  2. 前端新增 路由/页入口,连接该 MCP 或对应 REST。
  3. 无需改动既有 RAG / 客服 / 医疗 的 MCP 或页面。

12. 数据流小结

子域典型输入主输出知识检索
RAGquestionanswer + sourcesQdrant 用户文档
智能客服session_id, user_input文本回复 or 澄清客服知识库
医疗问诊text_input, image_b64?结构化报告ChromaDB 医学三库

13. 实施顺序建议

  1. Phase 0:巩固 rag-agent 基座;按 03 方案完成 医疗扩展,打通 RAG + 医疗。
  2. Phase 1:实现 智能客服 子域与 /customer-service/*;Node 转发;客服 Agent MCPcs_chat / cs_session
  3. Phase 2多 MCP 口子 落地:RAG / 客服 / 医疗 各 MCP 就绪;Agent RuntimeMCP Manifest 就绪;前端可对接 MCP 或 REST。
  4. Phase 3治理与平台化Observability(Trace)、安全 / 合规 / PolicyNode BFF + Policy Gateway医疗合规层KB Meta;按需客服转人工、扩展 Checklist 落地。
  5. Phase 4(v3.1):规模化治理Agent 调度与依赖治理(§16)、Prompt/Policy/Tool 版本治理(§17)、成本与预算(§18)、Trust Level(§19)、Memory 生命周期与隔离(§20)、Human-in-the-loop(§21)、Agent 生命周期(§22);满足规模化 / 商业化 / 长周期演进。

14. Agent 可观测性(Observability)

  • 客服误答、医疗风险、RAG 幻觉等 必须可复盘;缺少观测则无法定位与改进。

建议:Agent Call Trace

字段说明
trace_id调用链唯一标识
input_hash输入哈希(脱敏后可追溯)
agent调用的 Agent
prompt_version当前 Prompt 版本(§17)
policy_version当前 Policy 版本(§17)
tools_used使用的 tools / 子步骤(含版本,如 kb_search@2.1
invocation_chainAgent 调用链(§16,编排时)
latency_ms端到端与分段耗时
kb_hit_rate知识库命中情况(可选)
safety_trigger是否触发安全/合规过滤
tokens_used / estimated_cost成本与预算(§18,可选)
recommended_actionHITL:auto | review | human(§21,可选)
  • 落点:Runtime 或各 Agent 入口 打点;输出到日志 / 监控(如 OpenTelemetry、自建 trace 表)。
  • 使用:排障、合规审计、效果评估、模型与 KB 迭代。

15. 安全、合规与 Policy 设计

  • 安全:认证、鉴权、限流(Node BFF + Policy Gateway);MCP token → user 映射;敏感数据脱敏。
  • 合规:医疗 合规与责任隔离层(§8.4);禁止输出(用药剂量、明确诊断)与 强制输出(免责、建议就医)以 Policy 代码 实现,而非仅靠 Prompt。
  • Policy 管控:集中在 Agent Runtime;按 Agent 或全局配置 Prompt / 输出约束 / 审批流程;与 Observability 联动,便于审计。

16. Agent 调度与依赖治理规范(必须级)

目标:防止 Agent 规模化后出现调用失控、循环依赖、成本爆炸
Agent 规模 >3 后的生死线:若不明确「谁可调谁、怎么调」,易出现隐式链路、循环依赖、成本与延迟失控。

16.1 设计原则(必须写清)

  1. Agent 不得直接调用 Agent
  2. 所有 Agent 协作必须经由 Agent Runtime 编排
  3. Runtime 是唯一允许多 Agent 调度的控制面(Control Plane)

Agent = 数据面;Runtime = 控制面。

16.2 Agent 调用模型

单 Agent 调用(默认)

Client / MCP / API
        ↓
   Agent Runtime
        ↓
     Agent A
  • 不允许 Agent A → Agent B。
  • Agent 内部只可:调用 Tool、查询 KB、使用 Memory。

多 Agent 协作(编排模式)

Client
 ↓
Runtime
 ├─ Agent A(分析)
 ├─ Agent B(检索)
 └─ Agent C(输出)
  • Runtime 明确:调用顺序中间结果结构最大深度

16.3 核心规则与 Runtime 约束

规则说明
Agent 不得直接调用 Agent任何 Agent 内部不得直接 HTTP/内部调用另一 Agent;协作只能经 Runtime 编排
协作仅经 Runtime客服 → RAG、医疗 → 知识检索 等跨域能力,由 Runtime 的 编排层显式 DAG 触发,而非 Agent 间直连。
能力说明
最大调用深度单次请求内 Agent 链深度上限(如 3);超过直接中断,返回安全降级结果。
允许的 Agent DAG白名单式「允许谁调谁」;Runtime 在执行前校验;禁止运行时“临时串联”。
调用成本与时间预算每条 Agent 链:token_budget、latency_budget;任一 Agent 超限 → Runtime 中断后续。

配置示例

runtime:
  max_agent_depth: 3
{
  "medical": ["rag"],
  "customer_service": ["rag"],
  "rag": []
}

16.4 调度失败策略

场景行为
Agent 超时中断链路
超预算返回部分结果
Agent 不可用启用 fallback Agent

16.5 工程落点

  • 注册表扩展:Agent 注册时声明 allowed_downstream: ["rag"] 或空(不可调其他 Agent);Runtime 校验 DAG 再执行。
  • 编排层:若需「客服中查文档」,由 Runtime 暴露 组合 Tool(如 cs_chat_with_rag),内部按 DAG 调用 RAG 与客服,而非客服内部调 RAG。
  • Trace:记录 invocation_chain: ["customer_service", "rag"],便于审计与成本归因。

17. Prompt / Policy / Tool 版本治理(必须级)

无版本策略则:Prompt 微调导致行为漂移、事故回溯找不到「当时版本」。

17.1 版本策略

类型建议说明
Promptsemver + 内容 hash1.2.3,变更时 bump;重大变更可带 hash 后缀便于精确回溯。
Policy强制版本锁定部署/发布时锁定 policy 版本;Trace 与审计必须记录 policy_version。
Tool向后兼容声明接口变更需兼容旧调用方或升主版本;在 Manifest 中声明 tool 版本(如 kb_search@2.1)。

17.2 Trace 中记录版本

Agent Call Trace(§14)中增加版本字段,便于事故回溯与 A/B 对比:

{
  "trace_id": "...",
  "agent": "medical",
  "prompt_version": "1.2.3",
  "policy_version": "1.0.1",
  "tools": ["kb_search@2.1", "safety_filter@1.0"],
  "latency_ms": 1200,
  "safety_trigger": false
}
  • 落点:Runtime 在派发请求时注入当前 Agent 的 prompt_version / policy_version;各 Tool 执行处上报 tool 及版本。

18. 成本与预算控制(必须级)

目标:让 Agent 平台「算得清账、卖得了钱、控得住成本」。
平台一定会被问到的问题;无预算则 Agent 越多成本越不可控,SaaS 定价无法落地。

18.1 成本模型拆分

维度说明
LLM TokenPrompt + Completion
ToolAPI 调用
KB向量检索
Memory读写次数

18.2 Runtime 成本控制机制(强制)

单请求预算

{
  "max_prompt_tokens": 4000,
  "max_completion_tokens": 1000,
  "max_tool_calls": 5
}

Agent 级成本上限

agent:
  medical:
    max_tokens_per_request: 3000
  rag:
    max_tokens_per_request: 2000

用户 / MCP Key 配额

对象限制
User日 / 月
MCP KeyQPS + 月度 token
Organization总预算

18.3 成本可观测(必须写入 Trace)

{
  "cost": {
    "prompt_tokens": 1200,
    "completion_tokens": 300,
    "tool_calls": 2,
    "estimated_usd": 0.012
  }
}

18.4 成本超限策略

  • 软限制:返回压缩回答。
  • 硬限制:直接拒绝 + 提示升级套餐。

18.5 与现有组件的衔接

  • Node BFF:配额与限流可前置在 Node(按 user/token),Runtime 做二次校验(按 Agent/tool)。
  • Trace:记录 tokens_usedestimated_costquota_remaining,便于计费与运营。
  • 配置:建议 config/quotas.yaml 或等效配置驱动,便于按环境/版本切换。

19. Agent 能力分级(Trust Level)(强烈建议)

不是所有 Agent 同一风险等级;企业版 / 医疗版 / 教育版 的核心机制。

19.1 分级示例

Level说明典型 Agent
L0只读、无外部 Tool简单 FAQ、文档检索(仅返回片段)
L1可查 KB,无写操作RAG 问答、客服知识库检索
L2可调用外部 API / 写操作客服工单创建、通知发送
L3高风险(医疗、金融、法律)医疗问诊、投资建议

19.2 Runtime 行为

  • 根据 用户身份 / 角色MCP key场景(如是否医疗合规环境)决定 是否允许调用高等级 Agent
  • Node BFF + Policy Gateway 或 Runtime 内做 Trust Level 校验;未授权调用 L3 时返回 403 或降级到 L1/L2。
  • Manifest 与注册表声明每个 Agent 的 trust_level,与 MCP 能力发现对齐。

20. Memory 生命周期与隔离策略(强烈建议)

目标:避免隐私风险、记忆污染、行为不可控
仅提「Memory」不够;需明确「活多久、谁可见、合规边界」。

20.1 Memory 分级模型(强制)

层级范围生命周期
Request Memory单次调用请求结束
Session Memory会话会话结束(如 TTL 30min)
Long-term Memory用户显式授权(如 TTL 90d)

20.2 Agent Memory 默认策略

Agent默认
医疗❌ 禁止长期记忆
RAG❌ 禁止长期记忆
客服✅ 可摘要存储

20.3 Memory 写入规则(强制)

  • 只允许写:事实性偏好、问题摘要。
  • 禁止:原始对话全文、医疗症状原文、情绪判断。

20.4 按 Agent 的隔离策略

Agent建议
医疗默认禁止长期记忆;仅 request / 可选 session(匿名或脱敏);禁止把症状/诊断写入用户长期画像除非合规授权。
客服可持久化 问题摘要、工单 ID;会话级对话可保留;长期用户画像需策略与合规一致。
RAG对话历史可 session 级;用户文档与索引归属已有规范。

20.5 Memory 生命周期管理

memory:
  session_ttl: 30min
  long_term_ttl: 90d
  • 支持用户删除;支持 Agent 主动失效。

  • 落点:Runtime Memory 策略 按 Agent 配置 memory_scope(request | session | user)与 TTL;合规 Hook 可拦截「长期写入」行为。


21. Human-in-the-loop(HITL)接口预留(强烈建议)

目标:让 Agent 在「不确定 / 高风险」时让位于人
纯自动无法覆盖:医疗高风险需转人工、客服不确定需接管。

21.1 Agent 输出必须包含置信度

{
  "answer": "...",
  "confidence": 0.62,
  "risk_level": "medium"
}
  • 由各 Agent 或合规层填充;Runtime / Policy 据此决策。

21.2 Runtime 决策矩阵

风险置信度行为
≥0.8自动
0.5–0.8提示人工
任意强制转人工

21.3 决策与接口(模式)

模式说明典型场景
自动直接返回用户低风险、高置信
半自动Agent 生成草稿,人类审核后发布中风险、中置信
全人工Agent 仅提供 KB 检索、建议结构;人类主导高风险、低置信、合规强制
  • 接口预留:Runtime 输出 recommended_action: "auto" | "review" | "human";Node 或前端据此路由到人工队列、工单或待办。
  • Trace:记录 recommended_actionconfidencerisk_level,便于审计与效果评估。

21.4 医疗场景强制规则

  • 高风险:不允许自动回复;必须转人工 / 医疗专业人员。
  • 所有自动回复:强制免责声明(与 §8.4 合规层一致)。

22. Agent 生命周期管理(加分项)

持续演进且不破坏现有用户:支持暂停、灰度、下线。

22.1 状态

状态说明
enabled正常可调
paused暂停新请求,已有请求可跑完;运维/事故时使用
grayscale仅部分用户 / 流量可调;用于新版本验证
sunset已下线,返回明确错误或迁移提示;MCP 不再暴露

22.2 与 MCP / Runtime 的联动

  • Runtime 注册表:Agent 带 status;调度前校验,非 enabled 且非 grayscale 命中则拒绝或降级。
  • MCP:Manifest 或 discovery 返回 Agent 状态;IDE / 工作流可感知「不可用」并提示。
  • 配置驱动AGENTS_STATUS 或等效配置;便于运维一键暂停/恢复,无需改代码。

23. Agent 扩展 Checklist

新增 Agent 时必须满足

说明
能力声明在 Runtime 注册 capabilities、tools、constraints
KB 策略明确知识库(含 Meta:domain / level / risk_tag);与既有 KB 隔离
MCP提供 MCP tools;Manifest(含 capabilities、input/output、constraints)
Policy合规、安全、输出约束等;可插 Runtime Hook
Observability打点(trace、latency、safety_trigger、版本、成本等)
依赖治理不直连其他 Agent;若需协作,经 Runtime 编排与 DAG 白名单(§16)
版本Prompt/Policy/Tool 版本声明并在 Trace 中记录(§17)
文档接口、Manifest、使用说明更新
  • 基座与已有 Agent 不受影响;新 Agent 按 Checklist 接入后,即可通过 Runtime、MCP、Node 暴露。

24. 小结

  • 基座rag-agent 为 Platform / 基座;RAG 为基座能力,客服、医疗为扩展 Agent
  • Agent Runtime统一调度与约束;注册表、能力声明、Prompt/Policy、Tool 路由、Memory、安全合规 Hook;MCP & REST 只调 Runtime,不直连 Agent。
  • 多 MCP 口子:前端 多 Agent 口子多 MCP 暴露;MCP Capability Manifest 与 Runtime 对齐,支持发现与编排。
  • NodeBFF + Policy Gateway;用户画像、Agent 权限、限流、MCP token→user。
  • 治理与平台化KB Meta(分级、标签)、医疗合规层(Policy as Code)、Observability(Trace)、Agent 扩展 Checklist;下一步重在 治理、调度、规范、边界,而非单纯叠加 Agent。
  • v3.1 新增Agent 调度与依赖治理(§16:不直连、DAG/深度/成本预算)、版本治理(§17:Prompt/Policy/Tool 版本 + Trace)、成本与预算(§18)、Trust Level(§19)、Memory 生命周期与隔离(§20)、Human-in-the-loop(§21)、Agent 生命周期(§22);满足 规模化 / 商业化 / 长周期演进 的治理与约束。

成熟度自评(v3.1:补足依赖治理 + 版本 + 成本 + Trust + Memory + HITL + 生命周期后)

维度评价
架构方向⭐⭐⭐⭐⭐
工程可落地⭐⭐⭐⭐
扩展性⭐⭐⭐⭐⭐
合规意识⭐⭐⭐⭐⭐
平台化能力⭐⭐⭐⭐⭐(含 Runtime + 治理 + 成本)

补上 Agent 调用治理版本 + Trace成本/配额Trust LevelMemory 策略HITL生命周期 后,本设计可作为 SaaS / 企业级 Agent 平台 的规模化架构基础。

整体升级后的平台状态(补完 §16–§22 后)

  • 规模化 Agent 调度能力(控制面/数据面分离、DAG 白名单、调度失败策略)
  • 成本可控、可售卖(成本模型、单请求/Agent 级预算、配额、Trace 可观测、超限策略)
  • 合规可审计(Memory 写入规则、HITL 决策矩阵、医疗强制规则、版本 + Trace)
  • 企业 / 医疗可落地(Trust Level、Memory 默认策略、人工接管模式)

直白结论:本设计已从「AI 项目架构」升级为 「Agent 平台治理规范」;下一步不再是「要不要补」,而是 「开始实现哪一块最值钱」


文档版本:v3.1 | 平台级 Agent 系统 · 依赖治理 + 版本 + 成本 + Trust + Memory + HITL + 生命周期