Files
SuperBizAgent-java/interview/archive/2026-07-24-legacy/architecture.md
zhuyongxin de5a5b09d9 docs(interview): refresh materials for single-agent harness narrative
Archive pre-refactor interview notes and add current deep-dives on
architecture evolution, issue-derived stories, and evidence gates.
2026-07-24 18:14:49 +08:00

98 lines
3.5 KiB
Markdown

# 面试版系统架构
## 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 的地方。