Files
Cognitive_Agent/docs/architecture/overview.md
2026-07-30 08:45:38 +08:00

4.1 KiB
Executable File
Raw Permalink Blame History

总体架构

设计目标

  • 单执行器请求不经过跨域调度器也能独立生成、验证、编译和执行。
  • 多执行器请求复用完全相同的领域插件,不在场景层复制领域逻辑。
  • 生成层、验证层、编译层和执行层分离,使 LLM 输出错误不能直接影响总线。
  • 领域成员可以并行开发,不修改其他领域目录,不争用 DBC 和公共运行时代码。

分层与依赖

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 提供简洁、可验证的决策理由。