MOLA V3 架构详解
一、架构概述
MOLA V3版本在V2"快慢双模型架构"基础上进行深度演进,从"双模型架构"升级为"多智能体架构"。通过System Agent作为核心协调者,构建了车控Agent、导航Agent、记忆Agent、其他Agent四大智能体,实现了能力的专业化与协同化。
核心设计理念:
- 多智能体协同:System Agent作为核心协调者,支持A2A分发与记忆交互
- 领域专业化:车控Agent、导航Agent、其他Agent各自深耕垂直领域,能力深度大幅提升
- 记忆深度拓展:记忆Agent支持情景记忆(1周session)+ 语义记忆,通过A2A交互实现复杂功能穿插
- 状态感知增强:融合多音区/识人特征与车辆实时状态(130+),实现个性化与上下文感知交互
主要演进:
- 从V2的"System Agent + Function Call双模型" → V3的"System Agent + 多Agent多智能体架构"
- System Agent专注于任务规划与播报文本生成,输入ASR结果与当前上下文
- 车控Agent接收130+车辆状态,支持40+高频API,API输出经车机端状态回传至System Agent,追问API直接返回System Agent
- 导航Agent为React Agent,内置17+API,通过notify_user结束循环后返回结果至System Agent
- 其他Agent(多媒体/通讯等)暂不具备React能力,结果直接返回System Agent
- 记忆Agent仅与System Agent交互,提供1周情景记忆与语义记忆
二、系统架构图
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的上下文中,实现智能化的任务规划。
当前实现方式:
- 将垂域Agent的能力描述(包括功能范围、输入输出格式)写入System Agent的Prompt
- System Agent基于用户任务与Agent能力描述进行匹配,选择合适的垂域Agent
- 支持单Agent规划与多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对执行结果有更精准的描述能力
- 需要领域专业术语的播报
- 执行结果复杂,需要Agent自行组织语言
流程:
垂域Agent执行 → 生成播报文本 → 标准化返回(mode: self_generate) → System Agent直接下发TTS
模式2:System Agent统一生成TTS
适用场景:
- 多Agent编排场景,需要统一播报风格
- 简单执行结果,System Agent可快速生成
- 需要结合多个Agent结果进行综合播报
流程:
垂域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架构 | 提升 |
|---|---|---|---|
| 工具/API | 700+工具(RAG检索) | 40+高频API固化 | 深专业化能力 |
| 实时状态感知 | 不支持 | 130+状态感知 | 状态感知能力 |
| 追问能力 | 不支持 | 结合状态的追问 | 感受类指令交互 |
导航Agent(TIR模型)
| 对比项 | V2架构 | V3架构 | 提升 |
|---|---|---|---|
| 推理模式 | 单轮Function Call | TIR模型 + Multi-turn Tool Call | 复杂指令处理 + 结果感知 |
| 工具编排 | 单次API调用 | 自主多工具编排 | 复杂指令支持 |
| 交互模式 | 单轮交互 | 多轮交互模型 | 用户多轮交互支持 |
记忆Agent
| 对比项 | V2架构 | V3架构 | 提升 |
|---|---|---|---|
| 短期记忆 | 5轮历史对话 | 50轮历史对话 | 10倍深度扩展 |
| 情景记忆 | 不支持 | 1周内所有session | 跨会话理解 |
| 语义记忆 | 基于规则的检索 | 大模型检索 | 智能化检索 |
| A2A交互 | 不支持 | 仅与System Agent交互 | 复杂功能穿插 |
应用场景示例:
- 情景记忆:记得一周内去过的地方、说过的话
- 语义记忆:"帮我导航去公司"(知道公司地址)
- 复杂功能穿插:"导航去我奶奶家,中途去趟天坛,最后去公司"
4.3 System Agent能力升级
A2A分发机制是V3架构的核心创新点,System Agent不再直接执行功能,而是作为中央分发器,将用户任务精准分发至专业化智能体。
分发流程:
- 任务规划:System Agent分析用户任务所属领域(车控/导航/通用/记忆)
- 智能体选择:根据任务类型选择对应智能体
- 上下文传递:将用户指令、历史上下文传递至目标智能体
- 结果聚合:接收各智能体执行结果,生成播报文本
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架构的核心价值:
- 专业化:垂直领域Agent深耕各自领域,能力深度大幅提升
- 协同化:A2A交互实现智能体间协同
- 智能化:130+状态感知 + 50轮上下文深度 + 1周情景记忆
- 个性化:多音区 + 识人特征 + 语义记忆 + 长期用户偏好学习
- 连续性:情景记忆打破单会话限制,实现跨会话的连贯交互
V3架构为后续版本的多智能体深度协同与平台化演进奠定了坚实基础。