init
This commit is contained in:
Executable
+77
@@ -0,0 +1,77 @@
|
||||
# 总体架构
|
||||
|
||||
## 设计目标
|
||||
|
||||
- 单执行器请求不经过跨域调度器也能独立生成、验证、编译和执行。
|
||||
- 多执行器请求复用完全相同的领域插件,不在场景层复制领域逻辑。
|
||||
- 生成层、验证层、编译层和执行层分离,使 LLM 输出错误不能直接影响总线。
|
||||
- 领域成员可以并行开发,不修改其他领域目录,不争用 DBC 和公共运行时代码。
|
||||
|
||||
## 分层与依赖
|
||||
|
||||
```text
|
||||
apps
|
||||
-> application 用例入口、事务边界、权限和任务状态
|
||||
-> agent 文本到 IntentIR/配置候选
|
||||
-> orchestration 跨域场景规划和 DAG 调度
|
||||
-> runtime 校验、编译、安全门禁和执行生命周期
|
||||
-> registry 发现领域插件和能力
|
||||
-> sdk 领域插件唯一可依赖的公共接口
|
||||
-> infrastructure LLM、CAN、存储、遥测实现
|
||||
|
||||
domains/* -> sdk + contracts 不反向依赖 apps/application/orchestration
|
||||
platforms/* 由 infrastructure/can 在运行时加载
|
||||
```
|
||||
|
||||
禁止依赖:
|
||||
|
||||
- `domains/seat` 直接导入 `domains/climate` 等其他领域。
|
||||
- 领域插件直接调用 LLM、Web API 或发送 CAN 帧。
|
||||
- 场景编排器按 CAN signal 名称编排;它只能按 `FunctionConfig` 和领域能力编排。
|
||||
- LLM 输出物绕过 Schema、领域约束或平台安全校验。
|
||||
|
||||
## 核心对象
|
||||
|
||||
| 对象 | 产生者 | 消费者 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `IntentIR` | Agent | Router / Planner | 结构化保存用户意图、目标领域、歧义和置信度 |
|
||||
| `FunctionConfig` | 领域 Generator | Validator / Compiler | 描述单一领域的目标状态和过渡要求 |
|
||||
| `SceneConfig` | Scene Planner | Orchestrator | 引用多份功能配置并定义依赖、时序和失败策略 |
|
||||
| `CommandPlan` | 领域 Compiler | Safety Guard / Executor | 描述已经解析到 DBC message/signal 的确定性命令 |
|
||||
| `TraceEvent` | 各流水线阶段 | API / Web / Audit | 可审计的摘要、输入输出引用、耗时和状态 |
|
||||
|
||||
`contracts/schemas/` 是对象格式的唯一事实来源。Python/TypeScript 模型应由 Schema 生成或通过契约测试保持一致。
|
||||
|
||||
## 单领域链路
|
||||
|
||||
1. Agent 把文本解析为 `IntentIR`,Router 只识别出一个领域。
|
||||
2. Registry 获取该领域插件及能力目录。
|
||||
3. 领域 Generator 使用意图、preset 和当前车辆上下文生成 `FunctionConfig`。
|
||||
4. Runtime 先做公共 Schema 校验,再调用领域参数 Schema 和语义 Validator。
|
||||
5. Compiler 结合 `platforms/<vehicle>/` 的映射和标定生成 `CommandPlan`。
|
||||
6. Safety Guard 检查范围、互锁、权限、车辆状态和速率限制。
|
||||
7. Executor 先 dry-run;获准后通过公共 CAN Gateway 执行并回读状态。
|
||||
|
||||
单领域路径不生成 `SceneConfig`,避免无意义的跨域耦合。
|
||||
|
||||
## 跨域链路
|
||||
|
||||
1. Router 识别两个及以上领域,Scene Planner 生成 `SceneConfig` 草案。
|
||||
2. 每个领域仍由自己的 Generator 生成一份 `FunctionConfig`。
|
||||
3. 各领域独立校验和编译,失败不会污染其他领域配置。
|
||||
4. Orchestrator 校验引用完整性、依赖 DAG、资源冲突和整体安全策略。
|
||||
5. Scheduler 根据 `depends_on`、`start_offset_ms` 和 `failure_policy` 执行。
|
||||
6. 执行报告同时保存每个领域结果和场景汇总结果。
|
||||
|
||||
## 安全边界
|
||||
|
||||
- 默认环境必须是 `dry_run`;真实下发由部署环境、权限和车辆状态三重控制。
|
||||
- 领域 `signal-mapping.yaml` 只引用 DBC 中的 message/signal,不保存仲裁 ID 和位定义副本。
|
||||
- `CommandPlan` 不接受任意 raw payload;编码由 `cantools` 类 DBC 编码器完成。
|
||||
- 安全限值是平台标定,不由 LLM 或功能 preset 覆盖。
|
||||
- 执行前保存配置摘要和版本,执行后保存回读、超时、拒绝和补偿结果。
|
||||
|
||||
## 前端可观测性
|
||||
|
||||
Web 控制台可展示:意图摘要、识别领域、选用能力、歧义/确认项、配置文件、校验结论、安全检查、调度状态和执行结果。不要展示或声称展示 GPT 的私有 chain-of-thought;使用 `TraceEvent.summary` 提供简洁、可验证的决策理由。
|
||||
|
||||
Reference in New Issue
Block a user