Files
SuperBizAgent-java/interview/architecture.md
T

3.5 KiB

面试版系统架构

1. 系统分层

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 链路

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 链路

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 的地方。