惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

S
Secure Thoughts
P
Privacy International News Feed
T
Tenable Blog
L
Lohrmann on Cybersecurity
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
T
Threat Research - Cisco Blogs
S
Securelist
C
CXSECURITY Database RSS Feed - CXSecurity.com
Cisco Talos Blog
Cisco Talos Blog
T
The Exploit Database - CXSecurity.com
S
Schneier on Security
P
Privacy & Cybersecurity Law Blog
Vercel News
Vercel News
Cyberwarzone
Cyberwarzone
月光博客
月光博客
T
The Blog of Author Tim Ferriss
Scott Helme
Scott Helme
爱范儿
爱范儿
Stack Overflow Blog
Stack Overflow Blog
C
Cisco Blogs
aimingoo的专栏
aimingoo的专栏
博客园 - 司徒正美
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
P
Proofpoint News Feed
A
Arctic Wolf
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
L
LangChain Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
阮一峰的网络日志
阮一峰的网络日志
Simon Willison's Weblog
Simon Willison's Weblog
T
Tor Project blog
Security Latest
Security Latest
Blog — PlanetScale
Blog — PlanetScale
G
GRAHAM CLULEY
V
Vulnerabilities – Threatpost
博客园 - 三生石上(FineUI控件)
I
InfoQ
Spread Privacy
Spread Privacy
B
Blog RSS Feed
Microsoft Azure Blog
Microsoft Azure Blog
S
SegmentFault 最新的问题
云风的 BLOG
云风的 BLOG
Last Week in AI
Last Week in AI
MongoDB | Blog
MongoDB | Blog
C
CERT Recently Published Vulnerability Notes
A
About on SuperTechFans
博客园_首页
Engineering at Meta
Engineering at Meta
Project Zero
Project Zero
Latest news
Latest news

博客园 - work hard work smart

使用 LangChain + Hugging Face 构建文本向量化服务 SQLAlchemy 使用详解 Python 中使用 Elasticsearch 的完整指南 Qdrant 向量数据库使用指南 OpenEvals 快速入门:LLM 评估指南 DeepEval 快速入门:LLM 应用评估指南 LangSmith 批量评估完全指南 Qwen-Agent 入门指南:快速构建智能体应用 LangSmith 集成实战:从追踪到评估的完整指南 初识 go-zero:一款让你写后端更规范、更高效的 Go 微服务框架 RAG 中为什么需要 Rerank,以及如何使用 Rerank LangChain4j RAG 核心组件与组合方式 如何使用 Elasticsearch 进行全文检索和向量检索 MinerU Docker 部署指南 5 分钟上手:为 Cline 配置一个免费的 MCP 天气服务 Neo4j 图数据库安装与 Spring Boot 集成实战指南 LangFuse 实战指南:用 @observe 三行代码给 LLM 应用加上全链路追踪 Function Call 深度解析:让大模型从"嘴炮"到"实干"的技术革命 Spring AI 提示词模板实战:告别硬编码,实现提示词工程化管理 LangChain4j 实战指南:用 Java 轻松构建 AI 应用 Spring AI 对话短期记忆实战:让大模型拥有"记忆力" Spring AI 提示词工程实战:让大模型更懂你的意图 Spring AI ChatClient 深度解析:优雅构建大模型应用的利器 Spring AI Alibaba DashScopeChatModel 实战 Spring 中 SSE 流式输出的多种实现方式详解 OpenSandbox 实战指南:为 AI Agent 构建安全的代码执行沙箱 在本机启动 LangGraph 开发服务器:完整指南 DeepAgents中Backend的奥秘:让AI Agent拥有文件操作能力 为什么选择 Go 开发 Web 接口?从入门到实践 RAG学习笔记2--系统查询流程 RAG学习笔记1--系统文件导入流程 百炼 WebSearch 快速入门指南 Python 连接 MongoDB 完整指南:从连接配置到增删改查实战 一行命令搞定 MongoDB 开发环境:Docker Compose 部署 + 可视化管理 使用 Attu 可视化管理 Milvus 向量数据库 在 Windows Docker 中快速安装 Milvus 2.5.6 minio使用 Spark 集群搭建 hadoop集群安装 Spring AI Alibaba 入门实战 Windows 安装 OpenClaw 实战指南 MyBatis 核心流程和原理 Idea中安装Claude code插件 Spark 编程 使用Matplotlib 绘制直方图 Flink安装部署 Flume安装 查找导致cpu过高的代码方法 JVisualVM监控远程Java进程 jmap jacoco多模块生成java单元测试报告实践 arthas 使用demo LockSupport Exchanger CyclicBarrier CountDownLatch 手把手教你用python开始第一个机器学习项目
智能搜索DeepAgent笔记
work hard work smart · 2026-05-04 · via 博客园 - work hard work smart

📊 系统架构总览

graph TB START[系统启动] --> A[1.服务启动] A --> B[FastAPI服务器] B --> C{API路由分发} C --> D[3.任务执行] C --> E[2.文件上传] C --> F[8a.文件列表] C --> G[8b.文件下载] C --> H[7.WebSocket] D --> I[异步任务执行] I --> J[4.主智能体] J --> K{决策} K --> L[工具调用] K --> M[子智能体] K --> N[结果输出] L --> O[生成Markdown] L --> P[转PDF] L --> Q[读取文件] M --> R[5a.网络搜索] M --> S[5b.数据库查询] M --> T[5c.RAGFlow] R --> U[Tavily搜索] S --> V[SQL工具] T --> W[RAGFlow工具] J --> X[6.Monitor监控] X --> Y[WebSocket推送] Y --> B


🔄 流程说明

1️⃣ 服务启动

入口: api/server.py

流程:

  1. 初始化 FastAPI + CORS
  2. 创建 output/updated/ 目录
  3. 绑定事件循环到 WebSocket 管理器
  4. 初始化主智能体
  5. 启动 Uvicorn (端口 8000)

2️⃣ 文件上传

接口: POST /api/upload

流程:

  1. 接收文件和 thread_id
  2. 创建目录: updated/session_{thread_id}/
  3. 流式写入文件
  4. 返回文件列表

特性: 多格式支持、流式写入、会话隔离

3️⃣ 任务执行

接口: POST /api/task

执行链路:

请求 → 获取thread_id → 异步启动 → 创建工作目录 → 复制上传文件
→ 设置上下文 → 推送目录 → 构建提示词 → 流式执行
→ 实时监控 → 推送结果 → 清理资源

核心逻辑:

  • 创建会话目录: output/session_{session_id}/
  • 复制上传文件到工作目录
  • 设置 ContextVars (线程安全)
  • 流式执行 main_agent.astream()

4️⃣ 主智能体

角色: 团队协调者 (配置文件: prompt/prompts.yml)

职责: 任务分解、子智能体调度、文件生成管理

决策类型:

类型 工具 功能
工具调用 generate_markdown 生成 Markdown
convert_md_to_pdf MD 转 PDF
read_file_content 读取多格式文件
子智能体 task 分发专业任务
结果输出 - 返回最终结果

规则: 先搜索后生成、禁止占位符、内容≥1000字

5️⃣ 子智能体

5a. 网络搜索 (Tavily)

  • 工具: internet_search
  • 策略: ≥3个角度,最多5次检索,由浅入深
  • 场景: 公开信息、行业知识、市场数据

5b. 数据库查询 (MySQL)

  • 工具: list_sql_tablesget_table_dataexecute_sql_query
  • 内容: 药品信息、库存、销售数据
  • 流程: 列表 → 预览 → 精确查询

5c. RAGFlow 知识库

  • 工具: get_assistant_listcreate_ask_delete
  • 流程: 获取助手 → 选择 → 提问 (≥3个问题)
  • 场景: 企业内部知识、专有资料

6️⃣ 实时监控 (Monitor)

设计: 单例模式 ToolMonitor

功能: 工具进度、子智能体通知、结果推送、WebSocket 通信

事件类型:

事件 时机 数据
tool_start 工具执行 tool_name, args
assistant_call 子智能体调用 assistant_name, args
task_result 任务完成 result
session_created 目录创建 path
error 异常 error_message

推送机制: WebSocket优先 → 脚本模式 → 控制台保底

7️⃣ WebSocket 通信

接口: GET /ws/{thread_id}

生命周期:

握手 → 注册(manager.connect) → 监听循环(ping/pong) → 断开清理

特性:

  • 会话隔离: active_connections[thread_id]
  • 心跳机制: 防超时断开
  • 定向推送: 按 thread_id 发送消息

8️⃣ 文件管理

8a. 文件列表 (GET /api/files)

  • 路径安全检查 (防遍历攻击)
  • 递归遍历 + 元数据收集
  • 按修改时间倒序

8b. 文件下载 (GET /api/download)

  • 验证路径在 output/
  • FileResponse 流式传输
  • 浏览器自动下载

安全: 严格的路径检查 is_relative_to()

🔑 核心设计特点

1. 异步并发架构

  • 多会话支持: 每个客户端独立 thread_id
  • 非阻塞执行: asyncio.create_task 后台运行
  • 流式处理: astream() 实时返回结果
  • 事件循环管理: 精确控制协程执行环境

2. 智能体协作模式

主智能体 (协调者)
  ├── 网络搜索助手 (公开信息)
  ├── 数据库查询助手 (企业数据)
  └── RAGFlow助手 (内部知识)

3. 工具增强系统

  • 文件生成: Markdown → PDF 转换链
  • 文件读取: 多格式统一接口
  • 路径管理: 相对路径自动解析
  • 上下文感知: ContextVars 线程安全

4. 实时监控反馈

  • 进度可视化: 工具执行状态实时推送
  • 子任务追踪: 子智能体调用通知
  • 错误处理: 异常信息即时反馈
  • 双向通信: WebSocket 全双工

5. 安全隔离机制

  • 会话隔离: 独立工作目录
  • 路径安全: 严格的路径遍历检查
  • 上下文管理: ContextVars 避免数据泄露
  • 资源清理: finally 块确保资源释放

6. 灵活扩展能力

  • 插件化工具: LangChain 工具装饰器
  • 可配置提示词: YAML 配置文件
  • 子智能体热插拔: 字典配置即可添加
  • 多模型支持: 通过 .env 切换 LLM

🚀 典型使用场景

场景 1: 生成市场分析报告

用户请求: "生成一份空调市场分析报告,保存为 PDF"

执行流程:
1. 主智能体接收任务
2. 调用网络搜索助手 → 收集市场数据
3. 调用数据库查询助手 → 获取销售数据
4. 调用 RAGFlow 助手 → 获取内部资料
5. 汇总所有信息
6. 调用 generate_markdown → 生成 MD 文档
7. 调用 convert_md_to_pdf → 转换为 PDF
8. 推送最终结果和文件位置

场景 2: 查询库存信息

用户请求: "查询当前空调库存情况"

执行流程:
1. 主智能体分析任务类型
2. 调用数据库查询助手
3. 执行 SQL 查询库存表
4. 返回查询结果
5. 无需生成文件,直接反馈

场景 3: 分析上传文档

用户上传: product_specs.pdf
用户请求: "分析上传的产品规格文档"

执行流程:
1. 文件保存到 updated/session_{id}/
2. 复制到 output/session_{id}/ 工作目录
3. 主智能体调用 read_file_content 读取 PDF
4. 分析文档内容
5. 可结合网络搜索补充信息
6. 生成分析报告

💡 技术栈总结

类别 技术 用途
Web 框架 FastAPI REST API 和 WebSocket
ASGI 服务器 Uvicorn 异步服务器
AI 框架 LangChain 智能体和工具系统
工作流 LangGraph 智能体状态管理
LLM Qwen-Max (OpenAI 兼容) 大语言模型
搜索 Tavily API 网络信息检索
文档处理 python-docx, pypdf, pandas 多格式文件处理
实时通信 WebSocket 双向消息推送
配置管理 PyYAML, python-dotenv 配置文件加载

📝 总结

智能搜索系统是一个企业级深度搜索增强系统,核心特点:

多智能体协作 - 主从架构,专业分工
实时通信 - WebSocket 全双工推送
异步并发 - 支持多客户端同时使用
工具增强 - 丰富的文件处理能力
安全隔离 - 会话级目录和路径保护
灵活扩展 - 插件化工具和可配置提示词

系统通过智能的任务分解和资源调度,实现了从信息获取到文档生成的完整自动化工作流!