# Handoff Document - SuperBizAgent-java 项目分析与学习 > **Session Date**: 2026-05-30 > **Project**: SuperBizAgent-java (智能 OnCall 助手) > **Status**: 项目分析完成,学习路径已建立 > **Next Agent**: 继续深度学习或开始功能开发 --- ## 📋 Session Summary 本次会话完成了 **SuperBizAgent-java 项目的全面分析**,并建立了完整的学习体系。用户从零开始了解项目,现在已经掌握了核心架构和关键设计模式。 --- ## ✅ Completed Work ### 1. 项目功能分析(Playwright + 代码分析) **成果**: - 使用 Playwright MCP 工具分析了 `localhost:9900` 站点 - 识别出 2 大核心功能: - **智能对话系统**:RAG 知识库检索、Prometheus 告警查询、腾讯云 CLS 日志查询 - **AI Ops 自动化分析**:3-Agent 协同的告警根因分析(⭐️ 核心特色) **产物**: - `docs/功能分析报告.md` - 完整的功能分析、技术栈、使用场景 **关键发现**: - AI Ops 使用了 **3-Agent 协同模式**(Planner + Executor + Supervisor) - 后端:Spring AI + DeepSeek V4 Flash + SiliconFlow BGE-M3 + Zilliz Cloud Milvus - 前端:SSE 流式响应 + Markdown 渲染 --- ### 2. 日志配置(解决 Claude 无法分析日志的问题) **问题**:项目启动后日志只输出到控制台,Claude 无法读取分析 **解决方案**: - 创建 `src/main/resources/logback-spring.xml`(完整配置) - 修改 `src/main/resources/application.yml`(添加 logging 部分) - 配置特性: - 控制台 + 文件双输出 - 按模块分文件(`application.log`, `aiops.log`, `chat.log`, `application-error.log`) - 异步写入(性能优化) - 自动滚动(10MB/文件,保留 30 天) **产物**: - `docs/日志配置与分析指南.md` - 详细的配置说明、分析场景、故障排查 - `docs/日志配置完成总结.md` - 快速参考总结 - `scripts/verify-logging.sh` 和 `scripts/verify-logging.bat` - 验证脚本 **验证命令**: ```bash bash scripts/verify-logging.sh ``` --- ### 3. 项目学习路径设计 **成果**: - 设计了 **5 阶段学习路径**(从核心执行流到配置基础设施) - 每个阶段包含:执行流程图、具体学习步骤、阶段总结、检查点清单 - 提供了 3 种学习节奏:快速(1小时)、标准(2小时)、深度(3小时) **产物**: - `docs/项目学习路径.md` - 完整的分阶段学习计划 **学习阶段**: 1. **阶段 1**:核心执行流理解(AI Ops + Chat 对话流程)⭐️ 从这里开始 2. **阶段 2**:RAG 知识库链路(文档上传 → 向量化 → 检索) 3. **阶段 3**:模型抽象与路由(ChatModel/EmbeddingModel 解耦) 4. **阶段 4**:Tools 工具集(Prometheus、CLS、RAG、DateTime) 5. **阶段 5**:配置与基础设施(application.yml、Milvus) --- ### 4. AI Ops 核心设计深度分析(/essence 技能) **分析目标**:`/api/ai_ops` 接口的 3-Agent 协同架构 **成果**: - 识别出 **3-Agent Collaborative Analysis Pattern**(核心设计模式) - 完整的端到端调用链追踪(HTTP → Controller → Service → 3 Agents → Tools → SSE) - 与其他方案的对比分析(单 Agent、2-Agent、静态工作流、ReAct Loop) - 可迁移的代码示例(≤20 行) - 5 个关键陷阱及避免方法 **产物**: - `docs/learning/01-AI-Ops-核心设计-Essence报告.md` **核心洞察**: - **Planner**:制定计划 & 重新规划(承担 Replanner 角色) - **Executor**:执行工具调用(只执行第一步) - **Supervisor**:循环调度(直到 decision=FINISH) **关键机制**: - `outputKey` - Agent 状态共享的桥梁 - Prompt 中的 `{}` 占位符自动替换为 `state.value(key)` - 循环编排:Planner → Executor → Planner(重新规划)→ ... → FINISH --- ### 5. outputKey 机制深度解析 **背景**:用户询问 outputKey 的作用 **成果**: - 详细解释了 outputKey 的共享内存模型 - 提供了 8 步完整时间线示例 - 回答了 3 个核心疑问: 1. Prompt 中的 `{}` 占位符如何替换? 2. 如果两个 Agent 用同一个 outputKey 会怎样? 3. 如何在 Prompt 中读取多个 key? **产物**: - `docs/learning/02-outputKey-深度解析.md` - `docs/learning/03-核心疑问解答.md` - `docs/learning/README.md` - 学习报告索引 **核心概念**: ``` OverAllState = Map - Planner 写入: state["planner_plan"] - Executor 写入: state["executor_feedback"] - Planner 读取: {executor_feedback} → state.get("executor_feedback") ``` --- ## 📁 Key Artifacts ### 已创建的文档 | 文档 | 路径 | 用途 | |------|------|------| | **功能分析报告** | `docs/功能分析报告.md` | 项目功能、技术栈、AI Ops 案例 | | **日志配置指南** | `docs/日志配置与分析指南.md` | 日志配置、分析场景、故障排查 | | **日志配置总结** | `docs/日志配置完成总结.md` | 快速参考、调试技巧 | | **项目学习路径** | `docs/项目学习路径.md` | 5 阶段学习计划 | | **Essence 报告** | `docs/learning/01-AI-Ops-核心设计-Essence报告.md` | 3-Agent 协同架构深度分析 | | **outputKey 解析** | `docs/learning/02-outputKey-深度解析.md` | 状态共享机制详解 | | **疑问解答** | `docs/learning/03-核心疑问解答.md` | 3 个核心疑问的深度回答 | | **学习索引** | `docs/learning/README.md` | 学习路径索引、检查点清单 | ### 已修改的配置 | 文件 | 修改内容 | |------|---------| | `src/main/resources/logback-spring.xml` | 新增完整日志配置(分模块、异步、滚动) | | `src/main/resources/application.yml` | 新增 logging 配置段 | ### 核心源码文件(分析重点) | 文件 | 关键行 | 作用 | |------|--------|------| | `ChatController.java` | 280-314 | `/api/ai_ops` HTTP 入口 + SSE 流式返回 | | `AiOpsService.java` | 51-70 | 3-Agent 构建与编排核心逻辑 | | `AiOpsService.java` | 100-124 | Planner & Executor Agent 构建 | | `AiOpsService.java` | 144-257 | Agent Prompts(Planner、Executor、Supervisor) | | `AiOpsService.java` | 79-94 | 最终报告提取逻辑 | --- ## 🎯 Current State ### 用户理解程度 **已掌握**: - ✅ 项目整体功能和技术架构 - ✅ AI Ops 3-Agent 协同模式的工作原理 - ✅ outputKey 状态共享机制 - ✅ 完整的调用链(HTTP → Agents → Tools → SSE) - ✅ 日志配置和分析方法 **待深入**(基于学习路径): - ⏳ 阶段 2:RAG 知识库链路(文档分块、向量化、检索) - ⏳ 阶段 3:模型路由机制(ModelRoutingConfig、SiliconFlowEmbeddingConfig) - ⏳ 阶段 4:Tools 工具集(QueryMetricsTools、QueryLogsTools 的实现细节) - ⏳ 阶段 5:配置与基础设施(Milvus 连接、向量维度配置) ### 项目状态 - **GitNexus 索引**:已更新(1528 符号,2828 关系,87 执行流) - **日志配置**:已完成,项目启动后会自动输出到 `logs/` 目录 - **学习体系**:已建立,文档齐全 --- ## 🚀 Suggested Next Steps ### 选项 1:继续学习项目(推荐) **按照学习路径继续**: 1. **阶段 2:RAG 知识库链路**(20 分钟) ```bash # 第一个命令 Read src/main/java/org/example/service/RagService.java ``` - 理解文档分块策略(ChunkingStrategy) - 掌握向量化流程(VectorEmbeddingService) - 了解 Milvus 检索机制 2. **阶段 3:模型路由机制**(15 分钟) ```bash Read src/main/java/org/example/config/ModelRoutingConfig.java ``` - 理解 yml 驱动的模型路由 - 掌握 ChatModel/EmbeddingModel 解耦设计 - 了解如何切换模型(只改配置不改代码) 3. **实践验证**: - 启动项目:`mvn spring-boot:run` - 查看日志:`tail -f logs/application.log` - 访问 `http://localhost:9900` - 点击 "AI Ops" 观察 3-Agent 协同过程 --- ### 选项 2:功能开发(需求驱动) 如果用户有具体需求,可以开始功能开发: **常见需求方向**: - 新增工具(如 K8s 事件查询) - 新增 Agent(如根因分析专家 Agent) - 接入真实的 Prometheus/CLS(关闭 Mock 模式) - 优化 RAG 检索(调整分块策略、Top-K) - 性能优化(Milvus 索引升级 IVF_FLAT → HNSW) **开发前必做**: ```bash # 影响分析(MUST) mcp__gitnexus__impact({ target: "要修改的类或方法", direction: "upstream", repo: "SuperBizAgent-java" }) # 变更检测(MUST,修改后) mcp__gitnexus__detect_changes({repo: "SuperBizAgent-java"}) ``` --- ### 选项 3:问题排查(如果遇到问题) **常见问题**: 1. **项目启动失败** - 检查日志:`tail -f logs/application-error.log` - 查看配置:`Read src/main/resources/application.yml` - 验证 API Key:`spring.ai.deepseek.api-key`、`siliconflow.api-key` 2. **AI Ops 分析失败** - 查看 AI Ops 日志:`tail -f logs/aiops.log` - 检查 Mock 配置:`prometheus.mock-enabled: true` - 验证工具调用:查看是否有 `QueryMetricsTools` 的 DEBUG 日志 3. **RAG 检索无结果** - 检查 Milvus 连接:`logs/application.log` 中搜索 "Milvus" - 验证 Collection:是否创建了 `biz` collection - 查看向量维度:`milvus.vector-dim: 1024`(必须与 BGE-M3 一致) --- ## 💡 Suggested Skills ### 继续学习项目 ```bash # 如果要探索 RAG 知识库 /explore src/main/java/org/example/service/RagService.java # 如果要深入某个设计模式 /essence 分析模型路由配置的设计 # 如果要理解工具集 /explore src/main/java/org/example/agent/tool/ ``` ### 功能开发 ```bash # 进入计划模式(修改前必做) /plan # 诊断问题 /diagnose [问题描述] # 代码审查 /code-review ``` ### 测试验证 ```bash # 验证功能 /verify # 运行项目 /run ``` --- ## 🔑 Key Insights ### 1. 3-Agent 协同是核心竞争力 这不是简单的 Agent 框架应用,而是一个**生产级的 AIOps 解决方案**: - Planner 承担 Replanner 角色(动态调整策略) - Executor 只执行"第一步"(避免规划执行混杂) - Supervisor 循环调度(保证输出稳定性) **与竞品对比**: - 单 Agent 系统:无法重新规划 - 静态工作流:无法适应告警场景的不确定性 - ReAct Loop:规划与执行混杂,输出格式不稳定 ### 2. outputKey 是状态共享的关键 没有 outputKey,3 个 Agent 无法协同: ``` state["planner_plan"] → Executor 读取 state["executor_feedback"] → Planner 读取并重新规划 ``` ### 3. Mock 模式便于开发调试 当前配置: - `prometheus.mock-enabled: true` - `cls.mock-enabled: true` 切换到生产环境只需改配置,无需改代码。 ### 4. 模型可切换(yml 驱动) ```yaml model-routing: chat: deepseek # 改为 ollama 即可切换到本地模型 embedding: siliconflow # 改为 openai 即可切换到 OpenAI ``` --- ## 📊 Progress Tracking ### 学习进度 | 阶段 | 状态 | 完成度 | |------|------|--------| | **阶段 1:核心执行流** | ✅ 完成 | 100% | | 阶段 2:RAG 知识库 | ⏳ 待学习 | 0% | | 阶段 3:模型路由 | ⏳ 待学习 | 0% | | 阶段 4:Tools 工具集 | ⏳ 待学习 | 0% | | 阶段 5:配置基础设施 | ⏳ 待学习 | 0% | ### 学习检查点 **已能回答**: - ✅ 为什么用 3 个 Agent 而不是 1 个? - ✅ Planner 的 Replanner 角色是什么意思? - ✅ Executor 为什么只执行"第一步"? - ✅ Supervisor 如何知道该调用哪个 Agent? - ✅ outputKey 的作用是什么? - ✅ 如何从 state 中提取最终报告? **待验证**(完成阶段 2 后): - ⏳ 文档分块为什么要有 overlap? - ⏳ 为什么用 BGE-M3 而不是其他 Embedding 模型? - ⏳ Milvus 的 IVF_FLAT 索引适合什么场景? --- ## 🔒 Context Not to Lose ### 重要的设计决策(来自 devflow) 参考 `devflow/projects/2026-05-29-chatmodel-abstraction/decisions.md`: 1. **L1**:Spring AI 1.1.0 的 OpenAiChatModel 不兼容 DeepSeek V4 - 解决:升级到 1.1.7 + 使用原生 `spring-ai-starter-model-deepseek` 2. **L2**:`@Qualifier` Bean 名不要猜 - 解决:用 `List` 自检 + 类名筛选 3. **L3**:base-url 末尾不要带 `/v1` - 原因:Spring AI 自动追加 `/v1/embeddings`,会导致双重路径 4. **L4**:多 starter 并存需要 `@Primary` 路由 - 解决:集中路由(ModelRoutingConfig) 5. **L6**:yml 驱动路由优于硬编码 @Qualifier - 目标:换模型只改 yml,不改 Java ### GitNexus 规范(CLAUDE.md) **修改代码前 MUST**: ```bash # 1. 影响分析 mcp__gitnexus__impact({target: "symbolName", direction: "upstream"}) # 2. 如果是 HIGH/CRITICAL 风险,警告用户 # 3. 修改代码... # 4. 变更检测(提交前) mcp__gitnexus__detect_changes() ``` ### 关键配置项 | 配置项 | 当前值 | 修改影响 | |--------|--------|---------| | `milvus.vector-dim` | 1024 | 换 Embedding 模型时必须同步修改 | | `model-routing.chat` | deepseek | 切换 Chat 模型 | | `model-routing.embedding` | siliconflow | 切换 Embedding 模型 | | `prometheus.mock-enabled` | true | 接入真实 Prometheus 时改为 false | | `cls.mock-enabled` | true | 接入真实腾讯云 CLS 时改为 false | --- ## 📞 Handoff Notes ### For the Next Agent 1. **如果用户说"继续学习"**: - 从 `docs/项目学习路径.md` 的阶段 2 开始 - 第一个命令:`Read src/main/java/org/example/service/RagService.java` 2. **如果用户说"启动项目试试"**: - 先验证日志配置:`bash scripts/verify-logging.sh` - 启动:`mvn spring-boot:run` - 查看日志:`tail -f logs/application.log` - 访问:`http://localhost:9900` 3. **如果用户提出新需求**: - 先问清楚具体需求 - 进入计划模式:`/plan` - 影响分析:`mcp__gitnexus__impact` 4. **如果用户遇到问题**: - 先查看日志:`Read logs/application-error.log` - 使用 `/diagnose` 技能 - 参考 `docs/日志配置与分析指南.md` 的故障排查部分 ### 用户可能的下一步 基于对话趋势,用户最可能: 1. **继续学习**(60%)- 按照学习路径深入理解项目 2. **实践验证**(30%)- 启动项目,观察 AI Ops 运行 3. **提出新需求**(10%)- 基于理解后想扩展功能 --- ## 🎓 Learning Resources Created 用户现在拥有完整的学习体系: ### 📖 入门文档 - `docs/功能分析报告.md` - 项目是什么、能做什么 ### 🛠️ 实用指南 - `docs/日志配置与分析指南.md` - 如何调试 - `docs/项目学习路径.md` - 如何学习 ### 🎯 深度分析 - `docs/learning/01-AI-Ops-核心设计-Essence报告.md` - 核心设计模式 - `docs/learning/02-outputKey-深度解析.md` - 关键机制详解 - `docs/learning/03-核心疑问解答.md` - 常见疑问 - `docs/learning/README.md` - 学习索引 ### ✅ 学习检查点清单 每个阶段都有明确的检查点,用户可以自我验证理解程度。 --- **Session End Time**: 2026-05-30 **Handoff Status**: ✅ Ready for next session **Estimated Next Session Duration**: 1-2 hours (depending on chosen path) --- > 💡 **提示给下一个 Agent**:用户已经对项目有了深刻理解,可以直接进入实践或深度学习阶段。不需要从头解释项目,直接基于已有的文档和理解继续即可。