Files
SuperBizAgent-java/docs/learning
zhuyongxin c3a232540a refactor(phase1): 完成包名重构 (org.example → com.superbiz.agent)
Task 4.1: 包名统一重构
- 重命名 41 个 Java 文件的包名
- 更新所有 import 语句
- 恢复枚举类(FaultCategory、DiagnosisStatus、SourceType)
- 更新测试类的 import

重构范围:
- domain/entity: 3 个实体类
- domain/model: 2 个数据类
- domain/enums: 3 个枚举类
- repository: 3 个接口
- service/session: 2 个类(接口 + 实现)
- config: 9 个配置类
- controller: 2 个控制器
- agent/tool: 4 个工具类
- client: 1 个客户端
- Main.java: 主类

验证结果:
- 编译成功,无错误
- 所有测试通过 (27/27)
  - ApiDocumentRepositoryTest: 7/7 ✅
  - CaseLibraryRepositoryTest: 6/6 ✅
  - DiagnosisRecordRepositoryTest: 6/6 ✅
  - RedisSessionManagerTest: 8/8 ✅

Progress: 21/33 tasks completed (64%)
2026-06-23 14:56:04 +08:00
..
2026-05-31 21:45:14 +08:00
2026-05-31 21:45:14 +08:00
2026-05-31 21:45:14 +08:00
2026-05-31 21:45:14 +08:00
2026-05-31 21:45:14 +08:00
2026-05-31 21:45:14 +08:00

学习报告索引

创建日期:2026-05-30
主题:AI Ops 3-Agent 协同架构深度分析
学习路径:从核心设计 → outputKey 机制 → 疑难解答


📚 学习报告清单

01. AI Ops 核心设计 - Essence 报告

内容:

  • 3-Agent 协同分析模式详解
  • 完整调用链(HTTP → Service → Agents → Tools → SSE)
  • 设计模式对比与权衡分析
  • 迁移示例与关键陷阱

适合:

  • 第一次学习 AI Ops 架构
  • 需要理解"为什么用 3 个 Agent"
  • 准备在自己的项目中应用这个模式

关键收获:

  • ✅ 理解 Planner、Executor、Supervisor 的职责
  • ✅ 掌握 Agent 协同的执行流程
  • ✅ 学会避免常见的陷阱

02. outputKey 深度解析

内容:

  • outputKey 的核心机制(共享内存模型)
  • 完整时间线示例(8 个步骤)
  • Prompt 占位符替换原理
  • 调试技巧与实践建议

适合:

  • 已理解 3-Agent 架构,想深入了解状态传递机制
  • 遇到 Agent 间通信问题
  • 想知道如何在 Prompt 中引用其他 Agent 的输出

关键收获:

  • ✅ 理解 OverAllState 的工作原理
  • ✅ 掌握 outputKey 的命名规范
  • ✅ 学会在 Prompt 中正确引用 state

03. 3个核心疑问解答

内容:

  • 疑问 1:Prompt 中的 {} 占位符如何替换?
  • 疑问 2:如果两个 Agent 用同一个 outputKey 会怎样?
  • 疑问 3:如何在 Prompt 中读取多个 key?

适合:

  • 对特定机制有疑问
  • 遇到实际问题需要快速查阅
  • 想了解边界情况的处理

关键收获:

  • ✅ 掌握 Prompt 模板引擎的替换规则
  • ✅ 避免 outputKey 冲突导致的数据丢失
  • ✅ 学会在 Prompt 中读取多个 state 值

04. RAG 分块策略 - Essence 报告

内容:

  • Token 感知的智能分块机制
  • 结构保护(Markdown 标题、列表、代码块)
  • 软硬双重限制防止失控
  • 重叠机制保证上下文连续性
  • 与 LangChain 等方案的对比

适合:

  • 需要理解 RAG 链路中的文档处理流程
  • 想了解如何切分文档而不破坏语义
  • 准备优化自己项目的文档分块策略

关键收获:

  • ✅ 理解为什么用 Token 估算而不是字符计数
  • ✅ 掌握不可中断上下文的检测逻辑
  • ✅ 学会软硬双重限制的设计哲学
  • ✅ 理解重叠机制如何提升检索准确率

05. 文件上传自动索引 - Essence 报告

内容:

  • 上传即索引的自动化流程
  • 基于文件名的覆盖更新策略
  • 原子化的删除-索引流程
  • 同步 vs. 异步的权衡分析
  • 一致性保证的设计思路

适合:

  • 需要理解 RAG 系统的文件管理机制
  • 想了解如何保证文件系统与向量库的一致性
  • 准备构建自己的文档上传功能

关键收获:

  • ✅ 理解为什么上传成功后立即触发索引
  • ✅ 掌握基于文件名的覆盖更新策略
  • ✅ 学会同步索引 vs. 异步队列的权衡
  • ✅ 理解索引失败不阻塞上传的设计哲学

06. RAG 查询流程 - Essence 报告 ⭐ 新增

内容:

  • Tool-Driven RAG 架构
  • ReactAgent 智能路由机制
  • 向量检索 + LLM 综合答案
  • Tool-as-Service 松耦合设计
  • JSON 返回格式与 Agent 契约

适合:

  • 需要理解查询如何触发 RAG
  • 想了解 ReactAgent 的工作原理
  • 准备构建多功能 AI 助手(不只是文档问答)

关键收获:

  • ✅ 理解为什么用 ReactAgent 而不是直接调用 RAG
  • ✅ 掌握 Tool-as-Service 架构的优势
  • ✅ 学会系统提示词如何引导 Agent 选择工具
  • ✅ 理解 Top-K = 3 的设计依据

🎯 推荐学习顺序

快速模式(30 分钟)

01-AI-Ops-核心设计-Essence报告.md
    ↓ (只看"核心洞察"、"完整调用链"、"迁移示例")
完成 ✅

标准模式(1 小时)

01-AI-Ops-核心设计-Essence报告.md
    ↓ (完整阅读)
02-outputKey-深度解析.md
    ↓ (重点看"完整时间线示例")
03-核心疑问解答.md
    ↓ (按需查阅)
完成 ✅

深度模式(2 小时)

01-AI-Ops-核心设计-Essence报告.md
    ↓ (完整阅读 + 对照源码验证)
02-outputKey-深度解析.md
    ↓ (完整阅读 + 自己画时间线图)
03-核心疑问解答.md
    ↓ (完整阅读 + 尝试回答扩展问题)
实践:修改 AiOpsService 添加新的 Agent
    ↓
完成 ✅

📊 学习检查点

完成 01 后,你应该能回答:

  • 为什么用 3 个 Agent 而不是 1 个?
  • Planner 的 Replanner 角色是什么意思?
  • Executor 为什么只执行"第一步"?
  • Supervisor 如何知道该调用哪个 Agent?
  • 如果 Executor 执行失败会发生什么?

完成 02 后,你应该能回答:

  • outputKey 的本质是什么?
  • Prompt 中的 {executor_feedback} 如何被替换?
  • 如何从 state 中提取最终报告?
  • 如何调试 Agent 间的状态传递?

完成 03 后,你应该能回答:

  • 如果两个 Agent 使用同一个 outputKey 会发生什么?
  • 如何在 Prompt 中同时读取 3 个 key?
  • 模板引擎是如何工作的?

完成 04 后,你应该能回答:

  • 为什么用 Token 估算而不是字符计数?
  • 什么是"不可中断的上下文"?举例说明。
  • 软限制和硬限制的区别是什么?
  • 重叠机制如何提升检索准确率?
  • 这个设计与 LangChain 的切分器有什么不同?
  • 在什么情况下会在列表中间强制切断?

完成 05 后,你应该能回答:

  • 为什么上传成功后要立即触发索引?
  • 为什么使用原始文件名而不是 UUID?
  • 索引失败为什么不影响上传?这个设计的利弊是什么?
  • 如何保证文件更新时,向量库中的旧数据被删除?
  • 这个设计在什么场景下会出现问题?
  • 如何改造为异步索引?

完成 06 后,你应该能回答:

  • 为什么用 ReactAgent 而不是直接调用 RAG?
  • InternalDocsTools 的 @Tool 注解是如何被 ReactAgent 发现的?
  • 工具返回为什么必须是 JSON 格式?
  • Top-K = 3 的设计依据是什么?
  • L2 距离和余弦相似度的区别?何时该换?
  • 如果要添加一个新工具(如查 GitHub Issues),需要改哪些文件?

🔗 相关文档

项目文档

源码文件

文件 关键行 说明
AiOpsService.java 51-70 3-Agent 构建与编排
AiOpsService.java 100-124 Planner & Executor 构建
AiOpsService.java 144-257 Agent Prompts
ChatController.java 280-314 HTTP 入口 + SSE 返回
DocumentChunkService.java 104-202 RAG 分块核心逻辑 ⭐
DocumentChunkService.java 279-297 Token 估算算法
DocumentChunkService.java 307-336 不可中断上下文检测
VectorIndexService.java 124-168 文档索引流程
RagService.java 55-83 RAG 查询编排
FileUploadController.java 35-103 文件上传接口 ⭐
FileUploadController.java 72-80 自动索引触发(核心设计)
VectorIndexService.java 173-215 删除旧数据(覆盖更新)
ChatController.java 140-274 ReactAgent 对话接口 ⭐
ChatService.java 59-96 系统提示词构建
InternalDocsTools.java 49-78 RAG 工具封装
VectorSearchService.java 42-94 向量检索

🚀 下一步

实践练习

  1. 修改 Planner Prompt

    • 调整 buildPlannerPrompt() 中的指令
    • 观察 Agent 行为变化
    • 记录你的发现
  2. 添加新的 Agent

    • 在 Planner 和 Executor 之间添加一个 Validator Agent
    • 验证 Planner 的计划是否合理
    • 实现 3-Agent → 4-Agent 升级
  3. 调试工具失败场景

    • 故意让某个工具返回失败
    • 观察 Executor 如何反馈给 Planner
    • 验证 Planner 的重新规划逻辑

📝 学习笔记模板

你可以在这个文件夹创建自己的学习笔记:

# 我的学习笔记 - [日期]

## 今日学习

- 阅读文档:[文档名]
- 学习时长:[X小时]
- 完成练习:[练习名]

## 关键收获

1. 
2. 
3. 

## 疑问

1. 
2. 

## 下一步计划

- [ ] 
- [ ] 

🎓 扩展阅读

Spring AI 官方文档

相关设计模式

  • Chain of Responsibility(责任链模式)- Supervisor 调度模式的基础
  • Strategy Pattern(策略模式)- Planner 的多策略规划
  • Observer Pattern(观察者模式)- Agent 间的状态通知

💡 提示:这个学习报告文件夹会持续更新。当你遇到新的问题或有新的发现时,可以创建新的 Markdown 文件添加到这里。


创建日期:2026-05-30
最后更新:2026-05-31
版本:v1.3 (新增 RAG 查询流程报告,完成 RAG 全链路分析)