| name | open-researcher-guide |
| description | Open pipeline for generating deep research trajectories with LLMs |
| metadata | {"openclaw":{"emoji":"🔬","category":"research","subcategory":"deep-research","keywords":["OpenResearcher","deep research","research trajectory","open pipeline","literature synthesis","LLM research"],"source":"https://github.com/GAIR-NLP/OpenResearcher"}} |
OpenResearcher Guide
Overview
OpenResearcher is a fully open pipeline for long-horizon deep research trajectory synthesis. It breaks complex research questions into sub-questions, iteratively searches and reads literature, builds internal knowledge representations, and synthesizes comprehensive answers. Unlike single-shot approaches, it models the researcher's thought process — reading, questioning, connecting, and refining understanding over multiple rounds.
Pipeline Stages
1. Question Decomposition
from open_researcher import OpenResearcher
researcher = OpenResearcher(llm_provider="anthropic")
result = researcher.research(
"How do retrieval-augmented generation systems handle "
"knowledge conflicts between parametric and retrieved knowledge, "
"and what are the current mitigation strategies?"
)
2. Iterative Search and Reading
researcher = OpenResearcher(
search_backends=["openalex", "arxiv"],
max_iterations=5,
papers_per_iteration=10,
follow_up_questions=True,
)
3. Knowledge Graph Building
kg = result.knowledge_graph
print(f"Concepts: {len(kg.nodes)}")
print(f"Relations: {len(kg.edges)}")
print(f"Contradictions: {len(kg.contradictions)}")
4. Synthesis and Report
report = result.report
report.save("research_report.md")
report.export_bibliography("refs.bib")
Configuration
researcher = OpenResearcher(
llm_provider="anthropic",
model="claude-sonnet-4-20250514",
search_config={
"backends": ["openalex", "arxiv"],
"max_results_per_query": 20,
},
reading_config={
"sections": ["abstract", "introduction", "methods", "conclusion"],
"max_tokens_per_paper": 3000,
},
synthesis_config={
"style": "academic",
"include_contradictions": True,
"cite_inline": True,
},
)
Trajectory Inspection
trajectory = result.trajectory
for step in trajectory:
print(f"Round {step.round}: {step.action}")
print(f" Query: {step.query}")
print(f" Papers read: {step.papers_read}")
print(f" Key findings: {step.findings[:100]}...")
print(f" Follow-ups: {step.follow_up_questions}")
Use Cases
- Literature surveys: Comprehensive multi-round research
- Research proposals: Evidence gathering for grant applications
- State-of-the-art reports: Current landscape analysis
- Tutorial generation: Deep topic explanations with citations
References