ARCHITECTURE

MOLA V3 架构详解

一、架构概述

MOLA V3版本在V2"快慢双模型架构"基础上进行深度演进,从"双模型架构"升级为"多智能体架构"。通过System Agent作为核心协调者,构建了车控Agent、导航Agent、记忆Agent、其他Agent四大智能体,实现了能力的专业化与协同化。

核心设计理念

主要演进

二、系统架构图

2.1 A2A交互与多智能体协同

flowchart TB
    SA["System Agent 任务规划与分发"]
    CA["车控Agent 40+API 状态感知"]
    NA["导航Agent React Agent 17+API notify_user"]
    OA["其他Agent 多媒体/通讯"]
    MA["记忆Agent 情景语义记忆"]
    CD["车机端"]
    TTT["生成播报文本"]

    SA -->|任务分发| CA
    SA -->|任务分发| NA
    SA -->|任务分发| OA
    SA <-->|A2A交互| MA
    CA & NA -->|API调用| CD
    CD -->|状态回传| CA
    CD -->|状态回传| NA
    CA -->|追问| SA
    NA -->|notify_user| SA
    OA -->|结果| SA
    SA --> TTT
    TTT -->|下发| CD

2.2 车控Agent架构

flowchart LR
    ST["System Agent任务"] --> CA["车控Agent 40高频API"]
    CS["车辆实时状态 130+"] --> CA
    CA --> OUT["输出 API调用或追问"]

2.3 记忆Agent架构

flowchart LR
    MA["记忆Agent"] --> SM["情景记忆 1周内所有session"]
    MA --> SEM["语义记忆 用户偏好/习惯/常去地点"]
    MA <-->|A2A交互| SA["System Agent 仅交互"]

2.4 导航Agent架构

flowchart TB
    ST["System Agent任务"] --> NA["导航Agent React 17+API"]

    subgraph ReactLoop["React 编排循环"]
        Plan["React规划 多工具编排"]
        POI["POI搜索 poi_search"]
        NAV["导航启动 navigation_start"]
        Route["路线查询 route_query"]
    end

    ADS["ADS云接口 POI/路线服务"] --> POI
    ADS --> Route

    Plan --> POI -->|结果解析| Plan
    Plan --> NAV -->|执行结果| Plan
    Plan --> Route -->|结果解析| Plan

    CD["车机端"] <--> NAV
    CD <--> Route

    Plan -->|notify_user结束| NA
    NA --> TT["生成播报文本 返回至System Agent"]

三、A2A规划机制详解

3.1 规划原理

System Agent作为核心协调者,通过Prompt工程的方式将各垂域Agent的能力描述注入到System Agent的上下文中,实现智能化的任务规划。

当前实现方式

3.2 能力描述注入示例

当前实现的Agent能力描述

Agent类型能力描述输入格式输出格式
车控Agent车辆控制相关功能,包括空调、座椅、车窗、灯光等40+高频控制能力{subtask: string}{tts: "", result: object}
导航Agent导航相关功能,包括目的地设置、路线规划、沿途搜索等17+导航能力;React Agent,支持多轮工具编排{subtask: string}{tts: string, result: {}}
记忆Agent记忆存储与检索;支持情景记忆(1周session)+ 语义记忆(用户偏好/习惯/常去地点){subtask: string}{tts: "", result: object}
其他Agent多媒体/通讯等其他功能{subtask: string}车机端固定模板

3.3 A2A规划示例

示例1:车控Agent - 打开车窗

用户指令:"打开车窗"

1. 用户指令 → System Agent
   输入:"打开车窗"

2. System Agent规划
   - Agent选择:车控Agent
   - 生成Plan:{agent: "car_control", subtask: "打开车窗"}

3. Plan → 车控Agent
   输入:{subtask: "打开车窗"}

4. 车控Agent执行
   - Function Call:调用车机API打开车窗
   - 等待执行状态

5. 车机端执行
   - 执行车窗打开操作
   - 返回执行状态

6. 执行状态 → 车控Agent
   接收:{status: "success", window_position: "fully_open"}

7. 车控Agent → System Agent
   输出:{tts: "", result: {status: "success", window_position: "fully_open"}}

8. System Agent生成播报
   基于result生成TTS:"车窗已打开"

9. TTS播报下发
   下发至车机端进行播报

示例2:车控Agent - 所有开着的车窗都关小10%

用户指令:"所有开着的车窗都关小10%"

1. 用户指令 → System Agent
   输入:"所有开着的车窗都关小10%"

2. System Agent规划
   - Agent选择:车控Agent
   - 生成Plan:{agent: "car_control", subtask: "所有开着的车窗都关小10%"}

3. Plan → 车控Agent
   输入:{subtask: "所有开着的车窗都关小10%"}

4. 车控Agent接收车辆状态
   接收130+车辆实时状态,包括:
   {
     "window_front_left": {"status": "open", "position": 80},
     "window_front_right": {"status": "open", "position": 60},
     "window_rear_left": {"status": "closed", "position": 0},
     "window_rear_right": {"status": "open", "position": 40}
   }

5. 车控Agent状态感知与规划
   - 分析车辆状态:识别开着的车窗(前左80%、前右60%、后右40%)
   - 结合subtask:需要将开着的车窗都关小10%
   - 生成Function Call:
     window_control({position: "front_left", target: 70})
     window_control({position: "front_right", target: 50})
     window_control({position: "rear_right", target: 30})

6. Function Call → 车机端
   依次下发三个window_control调用

7. 车机端执行
   - 前左车窗:从80%调至70%
   - 前右车窗:从60%调至50%
   - 后右车窗:从40%调至30%
   - 返回执行状态

8. 执行状态 → 车控Agent
   接收:{status: "success", windows: [...]}

9. 车控Agent → System Agent
   输出:{tts: "", result: {status: "success", windows: [...]}}

10. System Agent生成播报
    基于result生成TTS:"已将前左、前右、后右车窗各关小10%"

示例3:记忆Agent - 查询奶奶家地址

用户指令:"查一下我奶奶家在哪"

1. 用户指令 → System Agent
   输入:"查一下我奶奶家在哪"

2. System Agent规划
   - Agent选择:记忆Agent
   - 生成Plan:{agent: "memory", subtask: "查一下我奶奶家在哪"}

3. Plan → 记忆Agent
   输入:{subtask: "查一下我奶奶家在哪"}

4. 记忆Agent执行
   - 检索语义记忆:查询"奶奶家"相关信息
   - 获取地址数据

5. 记忆Agent → System Agent
   输出:{tts: "", result: {address: "北京市朝阳区xxx路xxx号", latitude: 39.9, longitude: 116.4}}

6. System Agent生成播报
   基于result生成TTS:"您奶奶家在北京市朝阳区xxx路xxx号"

示例4:导航Agent - 导航到最近的麦当劳

用户指令:"导航到最近的麦当劳"

1. 用户指令 → System Agent
   输入:"导航到最近的麦当劳"

2. System Agent规划
   - Agent选择:导航Agent
   - 生成Plan:{agent: "navigation", subtask: "导航到最近的麦当劳"}

3. Plan → 导航Agent
   输入:{subtask: "导航到最近的麦当劳"}

4. 导航Agent React规划(第一步)
   - 规划:需要先搜索麦当劳POI
   - 生成API调用:poi_search("麦当劳")

5. POI搜索 → ADS云接口
   调用:poi_search("麦当劳")

6. ADS云接口 → 导航Agent
   返回POI列表

7. 导航Agent React规划(第二步)
   - 分析POI列表:选择距离最近的麦当劳
   - 生成API调用:navigation_start({...})

8. 导航API → 车机端
   下发:navigation_start({...})

9. 车机端执行
   - 执行导航启动
   - 返回执行状态

10. 执行状态 → 导航Agent
    接收:{status: "success", route_calculated: true}

11. 导航Agent生成播报
    生成TTS:"最近的麦当劳是朝阳店,距离1.2公里,已开始导航"

12. 导航Agent → System Agent
    输出:{tts: "最近的麦当劳是朝阳店,距离1.2公里,已开始导航", result: {}}

13. System Agent处理
    - 检测到tts字段非空
    - 直接下发导航Agent生成的TTS

示例5:多Agent编排 - 导航到我奶奶家

用户指令:"导航到我奶奶家"

1. 用户指令 → System Agent
   输入:"导航到我奶奶家"

2. System Agent规划(多步骤编排)
   生成Plan:
   [
     {step: 1, agent: "memory", subtask: "查询我奶奶家", output: "$res1", depends_on: []},
     {step: 2, agent: "navigation", subtask: "导航到$res1", depends_on: [1]}
   ]

3. 执行Step1:查询我奶奶家
   Plan → 记忆Agent
   输入:{subtask: "查询我奶奶家"}

4. 记忆Agent执行
   - 检索语义记忆:查询"奶奶家"相关信息
   - 获取地址数据

5. 记忆Agent → System Agent
   输出:{tts: "", result: {address: "北京市朝阳区xxx路xxx号", latitude: 39.9, longitude: 116.4}}
   System Agent将结果存储到$res1

6. 执行Step2:导航到$res1
   System Agent将$res1的值填充到Step2的subtask中
   实际subtask: "导航到北京市朝阳区xxx路xxx号"
   Plan → 导航Agent

7. 导航Agent执行(React Agent)
   - 分析目的地
   - 生成Function Call:navigation_start({...})

8-10. 导航执行 & 播报
   同单Agent导航流程

11. 导航Agent生成播报
    生成TTS:"已为您规划前往奶奶家的路线,全程12.5公里,预计用时35分钟"

12. 导航Agent → System Agent
    输出:{tts: "已为您规划前往奶奶家的路线...", result: {}}

13. System Agent处理
    - 检测到tts字段非空
    - 直接下发导航Agent生成的TTS

3.4 TTS播报生成机制

3.4.1 双模式支持

System Agent支持两种TTS播报生成模式,以满足不同场景需求。

模式1:垂域Agent自生成TTS

适用场景

流程

垂域Agent执行 → 生成播报文本 → 标准化返回(mode: self_generate) → System Agent直接下发TTS

模式2:System Agent统一生成TTS

适用场景

流程

垂域Agent执行 → 返回原始数据 → 标准化返回(mode: system_generate) → System Agent生成播报文本 → 下发TTS

3.4.2 TTS模式选择策略

场景类型推荐模式原因
单Agent简单任务System Agent生成统一风格,减少Agent负担
单Agent复杂任务Agent自生成Agent更了解领域细节
多Agent编排System Agent生成统一聚合,避免播报冲突
领域专业术语Agent自生成确保术语准确性
状态确认类System Agent生成简洁明了

四、V3 vs V2 对比总结

4.1 核心架构演进

演进维度V2架构(2025.12)V3架构(2026.02)
核心架构快慢双模型多智能体架构
System Agent快思考模型 + 意图理解A2A分发 + 播报文本生成
车控能力Function Call统一处理车控Agent专业化
导航能力Function Call统一处理导航Agent专业化(TIR)
记忆能力5轮短期记忆记忆Agent(情景+语义记忆)
上下文深度5轮50轮 + 1周情景
状态感知基础多音区+识人+130+状态
智能体协同不支持A2A交互

4.2 多智能体能力提升

车控Agent

对比项V2架构V3架构提升
工具/API700+工具(RAG检索)40+高频API固化深专业化能力
实时状态感知不支持130+状态感知状态感知能力
追问能力不支持结合状态的追问感受类指令交互

导航Agent(TIR模型)

对比项V2架构V3架构提升
推理模式单轮Function CallTIR模型 + Multi-turn Tool Call复杂指令处理 + 结果感知
工具编排单次API调用自主多工具编排复杂指令支持
交互模式单轮交互多轮交互模型用户多轮交互支持

记忆Agent

对比项V2架构V3架构提升
短期记忆5轮历史对话50轮历史对话10倍深度扩展
情景记忆不支持1周内所有session跨会话理解
语义记忆基于规则的检索大模型检索智能化检索
A2A交互不支持仅与System Agent交互复杂功能穿插

应用场景示例

4.3 System Agent能力升级

A2A分发机制是V3架构的核心创新点,System Agent不再直接执行功能,而是作为中央分发器,将用户任务精准分发至专业化智能体。

分发流程

  1. 任务规划:System Agent分析用户任务所属领域(车控/导航/通用/记忆)
  2. 智能体选择:根据任务类型选择对应智能体
  3. 上下文传递:将用户指令、历史上下文传递至目标智能体
  4. 结果聚合:接收各智能体执行结果,生成播报文本

4.4 技术指标提升

指标维度V2性能V3性能改进幅度
多轮对话深度5轮50轮 + 1周情景记忆10倍扩展
多轮改写准确率>92%待定待定
首轮漏拒率小于3%小于3%保持
聆听态漏拒率小于3%小于3%保持
车控状态感知130+实时状态新增
导航复杂指令基础Multi-turn + 工具编排深度化
跨音区交互不支持支持新增
感受类指令不支持支持追问新增

五、小结

MOLA V3通过多智能体化架构演进,实现了从V2"双模型架构"到"多智能体协同架构"的跨越式升级。System Agent作为核心协调者,接收ASR结果与当前上下文,负责任务规划与播报文本生成;车控Agent接收130+车辆状态,支持40+高频API及追问能力,API调用经车机端状态回传;导航Agent内置17+API,支持复杂指令的多工具编排与多轮交互,通过notify_user结束React循环;其他Agent包括多媒体、通讯等功能,暂不具备React能力;记忆Agent仅与System Agent交互,提供1周情景记忆与语义记忆。上下文深度从5轮扩展至50轮,融合多音区/识人特征,实现个性化与智能化交互。

V3架构的核心价值

  1. 专业化:垂直领域Agent深耕各自领域,能力深度大幅提升
  2. 协同化:A2A交互实现智能体间协同
  3. 智能化:130+状态感知 + 50轮上下文深度 + 1周情景记忆
  4. 个性化:多音区 + 识人特征 + 语义记忆 + 长期用户偏好学习
  5. 连续性:情景记忆打破单会话限制,实现跨会话的连贯交互

V3架构为后续版本的多智能体深度协同与平台化演进奠定了坚实基础。

文档版本:v3.0.0  |  最后更新:2026年2月11日  |  MOLA架构演进系列文档