论文检索、LLM 评审、学者追踪与 Paper2Code 的研究工作流工具链。
后端 Python + FastAPI(SSE 流式) · 前端 Next.js Web + Ink CLI · 数据源 papers.cool / arXiv API / Hugging Face Daily Papers / Semantic Scholar
| 模块 | 说明 |
|---|---|
| Topic Search | 多主题聚合检索,支持 papers.cool + arXiv API + Hugging Face Daily Papers 三数据源,跨 query/branch 去重与评分排序,min_score 质量过滤 |
| DailyPaper | 日报生成(Markdown/JSON),SSE 实时流式推送全流程进度,可选 LLM 增强(摘要/趋势/洞察/相关性),Judge 评分后自动过滤低质论文,支持定时推送(Email/Slack/钉钉) |
| LLM-as-Judge | 5 维评分(Relevance/Novelty/Rigor/Impact/Clarity)+ 推荐分级(must_read/worth_reading/skim/skip),Token Budget 控制,多轮校准,评分后自动过滤 skip/skim 论文 |
| Analyze SSE | Judge + Trend 分析通过 SSE 实时流式推送,前端增量渲染(逐张 Judge 卡片 / 逐条 Trend 分析),完整 Judge 日志保留 |
| 学者追踪 | 定期监测学者论文,多 Agent 协作(Research/Code/Quality/Reviewer),PIS 影响力评分(引用速度、趋势动量) |
| 深度评审 | 模拟同行评审(初筛→深度批评→决策),输出 Summary/Strengths/Weaknesses/Novelty Score |
| Paper2Code | 论文到代码骨架(Planning→Analysis→Generation→Verification),自愈调试,Docker/E2B 沙箱执行 |
| 个性化研究 | Research Track 管理、记忆 Inbox(LLM/规则抽取)、Context Engine 路由与推荐 |
| 每日推送 | DailyPaper 生成后自动推送摘要到 Email/Slack/钉钉,支持 API 手动触发和 ARQ Cron 定时推送 |
| 模块 | 状态 | API | CLI | 说明 |
|---|---|---|---|---|
| Topic Search | ✅ 可用 | /research/paperscool/search |
topic-search |
三数据源(papers.cool + arXiv API + HF Daily),评分/去重/min_score 过滤均已落地 |
| DailyPaper | ✅ 可用 | /research/paperscool/daily |
daily-paper |
报告生成 + LLM 增强 + Judge + 保存,完整可用 |
| LLM-as-Judge | ✅ 可用 | /research/paperscool/analyze |
--with-judge |
5 维评分 + 多轮校准 + 推荐分级 + Token Budget,SSE 增量推送 |
| Analyze SSE | ✅ 可用 | /research/paperscool/analyze |
— | Judge / Trend / Insight 三通道 SSE 流式,前端逐卡片渲染 |
| Push/Notify | ✅ 可用 | /research/paperscool/daily |
--notify |
Email(SMTP)/ Slack(Webhook)/ 钉钉(签名),ARQ Cron 定时推送 |
| 学者追踪 | 🟡 基本可用 | /track |
track |
多 Agent 管线 + PIS 评分完整;依赖 Semantic Scholar API Key |
| 深度评审 | 🟡 基本可用 | /review |
review |
模拟同行评审流程完整;输出质量取决于 LLM 后端配置 |
| Paper2Code | 🟡 基本可用 | /gen-code |
gen-code |
编排 + RAG + CodeMemory 完整;需配置 Docker 或 E2B 沙箱运行验证 |
| 记忆系统 | 🔴 早期 | /research/memory/* |
— | Schema + Extractor + Parsers 骨架已搭建;LLM 抽取与检索回路待完善 |
| Context Engine | 🔴 早期 | /research/context |
— | Track Router + Engine 框架已有;推荐策略与 Embedding 集成待落地 |
✅ 可用 = 核心功能完整、API/CLI 已接通、可直接使用 🟡 基本可用 = 实现完整但有外部依赖或配置要求 🔴 早期 = 骨架已搭建,核心流程待完善
完整架构图(可编辑):Excalidraw · drawio
┌─────────────────────────────────────────────────────────────────┐
│ Clients: Web (Next.js) · CLI (Ink) · ARQ Cron · Push │
└────────────────────────────┬────────────────────────────────────┘
▼
┌─────────────────── FastAPI Gateway (SSE) ───────────────────────┐
│ /search /daily /analyze /track /review /gen-code /chat │
└────────────────────────────┬────────────────────────────────────┘
▼
┌─ Application ──────────────────────────────────────────────────┐
│ TopicSearch · DailyPaper · ScholarPipeline · Paper2Code │
│ LLM-as-Judge · TrendAnalyzer · Summarizer · ReviewerAgent │
│ ContextEngine · PushService · VerificationAgent │
└────────────────────────────┬───────────────────────────────────┘
▼
┌─ Infrastructure ───────────────────────────────────────────────┐
│ ModelRouter (OpenAI/NIM/OR) · SQLite · ARQ · Docker/E2B│
└────────────────────────────┬───────────────────────────────────┘
▼
┌─ External Sources ─────────────────────────────────────────────┐
│ papers.cool · arXiv API · HF Daily Papers · Semantic Scholar│
│ GitHub · HuggingFace Hub · OpenReview │
└────────────────────────────────────────────────────────────────┘
┌─── papers.cool (arxiv/venue branch)
Input Queries ──→ ├─── arXiv API (relevance sort)
└─── (extensible: TopicSearchSource protocol)
│
Normalize → Dedup → Score → min_score Filter
│
┌── DailyPaper Report (Markdown / JSON)
├── LLM Enrichment (summary / trends / insight)
├── LLM-as-Judge (5-dim scoring, SSE stream)
├── Save to disk / Push to channels
└── Web UI (DAG + Tabs: Papers / Insights / Judge)
当启用 LLM 分析或 Judge 评分时,/daily 端点返回 SSE 流式响应,前端实时显示每个阶段的进度:
Search → Build Report → LLM Enrichment → Judge Scoring → Filter → Save → Notify → Result
│ │ │ │ │
│ │ │ │ └─ 移除 skip/skim 论文
│ │ │ └─ 逐篇评分,实时推送 judge 事件
│ │ └─ 逐篇摘要 + 趋势分析 + 洞察
│ └─ 构建报告结构
└─ 多源检索 + 去重 + 评分
Post-Judge 过滤:Judge 评分完成后,自动移除推荐等级为 skip 和 skim 的论文,只保留 must_read 和 worth_reading 的论文。完整的 Judge 评分日志保留在 report.filter.log 中。
前端配置持久化:所有功能开关(LLM/Judge/数据源/邮箱等)默认全部启用,保存在浏览器 localStorage 中,刷新页面不会丢失。
| 论文分析 | 学者画像 |
|---|---|
![]() |
![]() |
| Wiki 知识库 | DeepCode Studio |
|---|---|
![]() |
![]() |
| DAG + 配置面板 | DailyPaper 报告 |
|---|---|
![]() |
![]() |
| 论文卡片 | Insights + Trends |
|---|---|
![]() |
![]() |
| Judge 评分卡片 | Judge 雷达图详情 |
|---|---|
![]() |
![]() |
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
# 可选
pip install jinja2 openreview-py huggingface_hubcp env.example .env至少配置一个 LLM Key(如 OPENAI_API_KEY),否则 LLM 相关功能不可用。
LLM 后端配置(点击展开)
支持多种 LLM 后端,由 ModelRouter 按任务类型自动路由:
| 任务类型 | 路由目标 | 典型模型 |
|---|---|---|
| default / extraction / summary / chat | default | MiniMax M2.1 / gpt-4o-mini |
| analysis / reasoning / review / judge | reasoning | GLM 4.7 / DeepSeek R1 |
| code | code | gpt-4o |
# OpenAI(默认)
OPENAI_API_KEY=sk-...
# NVIDIA NIM(OpenAI-compatible)
NVIDIA_BASE_URL=https://integrate.api.nvidia.com/v1
NVIDIA_MINIMAX_API_KEY=nvapi-...
NVIDIA_GLM_API_KEY=nvapi-...
# OpenRouter(DeepSeek R1 等 thinking model)
OPENROUTER_API_KEY=sk-or-v1-...
# 显式覆盖(优先级最高)
LLM_DEFAULT_MODEL=...
LLM_REASONING_MODEL=...每日推送配置(点击展开)
DailyPaper 生成后可自动推送摘要到 Email/Slack/钉钉。有两种配置方式:
方式一:Web UI 配置(推荐)
在 Topic Workflow 页面的 Settings 面板中:
- 勾选 "Email Notification"
- 填入收件邮箱地址(如
you@example.com) - 运行 DailyPaper 时会自动在最后发送邮件
UI 中填写的邮箱会覆盖环境变量中的
PAPERBOT_NOTIFY_EMAIL_TO。 所有配置项(LLM/Judge/数据源/邮箱等)会自动持久化到浏览器 localStorage,刷新页面不会丢失。
方式二:环境变量配置
# 总开关
PAPERBOT_NOTIFY_ENABLED=true # 是否启用推送(必须为 true 才能发送)
PAPERBOT_NOTIFY_CHANNELS=email,slack # 启用的推送渠道(逗号分隔)
# Email (SMTP) — 必须配置才能发送邮件
PAPERBOT_NOTIFY_SMTP_HOST=smtp.qq.com # SMTP 服务器地址
PAPERBOT_NOTIFY_SMTP_PORT=587 # SMTP 端口(587=STARTTLS, 465=SSL)
PAPERBOT_NOTIFY_SMTP_USERNAME=your@qq.com # SMTP 登录用户名
PAPERBOT_NOTIFY_SMTP_PASSWORD=your-auth-code # SMTP 密码或授权码
PAPERBOT_NOTIFY_SMTP_USE_TLS=true # 是否使用 STARTTLS(端口 587 时为 true)
PAPERBOT_NOTIFY_SMTP_USE_SSL=false # 是否使用 SSL(端口 465 时为 true)
PAPERBOT_NOTIFY_EMAIL_FROM=your@qq.com # 发件人地址
PAPERBOT_NOTIFY_EMAIL_TO=recipient@example.com # 默认收件人(可被 UI 覆盖)
# Slack
PAPERBOT_NOTIFY_SLACK_WEBHOOK_URL=https://hooks.slack.com/...
# 钉钉(支持签名验证)
PAPERBOT_NOTIFY_DINGTALK_WEBHOOK_URL=https://oapi.dingtalk.com/robot/send?access_token=...
PAPERBOT_NOTIFY_DINGTALK_SECRET=SEC...
# DailyPaper 定时任务(ARQ Worker)
PAPERBOT_DAILYPAPER_ENABLED=true
PAPERBOT_DAILYPAPER_CRON_HOUR=8
PAPERBOT_DAILYPAPER_CRON_MINUTE=30
PAPERBOT_DAILYPAPER_NOTIFY_ENABLED=true
PAPERBOT_DAILYPAPER_NOTIFY_CHANNELS=email,slackQQ 邮箱配置示例:
- 登录 QQ 邮箱 → 设置 → 账户 → POP3/SMTP 服务 → 开启
- 生成授权码(不是 QQ 密码)
- 设置
SMTP_HOST=smtp.qq.com,SMTP_PORT=587,SMTP_USE_TLS=true
Gmail 配置示例:
- Google 账号 → 安全性 → 两步验证 → 应用专用密码
- 设置
SMTP_HOST=smtp.gmail.com,SMTP_PORT=587,SMTP_USE_TLS=true
# DB 迁移(首次)
alembic upgrade head
# API 服务器
python -m uvicorn src.paperbot.api.main:app --reload --port 8000
# Web(另一个终端)
cd web && npm install && npm run dev
# CLI(可选)
cd cli && npm install && npm run build && npm start
# ARQ Worker — 定时任务(可选)
arq paperbot.infrastructure.queue.arq_worker.WorkerSettings后端非默认地址时:
- CLI:
PAPERBOT_API_URL=http://<host>:8000 - Web:
PAPERBOT_API_BASE_URL=http://<host>:8000
| 端点 | 方法 | 描述 |
|---|---|---|
/health |
GET | 健康检查 |
/api/track |
GET | 学者追踪(SSE) |
/api/analyze |
POST | 论文分析(SSE) |
/api/gen-code |
POST | Paper2Code(SSE) |
/api/review |
POST | 深度评审(SSE) |
/api/chat |
POST | AI 对话(SSE) |
/api/research/paperscool/search |
POST | 主题检索(多源聚合,支持 min_score 过滤) |
/api/research/paperscool/daily |
POST | DailyPaper 日报(LLM/Judge 启用时返回 SSE 流式,否则 JSON;支持 notify 推送) |
/api/research/paperscool/analyze |
POST | Judge + Trend 流式分析(SSE) |
/api/research/tracks |
GET/POST | 研究方向管理 |
/api/research/memory/* |
GET/POST | 记忆系统(Inbox/审核/检索) |
/api/research/papers/feedback |
POST | 论文反馈(like/dislike/save) |
/api/research/context |
POST | ContextPack 构建(含 Track Router) |
/api/sandbox/* |
GET/POST | 沙箱执行与日志 |
/api/runbook/* |
GET/POST | Workspace 文件操作与 Diff |
# 学者追踪
python main.py track --summary
python main.py track --scholar-id 1741101
# 顶会论文下载(IEEE S&P / NDSS / ACM CCS / USENIX Security)
python main.py --conference ccs --year 23
# 深度评审
python main.py review --title "..." --abstract "..."
# 声明验证
python main.py verify --title "..." --abstract "..." --num-claims 5
# Paper2Code
python main.py gen-code --title "..." --abstract "..." --output-dir ./output
# 主题检索
python -m paperbot.presentation.cli.main topic-search \
-q "ICL压缩" -q "KV Cache加速" \
--source papers_cool --source arxiv_api --source hf_daily --branch arxiv --branch venue
# DailyPaper(含 LLM + Judge + 推送)
python -m paperbot.presentation.cli.main daily-paper \
-q "ICL压缩" -q "KV Cache加速" \
--with-llm --llm-feature summary --llm-feature trends --llm-feature insight \
--with-judge --judge-runs 2 --judge-max-items 5 \
--save --notify --notify-channel emailPaperBot/
├── src/paperbot/
│ ├── agents/ # Agents(研究/代码/评审/验证/追踪)
│ ├── api/ # FastAPI 后端(SSE 流式)
│ │ └── routes/ # 业务路由(track/analyze/paperscool/sandbox/...)
│ ├── application/
│ │ ├── services/ # 统一服务(LLM/Push/...)
│ │ └── workflows/
│ │ ├── paperscool_topic_search.py # 主题检索(多源聚合 + min_score)
│ │ ├── topic_search_sources.py # 数据源注册(papers_cool / arxiv_api / hf_daily)
│ │ ├── dailypaper.py # 日报生成、LLM 增强、Judge 评分
│ │ └── analysis/ # Judge / Trend / Summarizer / Relevance
│ ├── core/ # 核心抽象(pipeline/errors/DI)
│ ├── domain/ # 领域模型(paper/scholar/influence/PIS)
│ ├── infrastructure/
│ │ ├── connectors/ # 外部数据源连接器(papers.cool / arXiv / S2)
│ │ ├── stores/ # SQLAlchemy 模型 + Alembic 迁移
│ │ └── queue/ # ARQ Worker(定时任务 + DailyPaper Cron)
│ ├── memory/ # 记忆中间件(导入/抽取/检索)
│ ├── context_engine/ # Context Engine(Track Router / 推荐)
│ ├── presentation/ # CLI 入口与 Markdown 报告渲染
│ └── repro/ # Paper2Code(Blueprint/CodeMemory/RAG/Debugger)
├── web/ # Next.js Web Dashboard
├── cli/ # Ink/React Terminal UI
├── docs/ # 项目文档
├── config/ # 配置(models/venues/subscriptions)
├── tests/ # 测试
├── asset/ # 截图 + 架构图(drawio / excalidraw)
├── main.py # Python CLI 入口
└── env.example # 环境变量模板
详细评估与可执行计划见
docs/PLAN.md
收敛重复实现(下载/抓取统一)、统一网络请求层(退避/限速/熔断)、补齐解析契约测试、日志从 print 迁移到结构化 JSON、统一多智能体 run_id/trace_id 与消息 envelope。
DB 持久化(统一主数据模型 Paper/Scholar/Event/Run)、任务队列/调度(幂等/重试/死信)、指标与告警(抓取成功率/LLM 失败率/成本)、长期记忆 MVP(Run/Episodic + Semantic Memory)。
| 文档 | 说明 |
|---|---|
docs/ROADMAP_TODO.md |
功能规划与迭代清单(参考 HF/AlphaXiv) |
docs/PLAN.md |
架构评估与重构计划 |
docs/PAPERSCOOL_WORKFLOW.md |
Topic Workflow 端到端流程与配置 |
docs/DEEPCODE_TODO.md |
Paper2Code 迭代清单 |
docs/memory.md |
记忆系统设计文档 |
docs/TOPIC_SOURCE_TEMPLATE.md |
数据源开发模板 |
pytest -qMIT











