MBE Agent 框架文档

多智能体协作编排 · MCP Tool 框架 · 智能路由 — 面向开发者的 Agent 集成指南


目录


1. 架构概览

MBE 的 Agent 框架建立在 Level 6(自主决策智能体)能力之上,由七大核心模块协同工作:

┌────────────────────────────────────────────────────────────┐
│                    用户请求                                  │
├────────────────────────────────────────────────────────────┤
│                                                            │
│   ┌──────────┐    ┌──────────────┐    ┌──────────────┐    │
│   │ 智能路由  │───→│ 多智能体编排  │───→│ 回答融合      │    │
│   │SmartRouter│    │ Orchestrator │    │ Fusion       │    │
│   └──────────┘    └──────────────┘    └──────────────┘    │
│        ↑                 ↑                    ↓            │
│   ┌──────────┐    ┌──────────────┐    ┌──────────────┐    │
│   │ 因果推理  │    │ 知识图谱      │    │ Self-Critique │    │
│   │ Causal   │    │ Knowledge    │    │ 一致性验证    │    │
│   └──────────┘    └──────────────┘    └──────────────┘    │
│                                                            │
│   ┌──────────┐    ┌──────────────┐    ┌──────────────┐    │
│   │ MCP 工具  │    │ SCST 训练    │    │ 离线 CoT     │    │
│   │ Tools    │    │ Self-Train   │    │ Reasoning    │    │
│   └──────────┘    └──────────────┘    └──────────────┘    │
└────────────────────────────────────────────────────────────┘

能力层级

Level 能力 关键模块
Level 1 基础 LLM + RAG 知识库检索
Level 2 + Self-Critique 15 模块质量检查
Level 3 + TITANS + MIRAS + HOPE 个性化智能助手
Level 4 + 知识图谱 推理型智能系统
Level 5 + SCST 自进化认知系统
Level 6 + 多智能体 + 因果推理 + CoT 自主决策智能体

2. 多智能体编排器

2.1 概述

AgentOrchestrator 实现了基于知识图谱驱动的多专家协作框架。

核心流程

analyze_domains() → should_multi_agent() → select_agents() → parallel_query() → fuse_responses()
     分析领域            判断是否多Agent         选择专家          并行调用            融合回答

代码位置src/core/agent_orchestrator.py

2.2 核心类

AgentOrchestrator

from src.core.agent_orchestrator import get_agent_orchestrator

orchestrator = get_agent_orchestrator(
    max_agents=3,                    # 最多同时调用的专家数
    min_confidence=0.3,              # 专家最低置信度
    consistency_threshold=0.6,       # 一致性阈值
)

完整编排调用

result = await orchestrator.orchestrate(
    question="我想投资新能源,同时考虑法律风险和税务优化",
    system_prompt="请从专业角度分析",
    force_multi=False,               # 是否强制多Agent
)

# result: OrchestratedResult
print(result.is_multi_agent)         # True
print(result.agents_used)            # ["finance_expert", "legal_expert"]
print(result.fused_answer)           # 融合后的综合回答
print(result.decision_reason)        # "问题涉及 2 个领域: finance, legal"

2.3 数据模型

@dataclass
class AgentResponse:
    agent_id: str           # 专家 ID
    agent_name: str         # 专家名称
    domain: str             # 专业领域
    answer: str             # 回答内容
    confidence: float       # 置信度 [0, 1]
    sources: List[str]      # 引用来源
    latency_ms: float       # 响应延迟

@dataclass
class OrchestratedResult:
    question: str                              # 原始问题
    is_multi_agent: bool                       # 是否使用多Agent
    agents_used: List[str]                     # 参与的专家
    individual_responses: List[AgentResponse]   # 各专家回答
    fused_answer: str                          # 融合后的最终回答
    consistency_score: float                   # 跨Agent一致性
    total_latency_ms: float                    # 总延迟
    decision_reason: str                       # 使用多Agent的原因

2.4 多Agent 触发条件

编排器通过以下规则判断是否需要多 Agent:

规则 条件 示例
多领域 问题涉及 ≥ 2 个不同领域 "投资理财 + 税务优化"
跨领域关键词 包含"同时"、"一方面...另一方面" "既要合规又要收益"
子问题 长问题中检测到多个问号/分号 "1. ...?2. ...?"
强制模式 force_multi=True 测试/评估场景

3. MCP 协议与工具

3.1 概述

MBE 实现了完整的 MCP(Model Context Protocol)服务器,支持通过 JSON-RPC over SSE 协议与外部系统集成。

代码位置src/mcp/

src/mcp/
├── server.py       # MCP 服务器(JSON-RPC 处理)
├── tools.py        # 工具定义(7 个内置工具)
├── client.py       # 小智 MCP 客户端
└── qt2_mcp.py      # QT2 量化系统代理

3.2 内置工具清单

工具名 功能 必需参数
mises_analyze 米塞斯行为分析 user_input, device_id
ask_expert 咨询 AI 专家 question, device_id
list_experts 列出可用专家 device_id
mises_feedback 记录行动反馈 device_id, action_result, satisfaction
capture_and_analyze 拍照并分析 question, device_id
analyze_image 分析上传图片 question, device_id
get_camera_upload_info 获取上传信息 device_id

3.3 MCP 服务器连接

# 客户端连接 MCP 服务器
import httpx

# 初始化
resp = await client.post("/mcp/message", json={
    "jsonrpc": "2.0",
    "id": 1,
    "method": "initialize",
    "params": {
        "clientInfo": {"name": "my-app", "version": "1.0.0"}
    }
})

# 获取工具列表
resp = await client.post("/mcp/message", json={
    "jsonrpc": "2.0",
    "id": 2,
    "method": "tools/list",
    "params": {}
})

# 调用工具
resp = await client.post("/mcp/message", json={
    "jsonrpc": "2.0",
    "id": 3,
    "method": "tools/call",
    "params": {
        "name": "ask_expert",
        "arguments": {
            "question": "劳动合同到期不续签需要赔偿吗?",
            "device_id": "device_001"
        }
    }
})

3.4 SSE 流式传输

MCP 支持 Server-Sent Events 实时推送:

# SSE 连接
async with httpx.AsyncClient() as client:
    async with client.stream("GET", "/mcp/sse") as resp:
        async for line in resp.aiter_lines():
            if line.startswith("data:"):
                event = json.loads(line[5:])
                # 处理事件

3.5 QT2 代理工具

MCP 服务器内置了 QT2 量化系统代理,支持远程调用量化分析:

工具名 功能
get_signals 获取量化信号
get_market 获取市场数据
analyze_stock 股票分析
get_alerts 获取预警
analyze_stakeholder 股东行为分析
quick_risk_check 快速风险检查

3.6 自定义工具开发

src/mcp/tools.py 中添加新工具:

# 1. 定义工具 schema
MY_CUSTOM_TOOL = {
    "name": "my_custom_tool",
    "description": "工具描述...",
    "inputSchema": {
        "type": "object",
        "properties": {
            "param1": {"type": "string", "description": "参数说明"},
        },
        "required": ["param1"]
    }
}

# 2. 注册到工具列表
MISES_TOOLS.append(MY_CUSTOM_TOOL)

# 3. 在 server.py 中实现处理逻辑
# _handle_tools_call() 方法中添加:
elif tool_name == "my_custom_tool":
    return await self._call_my_custom(arguments)

4. 智能路由

4.1 概述

SmartRouter 根据查询复杂度、用户等级和系统状态,自动选择最优 LLM 模型。

代码位置src/core/smart_router.py

4.2 路由因素

因素 说明 影响
查询复杂度 SIMPLE / MODERATE / COMPLEX / REASONING / CODE / CREATIVE 主要
用户等级 FREE / PERSONAL / PRO / ENTERPRISE 可用模型范围
预算使用 当前预算消耗比例 降级选择
时段 高峰/低谷 路由策略
Function Call 任务是否需要 function calling 模型过滤

4.3 模型能力矩阵

MODEL_CAPABILITIES = {
    "anthropic/claude-sonnet-4":   {"reasoning": 9, "code": 9, "creative": 9, "speed": 7},
    "anthropic/claude-opus-4":     {"reasoning": 10, "code": 9, "creative": 9, "speed": 5},
    "anthropic/claude-haiku-4":    {"reasoning": 7, "code": 7, "creative": 7, "speed": 9},
    "openai/gpt-4.1":             {"reasoning": 9, "code": 9, "creative": 8, "speed": 7},
    "openai/gpt-4o-mini":         {"reasoning": 7, "code": 7, "creative": 7, "speed": 9},
    "openai/o1":                   {"reasoning": 10, "code": 9, "creative": 6, "speed": 3},
    # ... 更多模型
}

4.4 使用示例

from src.core.smart_router import SmartRouter, RoutingContext, UserTier

router = SmartRouter()
context = RoutingContext(
    user_id="user_001",
    user_tier=UserTier.PRO,
    query="请分析这段代码的时间复杂度",
    has_code=True,
)

decision = router.route(context)
print(decision.selected_model)       # "anthropic/claude-sonnet-4"
print(decision.complexity)           # QueryComplexity.CODE
print(decision.reason)               # "代码分析任务,选择高代码能力模型"
print(decision.estimated_cost_usd)   # 0.003
print(decision.fallback_models)      # ["openai/gpt-4.1", ...]

5. SCST 自进化训练

5.1 概述

SCST(Self-Critical Sequence Training)通过对比学习实现专家能力的持续进化。

代码位置src/training/scst_trainer.pysrc/training/scst_score.py

5.2 核心类

  • SCSTrainer — 主训练器,实现 generate → score → reward → store 循环
  • SCSTScoreEnsemble — 14 维多评分器集成
  • SCSTScore — 标准化 [0,1] 分数
  • SCSTReward — 奖励 = score(sample) - score(greedy)

5.3 训练流程

1. generate_pair()    → 对同一问题生成 sample 和 greedy 两个回答
2. score_pair()       → 用 14 维评分器打分
3. compute_reward()   → reward = score(sample) - score(greedy)
4. store()            → 正奖励的 sample 作为优质训练数据
5. finetune()         → 导出正样本用于模型微调

5.3 评分维度

维度 说明
FACTUAL_ACCURACY 事实准确度
SOURCE_FIDELITY 来源忠实度
HALLUCINATION 幻觉程度(越低越好)
SAFETY 安全性
HELPFULNESS 有用性
COHERENCE 连贯性
RELEVANCE 相关性
CONCISENESS 简洁性
PROFESSIONALISM 专业性
EMPATHY 共情度
BOUNDARY_RESPECT 边界遵守
UNCERTAINTY_HONESTY 不确定性表达
COT_STEP_ACCURACY CoT 步骤准确性
COT_COHERENCE CoT 连贯性

5.4 API 接口

# 运行单步训练
POST /api/v1/level6/scst/train-step
{
  "question": "劳动合同解除的经济补偿标准?",
  "expert_id": "legal_expert_001"
}

# 批量训练
POST /api/v1/level6/scst/batch-train
{
  "questions": [...],
  "expert_id": "legal_expert_001",
  "batch_size": 10
}

# 导出训练数据
GET /api/v1/level6/scst/training-data?min_reward=0.1

6. 因果推理引擎

6.1 概述

基于图结构的因果关系推理,支持根因分析和影响链追踪。

代码位置src/knowledge/graph/causal_query.py

6.2 边类型

边类型 含义 示例
CAUSES A 导致 B "通货膨胀 → 购买力下降"
MITIGATES A 缓解 B "加息 → 缓解通货膨胀"

6.3 使用示例

from src.knowledge.graph.causal_query import CausalQueryEngine

engine = CausalQueryEngine()

# 添加因果关系
engine.add_causal_relation("通货膨胀", "购买力下降", weight=0.8)
engine.add_causal_relation("购买力下降", "消费减少", weight=0.7)
engine.add_mitigation("通货膨胀", "央行加息")

# 追踪因果链
chain = engine.get_causal_chain("通货膨胀", max_depth=3, direction="forward")
# → ["通货膨胀", "购买力下降", "消费减少"]

# 根因分析
roots = engine.get_root_causes("消费减少")
# → ["通货膨胀"]

# 获取缓解措施
mitigations = engine.get_mitigations("通货膨胀")
# → ["央行加息"]

# 综合摘要
summary = engine.get_causal_summary("通货膨胀")

6.4 REST API

# 查询因果链
POST /api/v1/level6/causal/query
{"entity": "通货膨胀", "direction": "forward", "max_depth": 3}

# 综合摘要
GET /api/v1/level6/causal/summary?node_id=通货膨胀

# 添加因果关系
POST /api/v1/level6/causal/add
{"cause": "通货膨胀", "effect": "购买力下降", "weight": 0.8}

# 批量添加
POST /api/v1/level6/causal/batch-add
{"relations": [{"cause": "A", "effect": "B", "weight": 0.8}, ...]}

7. 离线 CoT 框架

7.1 概述

离线 Chain-of-Thought 框架对线上交互进行离线重评估,通过逐步推理发现错误并生成改进信号。

代码位置src/training/offline_cot.py

7.2 核心类

  • OfflineCoTTrainer — 主训练器,管理交互记录 → 采样 → CoT 重评估 → 奖励提取
  • InteractionLog — 单次线上交互记录
  • CoTStep — 单步推理
  • CoTResult — CoT 输出(步骤 + 分数)
  • CoTReward — 步骤级奖励(accuracy, coherence)
  • CoTParser — 解析 CoT 标记(<step><verify><answer> 等)

7.3 工作流程

1. record_interaction()  → 记录线上交互(ai_bot.py 自动调用)
2. sample_for_cot()      → 按低分/复杂度优先采样
3. run_cot_batch()       → 批量 CoT 重评估
4. extract_rewards()     → 提取步骤级奖励信号
5. feed_to_scst()        → 回传奖励到 SCST 训练

7.3 CoT 标记语法

<step>第一步推理内容</step>
<step>第二步推理内容</step>
<verify>验证推理过程</verify>
<judgment>正确/错误/部分正确</judgment>
<overall_score>0.85</overall_score>
<weakest_step>2</weakest_step>
<answer>最终答案</answer>

7.4 调度

调度方式 触发 说明
Celery Beat 每日 04:00 自动批量 CoT 重评估
SCSTScheduler asyncio 降级 Celery 不可用时的备选
手动 API POST /api/v1/level6/cot/run-batch 按需触发

8. API 参考

8.1 Agent 编排 API

# 多智能体编排查询
POST /api/v1/level6/orchestrate
{
  "question": "分析新能源投资的法律风险和财务回报",
  "force_multi": false
}

# 获取编排统计
GET /api/v1/level6/orchestrator/stats

8.2 完整 Level 6 API 路由

方法 路径 功能
POST /api/v1/level6/orchestrate 多智能体编排
GET /api/v1/level6/orchestrator/stats 编排统计
POST /api/v1/level6/scst/train-step SCST 单步训练
POST /api/v1/level6/scst/batch-train SCST 批量训练
GET /api/v1/level6/scst/training-data 导出训练数据
POST /api/v1/level6/causal/query 因果查询
GET /api/v1/level6/causal/summary 因果摘要
POST /api/v1/level6/causal/add 添加因果关系
POST /api/v1/level6/causal/batch-add 批量添加
POST /api/v1/level6/causal/add-mitigation 添加缓解
POST /api/v1/level6/cot/run-batch 触发 CoT 批量

9. 最佳实践

9.1 多智能体编排

实践 说明
不要滥用多 Agent 简单问题单专家即可,多 Agent 增加延迟和成本
设置合理超时 多 Agent 并行调用建议 30s 超时
监控一致性 持续关注 consistency_score,低于 0.6 说明专家冲突
限制专家数 max_agents=3 通常足够,过多反而降低融合质量

9.2 MCP 工具开发

实践 说明
工具粒度适中 每个工具做一件事,避免万能工具
参数明确 inputSchema 写清楚每个参数的含义
错误处理 工具实现中做好异常捕获,返回有意义的错误信息
认证统一 通过 device_id 自动认证,不要重复实现

9.3 智能路由

实践 说明
信任路由 让 SmartRouter 自动选模型,避免硬编码
预算感知 配置合理的预算阈值,避免超支
降级策略 确认 fallback_models 列表合理
监控成本 定期查看路由统计,优化模型选择策略

📖 相关文档:Tool 使用指南 · API Reference · System Card