面向论文评审的类人深度思考流程。
PDF -> MinerU Markdown -> Review Agent Tool Loop -> Final Markdown -> Final PDF
快速开始 • 在线平台 • 技术报告 • 配置说明 • CLI 用法 • 引用
| 功能 | 说明 |
|---|---|
| 端到端评审 | 从 PDF 上传到最终 Markdown/PDF 报告,全流程异步执行。 |
| 工具驱动推理 | Agent 通过 pdf_read_lines、pdf_annotate、paper_search 等工具生成可追踪结果。 |
| 用量统计 | 每个任务记录 token 用量、工具调用次数和 paper-search 统计。 |
| 出版风格导出 | 生成 final_report.pdf,包含品牌封面、用量摘要、原文附录和批注叠加。 |
每个评审任务会落盘到:
data/jobs/<job_id>/
流程如下:
pdf_read_lines、pdf_annotate、paper_search 等)。review_final_markdown_write 持久化最终 markdown。cd <repo_root>
python -m venv .venv
source .venv/bin/activate
pip install --upgrade pip
pip install -e .
cp .env.example .env
最小可用配置:
# LLM(OpenAI-compatible)
BASE_URL=http://127.0.0.1:8004/v1
AGENT_MODEL=gpt-5.2
OPENAI_USE_RESPONSES_API=false
OPENAI_AGENTS_DISABLE_TRACING=1
# OPENAI_API_KEY=... # 网关要求鉴权时再填写
# MinerU
MINERU_API_TOKEN=your_mineru_token
# 推荐论文检索:DeepXiv 直连 API
PAPER_SEARCH_ENABLED=true
PAPER_SEARCH_PROVIDER=deepxiv
DEEPXIV_API_BASE_URL=https://data.rag.ac.cn
DEEPXIV_API_TOKEN=your_deepxiv_token
DEEPXIV_RETRIEVE_TOP_K=8
DEEPXIV_DEFAULT_SOURCE=arxiv
python main.py submit --pdf /path/to/paper.pdf --wait-seconds 0
python main.py status --job-id <job_id>
python main.py watch --job-id <job_id> --interval 2 --timeout 1800
python main.py result --job-id <job_id> --format all
python main.py result --job-id <job_id> --format md
python main.py result --job-id <job_id> --format pdf
DeepReviewer 2.0 支持通用 OpenAI-compatible 服务,以及两种论文检索适配:
DeepXiv 直连 API(PAPER_SEARCH_PROVIDER=deepxiv,推荐)和本地 PASA
(PAPER_SEARCH_PROVIDER=pasa,高级备用路径)。
完整 provider 配置说明见 docs/paper_search_providers.md。
| 变量 | 说明 | 默认值 |
|---|---|---|
BASE_URL |
首选 OpenAI-compatible base URL | - |
OPENAI_BASE_URL / LLM_BASE_URL |
base URL 别名 | - |
OPENAI_API_KEY / API_KEY / LLM_API_KEY |
网关鉴权密钥 | 可选 |
AGENT_MODEL |
评审模型 | gpt-5.2 |
OPENAI_USE_RESPONSES_API |
提供方支持时可启用 Responses API | false |
OPENAI_AGENTS_DISABLE_TRACING |
关闭本地网关 tracing 噪声 | 建议 1 |
AGENT_RESUME_ATTEMPTS |
恢复尝试次数(硬上限) | 2 |
| 变量 | 默认值 | 说明 |
|---|---|---|
ENABLE_FINAL_GATES |
false |
启用最终写入门槛 |
MIN_PAPER_SEARCH_CALLS_FOR_PDF_ANNOTATE |
3 |
进入密集批注前最少检索次数 |
MIN_PAPER_SEARCH_CALLS_FOR_FINAL |
3 |
允许最终写入前最少检索次数 |
MIN_DISTINCT_PAPER_QUERIES_FOR_FINAL |
3 |
最少不同检索 query 数 |
MIN_ANNOTATIONS_FOR_FINAL |
10 |
最少批注数量 |
MIN_ENGLISH_WORDS_FOR_FINAL |
0 |
最少英文词数(0 表示关闭) |
FORCE_ENGLISH_OUTPUT |
true |
强制英文输出 |
| 变量组 | 说明 |
|---|---|
MINERU_BASE_URL, MINERU_API_TOKEN, MINERU_MODEL_VERSION |
MinerU 解析配置 |
PAPER_SEARCH_PROVIDER |
deepxiv 表示直连 DeepXiv,pasa 表示连接本地 PASA 服务 |
DEEPXIV_* |
推荐的 DeepXiv 直连检索配置 |
PAPER_SEARCH_* |
PAPER_SEARCH_PROVIDER=pasa 时使用的 PASA 兼容检索配置 |
PAPER_READ_* |
可选论文阅读服务;不配置时使用 arXiv 元数据/摘要级 fallback |
推荐路径是 DeepXiv 直连:
PAPER_SEARCH_ENABLED=true
PAPER_SEARCH_PROVIDER=deepxiv
DEEPXIV_API_BASE_URL=https://data.rag.ac.cn
DEEPXIV_API_TOKEN=your_deepxiv_token
DEEPXIV_RETRIEVE_TOP_K=8
DEEPXIV_DEFAULT_SOURCE=arxiv
备用路径是本地 PASA:
PAPER_SEARCH_ENABLED=true
PAPER_SEARCH_PROVIDER=pasa
PAPER_SEARCH_BASE_URL=http://127.0.0.1:8001
PAPER_SEARCH_ENDPOINT=/pasa/search
PAPER_SEARCH_HEALTH_ENDPOINT=/health
如果 PAPER_SEARCH_ENABLED=false,所选 provider 缺少必要配置(例如 DeepXiv
模式缺少 DEEPXIV_API_TOKEN),或 provider 健康检查失败,paper_search
会返回 status=not_started,任务会以 retrieval-disabled mode 继续,而不是反复重试外部检索。
| 命令 | 作用 |
|---|---|
python main.py submit --pdf /path/to/paper.pdf |
提交新任务 |
python main.py status --job-id <job_id> |
获取一次状态快照 |
python main.py watch --job-id <job_id> --interval 2 --timeout 1800 |
轮询直到完成/超时 |
python main.py result --job-id <job_id> --format all |
拉取 markdown 与 pdf 结果 |
data/jobs/<job_id>/final_report.mddata/jobs/<job_id>/final_report.pdfdata/jobs/<job_id>/events.jsonlfinal_report.pdf 包含:
.env 设置 MINERU_API_TOKENDeepXiv 是最简单的生产路径,因为不需要在本地启动 PASA 模型服务。
PAPER_SEARCH_PROVIDER=deepxiv。.env 中填写 DEEPXIV_API_TOKEN。DEEPXIV_API_BASE_URL=https://data.rag.ac.cn,除非你的部署使用了其他 endpoint。DeepReviewer 会调用:
GET /stats/usage 做启动健康检查。GET /arxiv/?type=retrieve&query=...&top_k=...&source=... 执行 paper_search。paper_search 的输出格式与 PASA 兼容模式保持一致,因此 review prompt、gate
和报告逻辑不需要区分两种 provider。
pasa/README.mdpasa/README.zh-CN.md配置:
PAPER_SEARCH_ENABLED=true
PAPER_SEARCH_PROVIDER=pasa
PAPER_SEARCH_BASE_URL=http://127.0.0.1:8001
PAPER_SEARCH_ENDPOINT=/pasa/search
PAPER_SEARCH_HEALTH_ENDPOINT=/health
建议暴露兼容端点:
POST /pasa/search(默认)POST /search(可选兼容路径)RuntimeError: Agent finished without successful review_final_markdown_write可检查 events.jsonl 的阶段推进和工具调用。
MinerU 超时/失败
检查 token 与端点连通性。
DeepXiv 检索未启动
PAPER_SEARCH_PROVIDER=deepxiv。DEEPXIV_API_TOKEN 已填写。检查 DEEPXIV_API_BASE_URL 能访问 /stats/usage。
PASA 超时/失败
/pasa/search vs /search)。如果你在研究中使用了 DeepReview,请引用:
@inproceedings{zhu-etal-2025-deepreview,
title = "{D}eep{R}eview: Improving {LLM}-based Paper Review with Human-like Deep Thinking Process",
author = "Zhu, Minjun and
Weng, Yixuan and
Yang, Linyi and
Zhang, Yue",
editor = "Che, Wanxiang and
Nabende, Joyce and
Shutova, Ekaterina and
Pilehvar, Mohammad Taher",
booktitle = "Proceedings of the 63rd Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers)",
month = jul,
year = "2025",
address = "Vienna, Austria",
publisher = "Association for Computational Linguistics",
url = "https://aclanthology.org/2025.acl-long.1420/",
doi = "10.18653/v1/2025.acl-long.1420",
pages = "29330--29355",
ISBN = "979-8-89176-251-0"
}
微信交流群
扫描下方二维码加入交流群。
![]() |
![]() |
MIT License,详见 LICENSE。
第三方组件说明见 THIRD_PARTY_NOTICES.md。
$ claude mcp add DeepReviewer-v2 \
-- python -m otcore.mcp_server <graph>