基于Spring AI Deep Researcher Agent
📑 目录
- [1. 项目简介](#1. 项目简介)
- [2. 技术栈](#2. 技术栈)
- [3. 系统架构](#3. 系统架构)
- [4. 系统节点详解](#4. 系统节点详解)
- [5. 系统流程图](#5. 系统流程图)
- [6. 功能特点](#6. 功能特点)
- [7. 使用方法](#7. 使用方法)
- [8. 项目结构](#8. 项目结构)
1. 项目简介
✨ 本项目基于 Spring AI + LangGraph4j 构建,旨在打造一个 具备自主研究能力的智能体系统。
深度研究智能体 是一款基于 Spring AI 与 LangGraph4j 的智能研究助手,能够根据用户提出的问题,自动完成
澄清需求 → 制定研究简报 → 执行深度搜索 → 整理与压缩信息 → 生成最终报告 的全流程研究任务。
该系统采用 图驱动的智能体架构 (Graph-based Agent Architecture) ,具备 ** 多节点协作、监督机制、工具链调用、实时反馈
** 等特性,可广泛应用于学术研究、市场分析、技术趋势追踪等场景。
github:https://github.com/renpengben/deep-researcher-agent
2. 技术栈
- Java 17
- Spring Boot 3.5.5
- Spring AI 1.0.1
- LangGraph4j 1.6.2
3. 系统架构
系统采用分层的智能体图结构,主要包含以下组件:
-
DeepResearchGraph
主研究流程图,协调整个研究过程
-
SupervisorGraph
监督研究质量,确保方向正确
-
ResearcherGraph
执行具体研究任务,包括搜索、思考和信息压缩
架构总览
用户输入问题
│
▼
ClarifyWithUserNode (澄清需求)
│
▼
WriteResearchBriefNode (生成研究简报)
│
▼
SupervisorGraph (监督研究)
│
▼
ResearcherGraph (执行研究 → 压缩信息)
│
▼
FinalReportGenerationNode (生成报告)
4. 系统节点详解
主图节点
- ClarifyWithUserNode: 澄清用户研究问题
- WriteResearchBriefNode: 生成研究简报
- FinalReportGenerationNode: 生成最终研究报告
SupervisorGraph
- SupervisorNode: 分配研究任务,调用 ResearcherGraph
- SupervisorToolNode: 处理工具调用结果,支持并行执行
ResearcherGraph
- ResearcherNode: 执行研究任务,调用 TavilySearch、ThinkTool、ResearchComplete
- ResearcherToolsNode: 处理工具调用结果
- CompressResearchNode: 压缩与整理研究内容
5. 系统流程图
总体流程
用户输入问题
│
▼
ClarifyWithUserNode ──> WriteResearchBriefNode
│ │
▼ ▼
SupervisorGraph <─────── 研究简报输入
│
▼
ResearcherGraph ──> CompressResearchNode
│
▼
FinalReportGenerationNode (最终报告)
SupervisorGraph 子图
研究简报输入
│
▼
SupervisorNode ──> SupervisorToolNode
▲ │
└────── 循环直到完成 ──┘
ResearcherGraph 子图
研究任务输入
│
▼
ResearcherNode ──> ResearcherToolsNode ──> CompressResearchNode
6. 功能特点
✅ 问题澄清 :确认研究目标,避免偏差
✅ 研究简报 :生成可执行的研究计划
✅ 信息搜索与整理 :Tavily 搜索 + 推理工具链
✅ 监督机制 :保证研究质量与方向
✅ 实时反馈 :SSE 实时输出进度与中间结果
✅ 最终报告生成:输出结构化分析报告
7. 使用方法
环境要求
- JDK 17+
- Maven
- OpenAI API Key
启动步骤
bash
git clone https://github.com/renpengben/deep-researcher-agent
cd deep-researcher-agent
- 配置大模型和Tavily
在application.properties
或环境变量中设置,兼容Open AI规范的大模型接口。
yaml
spring:
ai:
openai:
base-url: https://api.siliconflow.cn
api-key: sk-xxxx
chat:
options:
model: deepseek-ai/DeepSeek-V3.1
Tavily申请key https://www.tavily.com/
yaml
tavily:
api-key: tvly-dev-xxx
- test
java
CompileConfig compileConfig = CompileConfig.builder()
.checkpointSaver(new MemorySaver())
.build();
var result = deepResearchGraph.build()
.getGraph(GraphRepresentation.Type.PLANTUML, "deep research graph", false);
System.out.println(result.content());
var compileGraph = deepResearchGraph.build().compile(compileConfig);
compileGraph.setMaxIterations(50);
var generator = compileGraph
.stream(Map.of("messages", new UserMessage("研究下Anthropic最新发布的Streamable HTTP的工程中的具体实现方案")));
3.输出结果

8. 项目结构
├── src/
│ ├── main/java/io/github/renpengben/deepresearch/
│ │ ├── config/ # 配置类
│ │ ├── graph/ # 智能体图结构
│ │ ├── model/ # 数据模型
│ │ ├── nodes/ # 节点实现
│ │ ├── prompt/ # 提示词模板
│ │ ├── state/ # 状态管理
│ │ ├── tools/ # 工具实现
│ │ └── DeepResearcherAgentApplication.java
│ └── resources/
│ └── application.yml
└── pom.xml