您的AI驱动的研究助手。 使用Google Gemini 2.5 Flash与Google搜索基础和URL上下文进行迭代深度研究。无需依赖网络抓取。
本项目的目的是提供一个最简单但最有效的深度研究代理实现。它设计得易于理解、修改和扩展,目标是代码量不超过500行。
关键特性:
flowchart TB
subgraph 输入
Q[用户查询]
B[广度参数]
D[深度参数]
end
DR[深度研究] -->
SQ[SERP查询] -->
PR[处理结果]
subgraph 结果[结果]
direction TB
NL((学习))
ND((方向))
end
PR --> NL
PR --> ND
DP{深度 > 0?}
RD["下一个方向:
- 前期目标
- 新问题
- 学习"]
MR[Markdown报告]
%% 主流程
Q & B & D --> DR
%% 结果到决策
NL & ND --> DP
%% 循环流程
DP -->|是| RD
RD -->|新上下文| DR
%% 最终输出
DP -->|否| MR
%% 样式
classDef 输入 fill:#7bed9f,stroke:#2ed573,color:black
classDef 处理 fill:#70a1ff,stroke:#1e90ff,color:black
classDef 递归 fill:#ffa502,stroke:#ff7f50,color:black
classDef 输出 fill:#ff4757,stroke:#ff6b81,color:black
classDef 结果 fill:#a8e6cf,stroke:#3b7a57,color:black
class Q,B,D 输入
class DR,SQ,PR 处理
class DP,RD 递归
class MR 输出
class NL,ND 结果
什么是角色代理?
在deep-research中,我们利用“角色代理”的概念来指导Gemini语言模型的行为。与其简单地向LLM提示任务,我们赋予它特定的角色、技能、个性、沟通风格和价值观。这种方法有助于:
角色代理使用的示例:
通过利用角色代理,deep-research旨在从Gemini语言模型中获得更有针对性、一致性和高质量的研究成果。
核心模块:
src/deep-research.ts — 协调查询、批处理、分析和综合
generateSerpQueries() 使用Gemini根据提示和先前的学习提出SERP样式的查询processSerpResult() 分割内容,启用工具的Gemini调用批处理,提取学习和引用conductResearch() 对语义块进行分析通过writeFinalReport() 构建最终的专业Markdown报告src/ai/providers.ts — GoogleGenAI封装Gemini 2.5 Flash,批处理,令牌控制,可选工具src/ai/text-splitter.ts — 递归字符和语义分割器src/mcp-server.ts — MCP服务器入口点和类型src/run.ts — CLI入口点流水线亮点:
generateBatch,generateBatchWithTools)deep-research-mcp-server/
├─ src/
│ ├─ ai/
│ │ ├─ providers.ts # Gemini封装,工具,批处理,缓存
│ │ └─ text-splitter.ts # 语义/递归分割器
│ ├─ mcp-server.ts # MCP服务器入口/类型
│ ├─ deep-research.ts # 协调器:查询 → 分析 → 综合
│ ├─ prompt.ts # 系统 + 模板
│ ├─ feedback.ts # 精炼/反馈循环
│ ├─ output-manager.ts # 报告/输出格式化
│ ├─ progress-manager.ts # CLI进度
│ ├─ terminal-utils.ts # CLI辅助工具
│ ├─ types.ts # Zod模式/类型
│ └─ utils/ # JSON/清理辅助工具
├─ dist/ # 构建输出
├─ .env.example # 环境模板
├─ package.json # 脚本/依赖
└─ README.md
克隆仓库:
git clone [your-repo-link-here]
安装依赖:
npm install
设置环境变量: 在项目根目录创建一个.env.local文件:
# 必需
GEMINI_API_KEY="your_gemini_key"
# 推荐默认值
GEMINI_MODEL=gemini-2.5-flash
GEMINI_MAX_OUTPUT_TOKENS=65536
CONCURRENCY_LIMIT=5
# Gemini工具(按需启用)
ENABLE_GEMINI_GOOGLE_SEARCH=true
ENABLE_GEMINI_CODE_EXECUTION=false
ENABLE_GEMINI_FUNCTIONS=false
构建项目:
npm run build
要将deep-research作为MCP工具运行,请启动MCP服务器:
node --env-file .env.local dist/mcp-server.js
然后可以从任何MCP兼容的代理使用以下参数调用deep-research工具:
query(字符串,必需):研究查询。depth(数字,可选,1-5):研究深度(默认:中等)。breadth(数字,可选,1-5):研究广度(默认:中等)。existingLearnings(字符串数组,可选):预存在的研究发现,以指导研究。示例MCP工具参数(JSON形状):
{
"name": "deep-research",
"arguments": {
"query": "2025年多代理研究代理的状态",
"depth": 3,
"breadth": 3,
"existingLearnings": [
"工具使用改善了基础",
"批处理减少了延迟"
]
}
}
const mcp = new ModelContextProtocolClient(); // 假设MCP客户端已初始化
async function invokeDeepResearchTool() {
try {
const result = await mcp.invoke("deep-research", {
query: "解释区块链技术的原则",
depth: 2,
breadth: 4
});
if (result.isError) {
console.error("MCP工具错误:", result.content[0].text);
} else {
console.log("研究报告:\n", result.content[0].text);
console.log("来源:\n", result.metadata.sources);
}
} catch (error) {
console.error("MCP调用错误:", error);
}
}
invokeDeepResearchTool();
要直接从命令行运行deep-research:
npm run start "你的研究查询"
示例:
npm run start "人工智能研究代理的最新发展是什么"
为了交互式测试和调试MCP服务器,使用MCP检查器:
npx @modelcontextprotocol/inspector node --env-file .env.local dist/mcp-server.js
GEMINI_API_KEY;通过环境变量提供模型和工具标志。CONCURRENCY_LIMIT以平衡速度与速率限制。GEMINI_API_KEY — 必需GEMINI_MODEL — 默认为gemini-2.5-flashGEMINI_MAX_OUTPUT_TOKENS — 默认为65536CONCURRENCY_LIMIT — 默认为5ENABLE_GEMINI_GOOGLE_SEARCH — 启用Google搜索基础工具ENABLE_GEMINI_CODE_EXECUTION — 启用代码执行工具ENABLE_GEMINI_FUNCTIONS — 启用函数调用可选提供商(计划/后置标志):Exa/Tavily可以在以后集成;Firecrawl当前流水线不需要。
git clone https://github.com/ssdeanx/deep-research-mcp-server
cd deep-research-mcp-server
npm i && npm run build
创建.env.local(参见[设置](#设置))
作为MCP服务器运行(检查器)
npx @modelcontextprotocol/inspector node --env-file .env.local dist/mcp-server.js
npm run start "2025年多代理研究代理的状态"
# 摘要
研究目标、范围、方法和关键发现的简洁概述。
# 目录
...
# 引言
背景和框架。
# 正文
有证据支持的部分,附带引用。
# 方法论
如何找到和分析来源。
# 局限性
假设和风险。
# 关键学习
要点和收获。
# 参考文献
访问URL的规范化引用。
npm run build 和 tsc --noEmit 必须通过。README.md和.env.example。ENABLE_EXA_PRIMARY),Google基础用于增强。GEMINI_API_KEY在.env.local中设置,并且进程使用--env-file .env.local启动。ENABLE_GEMINI_GOOGLE_SEARCH,ENABLE_GEMINI_CODE_EXECUTION,ENABLE_GEMINI_FUNCTIONS。CONCURRENCY_LIMIT(例如,3)或重新运行较少的同时查询。GEMINI_MAX_OUTPUT_TOKENS。MIT许可证 - 自由和开源。自由使用!
<details> <summary><strong>🧪 增强的研究验证</strong></summary>✨ 最新变化的亮点。另见路线图。
性能: