# 对齐车机方案的实施流程复审 ## 1. 目标 本文档用于重新审视当前项目的实现方向,并将“对齐小鹏车机类方案”的核心流程、分支决策和典型场景演示明确下来。 目标不是做一个普通聊天机器人,而是做一个面向车机/客服/前台场景的低延迟执行型 Agent: - 简单请求本地快速闭环 - 复杂请求云端增强处理 - 多轮短句能够恢复上下文 - 多命令能够拆分为 workflow 执行 - 超出能力边界时明确拒绝或澄清 --- ## 2. 对齐车机方案的核心原则 结合前面参考的小鹏公开专利,可以抽象出下面几个工程原则: - 本地优先,云端增强,不是所有请求都直接走远端大模型 - 本地不是单模型,而是多支路并发 - 快反馈和最终反馈分离,首反馈必须短而稳 - 多轮短句优先靠上下文改写和缓存恢复,不是每轮重做完整规划 - 高风险动作必须确认 - 超能力边界时必须拒答,不能强行分类执行 --- ## 3. 总体流程图 ```mermaid flowchart TD A[用户语音输入] --> B[ASR 转文本] B --> C[文本归一化] C --> D[本地多支路并发] D --> D1[keyword / rule / trie] D --> D2[local bert classifier] D --> D3[context rewrite / cache] D --> D4[retrieval matcher] D1 --> E[本地融合分级器] D2 --> E D3 --> E D4 --> E E -->|高置信| F[直接执行或直接生成 workflow] E -->|中置信| G[等待 100~300ms 观察补充分支/云端结果] E -->|低置信| H[云端 planner / LLM / RAG] G --> H H --> I[生成 intent / workflow / clarify / reject] F --> J[插件执行] I --> J J --> K[首反馈 ack / progress] J --> L[最终反馈 result / clarify / reject] ``` --- ## 4. 本地与云端分工 ### 4.1 本地快链路 本地负责: - 高频固定控制类命令 - 已知业务集合内的快速意图识别 - 短句、省略句、连续调节的上下文恢复 - 简单任务的直接执行 - `<1s` 以内的首响应 本地组件: - `keyword / rule / trie` - `local bert classifier` - `context rewrite / cache` - `retrieval matcher` - `fusion grader` ### 4.2 云端慢链路 云端负责: - 多命令拆分 - 条件型请求理解 - 歧义消解 - 复杂问答 - planner 级 workflow 生成 --- ## 5. 本地分级决策图 ```mermaid flowchart TD A[本地多分支结果] --> B{融合分级} B -->|high| C[直接执行] B -->|medium| D[等待 100~300ms] B -->|low| E[不直接执行] D --> F{云端是否及时返回} F -->|是| G[采用云端结果或覆盖本地] F -->|否| H{本地是否达到最低执行阈值} H -->|是| I[执行本地结果] H -->|否| J[澄清或拒答] E --> K[云端理解 / clarify / reject] ``` 关键修正点: - 不是“本地 BERT 有结果就执行” - 不是“云端没返回就一定执行本地” - 必须先判断本地结果是否达到最低可执行阈值 - 高风险动作即使高置信,也不能直接执行 --- ## 6. 用户反馈状态图 ```mermaid stateDiagram-v2 [*] --> Received Received --> Ack: 已接收请求 Ack --> ExecutingFast: 本地快执行 Ack --> WaitingCloud: 等待云端/复杂规划 Ack --> Clarify: 缺关键槽位 Ack --> Confirm: 高风险动作 Ack --> Reject: 超能力边界 ExecutingFast --> Result WaitingCloud --> Result Clarify --> Result Confirm --> Result Reject --> [*] Result --> [*] ``` 反馈规则: - `ack`:收到,马上处理 - `progress`:正在为你处理 - `result`:执行完成或查询完成 - `clarify`:信息不足,补一个关键字段 - `confirm`:高风险动作确认 - `reject`:能力边界拒答 --- ## 7. 反馈模板策略 ### 7.1 快执行 适用: - 打开车窗 - 调低空调 - 播放音乐 - 导航去公司 推荐反馈: - 首反馈:`好的,正在打开车窗` - 最终反馈:`车窗已打开` 如果设备动作极快,也可以直接播报最终反馈: - `车窗已打开` ### 7.2 慢执行 适用: - 查订单 - 查物流 - 多命令复杂规划 - 条件型任务 推荐反馈: - 首反馈:`收到,我先帮你查一下` - 最终反馈:`订单还没发货` ### 7.3 复合命令 例如: - `打开车窗,空调调低至20度` 推荐反馈: - 首反馈:`好的,正在为你打开车窗并调低空调` - 最终反馈:`车窗已打开,空调已调到20度` ### 7.4 边界外请求 例如: - `打开飞机门` 推荐反馈: - `这个我暂时做不了,但我可以帮你导航、查订单、调空调或播放音乐` --- ## 8. 多轮上下文恢复流程 ```mermaid flowchart TD A[当前轮输入: 再低一点] --> B[读取 session context] B --> C{是否命中高频改写缓存} C -->|是| D[改写为完整句] C -->|否| E[轻量改写模型/规则补全] D --> F[进入 router] E --> F F --> G[意图识别 + 槽位提取 + 执行] ``` 说明: - 这里的“上下文能力”不是 BERT 自己缓存的 - 而是 Agent 在 `session state` 中保存上轮任务和关键槽位 - 再由 `rewrite engine` 完成短句恢复 --- ## 9. 典型场景流程演示 ### 9.1 场景一:快执行单命令 用户输入: - `打开车窗` 处理流程: 1. ASR 转文本:`打开车窗` 2. 文本归一化 3. 本地多支路并发 4. 若本地高置信命中 `cabin_open_window` 5. 直接执行车窗插件 6. 播报:`车窗已打开` 时序演示: ```mermaid sequenceDiagram participant U as 用户 participant A as ASR participant R as 本地路由 participant P as 插件执行 participant T as TTS U->>A: 打开车窗 A->>R: 打开车窗 R->>P: 执行 open_window P-->>R: success R->>T: 车窗已打开 T-->>U: 车窗已打开 ``` ### 9.2 场景二:复合命令快执行 用户输入: - `打开车窗,空调调低至20度` 处理流程: 1. 文本进入本地路由 2. 判断为多命令 3. planner 或本地 splitter 输出两个 step 4. 生成 sequence workflow 5. 顺序执行: - 打开车窗 - 空调调到 20 度 6. 汇总反馈:`车窗已打开,空调已调到20度` 时序演示: ```mermaid sequenceDiagram participant U as 用户 participant A as ASR participant F as 融合分级器 participant W as Workflow participant P as 插件层 participant T as TTS U->>A: 打开车窗,空调调低至20度 A->>F: 规范化文本 F->>W: 输出 sequence workflow W->>P: step1 open_window P-->>W: success W->>P: step2 set_ac(20) P-->>W: success W->>T: 车窗已打开,空调已调到20度 T-->>U: 车窗已打开,空调已调到20度 ``` ### 9.3 场景三:慢执行查询 用户输入: - `帮我查一下订单A123456` 处理流程: 1. 本地高频分支命中订单查询 2. 首反馈先给: - `收到,我帮你查一下` 3. 调用订单查询插件 4. 最终反馈: - `订单A123456当前待发货` ### 9.4 场景四:条件型请求 用户输入: - `查一下订单A123456,如果还没发货就取消` 处理流程: 1. 本地识别该请求复杂,进入云端 planner 2. planner 输出 conditional workflow: - step1: query_order - step2: cancel_order - condition: order_status == pending_shipment 3. 先执行 step1 4. 若满足条件,则进入确认 5. 用户回复确认后,再执行取消 6. 最终反馈: - `订单A123456已取消` 时序演示: ```mermaid sequenceDiagram participant U as 用户 participant R as 本地融合器 participant C as 云端 Planner participant W as Workflow participant P as 插件层 participant T as TTS U->>R: 查一下订单A123456,如果还没发货就取消 R->>C: 复杂条件请求 C-->>W: conditional workflow W->>P: step1 query_order P-->>W: order_status=pending_shipment W->>T: 即将取消订单,仅在订单未发货时取消。请回复确认或取消 T-->>U: 确认提示 U->>W: 确认 W->>P: step2 cancel_order P-->>W: success W->>T: 订单A123456已取消 T-->>U: 订单A123456已取消 ``` ### 9.5 场景五:多轮短句恢复 对话过程: 1. 用户:`把空调调到22度` 2. 系统:`空调已调到22度` 3. 用户:`再低一点` 4. 系统读取 `last_intent=cabin_set_ac` 和 `last_temperature=22` 5. rewrite engine 改写为:`把空调调到21度` 6. 再进入意图识别和执行 7. 系统反馈:`空调已调到21度` ### 9.6 场景六:边界外请求 用户输入: - `打开飞机门` 正确处理: 1. 本地分支都无法稳定支持 2. 若低于执行阈值,不得直接执行已有意图 3. 进入: - reject - 或云端澄清 4. 反馈: - `这个我暂时做不了,但我可以帮你导航、查订单、调空调或播放音乐` 这类场景必须通过 `unknown / out_of_scope` 机制处理,不能靠封闭集分类硬选。 --- ## 10. 当前项目与目标方案的对应关系 ### 10.1 已经具备的能力 - 本地 `keyword / classifier / retrieval / fusion` - 本地 BERT 分类器 - `session state` - `context rewrite` - `planner` - `sequence / conditional workflow` - 高风险确认 - demo 调试面板 ### 10.2 还需要补齐的关键能力 - `unknown / out_of_scope` - 低分拒识策略 - 明确的 `execute / reject / route_to_cloud` 决策建议 - 更多真实车机意图 - 真实插件接入 - 语音前端与 ASR/TTS 完整接入 --- ## 11. 当前阶段的正式实施结论 当前方向可以继续,但必须明确: - 本地 BERT 是本地快分支之一,不是整个系统的唯一裁决者 - 最终执行依据应来自“本地融合分级器 + planner + 风险规则” - 用户体验的关键不只是识别正确,还包括: - 首反馈是否快 - 多轮是否顺 - 边界是否清楚 - 风险是否可控 因此,当前正式方案应定义为: ```text 车机型 Agent = 本地并发快链路 + 上下文改写缓存 + 分级融合决策 + 云端 planner + workflow 执行 + 风险确认 + reject / clarify / fallback 策略 ``` --- ## 12. 下一步执行优先级 建议按以下顺序继续实现: 1. 补 `unknown / out_of_scope` 和拒识阈值 2. 输出统一执行建议: - `execute` - `clarify` - `reject` - `route_to_cloud` 3. 扩真实车机场景意图: - 车窗 - 车门 - 座椅 - 灯光 - 后视镜 - 除雾 4. 强化 rewrite/cache 高频模式 5. 接真实插件与真实语音链路