# 面试版系统架构 ## 1. 系统分层 ```mermaid flowchart TB API["API 层\nChatController / DiagnosisTraceController / SearchController"] --> Service["应用服务层\nChatService / AiOpsService / DiagnosisTraceService"] Service --> Agent["Agent 编排层\nPlanner / Executor / Verifier / Supervisor"] Agent --> Tools["工具层\nlookup_knowledge / query_logs / query_metrics / Prometheus"] Tools --> RAG["RAG 检索\nL0 hint + VectorSearchService"] RAG --> VectorStore["Spring AI VectorStore"] RAG --> SDK["Milvus SDK fallback"] Agent --> Trace["Trace 持久化"] Tools --> Trace Trace --> Session["diagnosis_session"] Trace --> Step["agent_step"] Trace --> Invocation["tool_invocation"] Session --> TraceAPI["GET /api/diagnosis/{sessionId}/trace"] Step --> TraceAPI Invocation --> TraceAPI ``` ## 2. Chat 链路 ```mermaid flowchart TD User["用户问题"] --> ChatAPI["POST /api/chat"] ChatAPI --> Strategy["ChatService.executeChatWithStrategy"] Strategy --> Complexity{"复杂问题?"} Complexity -->|否| Single["单 ReactAgent 快速回答"] Complexity -->|是| Planner["chat_planner"] Planner --> Executor["chat_executor"] Executor --> Tools["证据工具"] Tools --> Executor Executor --> Verifier["chat_verifier"] Verifier --> Decision{"PASS / LOW_CONFID / REJECT"} Decision --> Answer["最终答复"] Planner --> Step["agent_step"] Executor --> Step Verifier --> Step Tools --> Invocation["tool_invocation"] Answer --> Session["diagnosis_session"] ``` 讲解重点: - Planner 拆解问题和排查方向。 - Executor 必须通过工具收集证据。 - Verifier 只基于 `tool_trace_summary` 校验答案,不做新检索。 - Trace API 能回放模型步骤和工具证据。 ## 3. AIOps 链路 ```mermaid flowchart TD Alert["告警 payload 或空请求"] --> API["POST /api/ai_ops"] API --> AiOps["AiOpsService"] AiOps --> Mode{"是否有 payload?"} Mode -->|有| Targeted["PAYLOAD_TARGETED\n聚焦输入告警"] Mode -->|无| Discovery["AUTO_DISCOVERY\n先发现活跃告警"] Targeted --> Supervisor["ai_ops_supervisor"] Discovery --> Supervisor Supervisor --> Planner["planner_agent"] Supervisor --> Executor["executor_agent"] Planner --> Tools["Prometheus / 日志 / 知识库"] Executor --> Tools Tools --> Report["告警分析报告"] Report --> Eval["AiOpsRuleEvaluationService"] Eval --> SelfEval["self_evaluation.aiops_rule_evaluation"] ``` 讲解重点: - AIOps 有明确产品边界:有 payload 时必须聚焦该告警。 - payload 字段会生成 recommended `lookup_knowledge` query。 - 当前 AIOps 先用规则评估做质量门,后续再扩展 LLM Verifier。 ## 4. Trace 数据模型 | 表 | 作用 | |---|---| | `diagnosis_session` | 一次诊断的主记录:问题、状态、答案、自评估、反馈 | | `agent_step` | Agent 模型调用记录:输入、输出、耗时、token、是否有工具调用 | | `tool_invocation` | 工具调用事实:工具名、入参、输出预览、检索层、相关性、成功状态 | ## 5. 为什么 Trace 是核心 故障诊断系统的风险不只是“答案错”,还包括“答案看起来对但无法解释”。这个项目把执行链路拆成 session、step、tool 三层,让面试官可以看到: - 模型为什么这么答。 - 调了哪些工具。 - 工具返回了什么证据。 - Verifier 如何判断答案可信度。 - 用户反馈如何回写到同一个 session。 这就是它区别于普通 Chatbot 的地方。