A personal deep-research assistant built on Hy3 (Tencent's 295B-A21B MoE model, 256K context), inspired by the staged-agent architecture of the FARS paper (FARS: A Fully Automated Research System Deployed at Scale, arXiv:2606.31651).
You give it a research question; it clarifies scope with you, plans the investigation, searches and reads real sources, and produces a long-form report with verifiable inline citations β plus a machine-auditable trail of every artifact it produced along the way.
Question βββΆ β Clarify βββΆ β‘ Plan βββΆ β’ Search βββΆ β£ Write βββΆ β€ Verify βββΆ report.md
β β β β β
βββββββββββββββ΄ββββββββββββ΄βββββββββββββ΄βββββββββββββ
shared auditable workspace (runs/<run>/)
| FARS concept | DeepScholar adaptation |
|---|---|
| Stage-specific agents (Ideation β Planning β Experiment β Writing) | Clarify β Plan β Search β Write β Verify, each with clear inputs/outputs |
| Shared workspace as persistent memory + auditable artifact store | Every stage reads/writes files under runs/<run>/; no hidden state |
| Machine-readable experiment contract | plan/plan.json: sections Γ evidence-needed Γ concrete queries |
| Three-tier knowledge base (raw text β summaries β synthesized survey) | sources/raw/ β sources/notes/ β sources/survey.md |
| Evidence organization before prose generation | report/blueprint.json maps every claim to source ids before drafting |
| Citation/numerical verification & integrity failure modes | Stage 5 audits 6 adapted failure modes (hallucinated citation, number mismatch, overstatement, β¦) |
| Boundary checks + bounded retry (circuit breaker) | Plan validation retries once; verification applies exactly one fix pass |
- OpenAI-compatible endpoint (vLLM/SGLang) β DeepScholar is just an API client; run the model wherever you like.
reasoning_effortswitch per request β DeepScholar spends thinking budget where it matters:no_thinkfor bulk per-source summarization,highfor planning, synthesis, writing, and verification (seeconfig.yaml).- 256K context β whole-corpus synthesis (survey, polish, audit) in a single call.
- Anti-hallucination posture ("answer when grounded, state when evidence is missing") matches the citation-grounded writing rules.
- Bounded "grill-me" clarification: at most 5 decision-relevant questions, each with a recommended default; decisions are frozen into an ADR-style record (
brief/clarifications.md) and a contract brief (brief/brief.md). - A run README as the 5-minute status summary, regenerated after every stage.
- Manifests & stage gates:
manifest.jsonrecords what ran, when, and with what result, so an interrupted run can be resumed exactly where it stopped. - Never silently rewrite old records: revision fixes only listed issues; artifacts of earlier stages stay untouched.
# vLLM (8Γ H20-3e or similar)
vllm serve tencent/Hy3 \
--tensor-parallel-size 8 \
--speculative-config.method mtp \
--speculative-config.num_speculative_tokens 2 \
--tool-call-parser hy_v3 --reasoning-parser hy_v3 \
--enable-auto-tool-choice --port 8000 --served-model-name hy3(Or SGLang β see the Hy3 README. Any OpenAI-compatible endpoint works; point llm.base_url at it.)
cd deepscholar
pip install -r requirements.txt
# interactive (asks up to 5 clarification questions)
python -m deepscholar.cli research "What are the current approaches to memory in LLM agents, and which are production-ready?"
# non-interactive (accept recommended defaults)
python -m deepscholar.cli research "..." --yes
# resume an interrupted run / check status
python -m deepscholar.cli resume runs/20260721-101500-what-are-...
python -m deepscholar.cli status runs/20260721-101500-what-are-...runs/<run>/
README.md # 5-minute status summary
manifest.json # stage gates + token usage
brief/ # question, clarification ADRs, frozen brief
plan/plan.json|.md # research contract
sources/registry.json # every source: id, url, status, content hash
sources/raw|notes/ # tier-1 raw text, tier-2 structured notes
sources/survey.md # tier-3 cross-source synthesis
report/blueprint.json # claim β source-id map (evidence before prose)
report/report.md # β
final report with [S001]-style citations + References
audit/audit.md # integrity audit verdict + issues
Every inline citation [S001] resolves through sources/registry.json to a URL and through sources/notes/S001.md to the exact evidence used β so you can audit any claim in seconds.
Out of the box DeepScholar uses the free arXiv API plus direct page fetching. For general web search, point search.searxng_url in config.yaml at any SearXNG instance (self-hosted or public). No paid API keys required.
Everything lives in config.yaml: endpoint, per-stage reasoning_effort, search limits, report language (auto/en/zh), max sections.
- Retrieval quality is bounded by arXiv + your SearXNG instance; paywalled sources are skipped.
- The verifier audits claims against notes, not the raw source, so subtle summarization errors can pass; open
sources/raw/for anything critical. - One fix pass only, by design (FARS-style circuit breaker) β the audit report tells you what remains.