Skip to content

Landscape Survey

Gabri Elles edited this page Aug 21, 2026 · 5 revisions

Deep Research Agent Landscape: Architectural Innovations for DeepDelve

Reviews four open source deep research systems for patterns worth adapting: GPT Researcher, STORM, Tongyi DeepResearch, and Open Deep Research, from an early point in the project's history.

Note

Nearly every actionable idea below has since shipped. Checked directly against the current code, not assumed: only sectional drafting (STORM's second idea) is still unimplemented, Builder still writes the whole report in one call.

GPT Researcher

Parallelizes crawling instead of sequential search then fetch, and prunes HTML boilerplate before synthesis. Actionable: run WebSearcher tasks fully concurrently, and add a context pruning utility before writing fetched content to the workspace. Both shipped: orchestrator.py dispatches sibling tasks via asyncio.gather, and web.py's boilerplate stripper runs on every fetch before it reaches the workspace.

Stanford STORM

Generates 3 to 5 diverse personas before planning (avoiding consensus bias), and drafts a stable outline before any text, writing section by section. Actionable: a persona brainstorming step before write_todos, and sectional drafting instead of one massive final_report.md call that risks running out of output tokens. Persona brainstorming shipped: the Planner's own instructions now have it brainstorm from 2-3 expert perspectives via think_tool before writing slots. Sectional drafting still not implemented: Builder still writes the whole report in a single call.

Tongyi DeepResearch

Scales inference compute on complex queries, expanding into multiple search strings and fetching deeper into results. Actionable: a search_mode: "heavy" config that expands one query into three and fetches the top result of each. Shipped: search_mode: heavy is a real, live config option in web.py.

Open Deep Research

Pauses for human approval of the plan before consuming any search quota, and integrates external tools via MCP. Actionable: a human_in_the_loop gate pausing after write_todos, and a dynamic MCP tool loader. Both shipped: a human-in-the-loop gate exists in the orchestrator, and src/tools/mcp_loader.py is a real, generic MCP tool loader.

Proposed evolutionary path

The original proposed flow, kept for the historical reasoning; every phase except the section-by-section drafting one now exists in some form in the real pipeline, just not as a single linear phase sequence the way this diagram suggests.

flowchart TD
    A[User Query] --> B[Phase 1: Multi-Perspective Persona Generation]
    B --> C[Phase 2: Bounded Outline Planning]
    C -->|HITL Gate: User Approval| D[Phase 3: Test-Time Search Scaling / Heavy Mode]
    D --> E[Phase 4: Concurrency-Optimized Scraping & Pruning]
    E --> F[Phase 5: Section-by-Section Drafting & Peer Critique]
    F --> G[Final Report]
Loading

Clone this wiki locally