deep-research
AI驱动的迭代式深度研究工具,输入主题自动生成调研报告,支持多LLM和多搜索源
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
AI驱动的迭代式深度研究工具,输入主题自动生成调研报告,支持多LLM和多搜索源
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
当你需要了解一个陌生领域时,传统方式是打开搜索引擎、翻阅几十个标签页、把有价值的内容复制到文档里——整个过程枯燥且容易遗漏。Open Deep Research 尝试把这件事交给AI:给它一个研究主题,它会自动生成搜索关键词、抓取相关网页、从内容中提炼知识点,然后像真正的研究员那样——带着上一轮发现去追问下一轮问题,直到把研究做透。
这个项目由独立开发者 dzhng 创建(同时也是 Duet.so 的创始人),于 2025 年 2 月开源,迅速吸引了近 19000 颗星。它没有华丽的界面,也没有复杂的前端组件,只有一个核心目标:用最少的代码实现最完整的深度研究体验。
2025 年初,OpenAI 发布 Deep Research 功能,展示了AI在复杂信息任务中的潜力。但这类能力长期被封闭在付费墙内,调用成本高、不可扩展。开源社区随即掀起了"复现 Deep Research"的热潮——n() 的 deep-research 是这股浪潮中最受欢迎的项目之一,其 stars 数在短短一年内便突破了 18,000 大关。
与那些追求功能堆砌的竞品不同,n() 的策略是极简主义:整个项目代码量控制在 500 行以内,任何人都能在 10 分钟内读完全部源码,理解它的运作原理。这种"可解释性优先"的设计哲学,正是它区别于同类项目的核心价值。
从代码结构来看,项目采用了经典的 Agentic Loop(智能体循环) 架构:
搜索 → 解析 → 学习 → 规划 → 再搜索(循环)
具体来说,每一次研究迭代会经历以下阶段:
SERP 查询生成(generateSerpQueries):基于当前研究目标和已有发现,LLM 动态生成若干条搜索查询。每条查询都附带 researchGoal 说明其研究目的,便于后续理解上下文。
并发搜索与内容抓取:通过 Firecrawl API 并发执行多条搜索(默认并发度 2,可通过环境变量调整),抓取网页正文内容。Firecrawl 相比传统爬虫的优势在于它能绕过常见反爬机制并输出干净的结构化文本。
结果提炼(processResults):将抓取到的内容喂回 LLM,提取 learnings(新发现)和 directions(下一步研究方向)。这是整个循环的核心决策节点。
递归深化:若当前深度 depth > 0,将新的研究方向注入上下文,开启下一轮搜索。每一轮都会累积之前的发现,形成越来越深入的知识网络。
报告生成:循环结束后,调用 LLM 将所有 learnings 整合为一份结构化 Markdown 报告,包含信息来源链接。
多模型支持通过 Vercel AI SDK 实现统一封装,当前默认模型为 OpenAI o3-mini(reasoning effort=medium,structured outputs),同时也支持 DeepSeek R1(通过 Fireworks.ai provider)和任何 OpenAI 兼容的本地/第三方端点(如 Ollama)。
| 文件 | 职责 |
|---|---|
src/deep-research.ts | 研究循环主体,包含迭代搜索、结果处理、报告生成 |
src/run.ts | CLI 交互入口,收集用户输入(主题、Breadth、Depth)并驱动研究 |
src/api.ts | HTTP API 封装,提供 /api/research 和 /api/generate-report 两个端点 |
src/ai/providers.ts | 模型抽象层,支持 OpenAI o3-mini、DeepSeek R1 及自定义端点 |
src/ai/text-splitter.ts | 长文本分块工具,配合 Tiktoken 做 Token 级别的上下文裁剪 |
src/prompt.ts | 系统提示词模板,定义研究员人格 |
src/feedback.ts | 初始追问模块,在正式研究前收集用户的补充信息 |
整个依赖栈非常精简:Vercel AI SDK(ai 包)负责 LLM 调用,Firecrawl JS SDK 负责搜索与内容提取,Zod 做 schema 校验,Lodash-es 和 p-limit 做工具函数。TypeScript + tsx 作为开发运行时,最终可编译为 Node.js 兼容的 JS。
项目提供了两种运行方式:
方式一:Node.js 原生运行(推荐)
git clone https://github.com/dzhng/deep-research
cd deep-research
npm install
cp .env.example .env.local
# 编辑 .env.local 填入 FIRECRAWL_KEY 和 OPENAI_KEY
npm start
方式二:Docker 一键启动
cp .env.example .env.local
# 编辑 .env.local
docker compose up -d
docker exec -it deep-research npm run docker
唯一需要注意的是 Firecrawl API Key——这是搜索能力的核心提供者。Firecrawl 提供免费 tiers(有限制),付费版可提高并发上限。项目也支持自托管 Firecrawl(通过 FIRECRAWL_BASE_URL 环境变量指向本地实例),规避了 API 依赖。
研究开始后,程序会交互式地询问:
研究完成后,report.md 或 answer.md 会保存在工作目录。
尽管项目人气极高,也有一些不可忽视的限制:
1. API 成本:o3-mini 和 DeepSeek R1 的每次研究调用都会消耗 token。以 Depth=2、Breadth=4 计算,单次研究可能产生数十美元的 API 费用。
2. 无 Web UI:纯 CLI 工具,非技术用户上手门槛较高。已有社区开发者基于此项目封装了 Web 界面(如 Python 版 fork),但非官方支持。
3. 研究质量依赖 LLM 推理能力:当前实现对模型推理能力的依赖非常强,若模型对某领域缺乏背景知识,可能生成表面化或错误结论。
4. Firecrawl 依赖:搜索完全依赖 Firecrawl,若该服务出现可用性或价格问题,整个项目可用性直接受影响。
Open Deep Research 的出现,标志着开源 AI Agent 领域一个重要趋势:以可读性为核心的工程美学。在 Agent 能力快速膨胀的当下,很多项目堆砌了大量工具和中间件,导致代码复杂度急剧上升。而这个项目用不到 500 行源码,清晰展示了 Agent Loop 的核心逻辑——这种"做减法"的设计哲学,反而让它成为了最好的学习素材。
从行业影响看,它和 Together AI 的 Open Deep Research、Perplexity 的 Agent 能力,共同构建了 2025 年 AI 研究自动化的开源基础设施。无论是研究者用来快速调研,还是开发者以此为模板构建垂直领域的定制研究工具,这个项目都提供了可靠的起点。