AI 驱动的学术论文研究工作流平台
从「搜索论文」进化为「理解领域」
让 AI 成为你的研究助理 —— 自动追踪、智能分析、知识图谱、学术写作,一站式搞定!
# 1️⃣ 克隆项目
git clone https://github.com/Color2333/PaperMind.git && cd PaperMind
# 2️⃣ 配置环境变量
cp .env.example .env
vim .env # 至少填写 LLM API Key
# 3️⃣ 一键部署
docker compose up -d --build
# 4️⃣ 访问服务
# 🌐 前端:http://localhost:3002
# 📡 后端 API: http://localhost:8002
# 📚 API 文档:http://localhost:8002/docs# 1️⃣ 克隆项目
git clone https://github.com/Color2333/PaperMind.git && cd PaperMind
# 2️⃣ 一键初始化(推荐)
python scripts/dev_setup.py
# 或手动初始化:
python -m venv .venv && source .venv/bin/activate
pip install -e ".[llm,pdf]"
cp .env.example .env
vim .env # 填入 LLM API Key
python scripts/local_bootstrap.py
# 3️⃣ 启动后端
uvicorn apps.api.main:app --reload --port 8000
# 4️⃣ 启动前端
cd frontend && npm install && npm run dev
# 🌐 打开 http://localhost:5173# 在 .env 中设置密码即可启用全站认证
AUTH_PASSWORD=your_password_here
AUTH_SECRET_KEY=your_random_secret_keyPaperMind 是一个面向科研工作者的 AI 增强平台,帮你从「搜索论文」进化为「理解领域」。
| 😫 以前 | 😎 现在 |
|---|---|
| 每天手动刷 arXiv,怕错过重要论文 | 自动订阅主题,新论文推送到邮箱 |
| 读论文从摘要开始,不知道值不值得精读 | AI 粗读打分,快速筛选高价值论文 |
| 想了解领域发展,不知道从哪篇读起 | 知识图谱可视化,一眼看清引用脉络 |
| 写论文卡壳,不知道怎么表达 | 学术写作助手,润色/翻译/去 AI 味 |
| 文献综述耗时耗力,整理几百篇头大 | Wiki 自动生成,一键产出领域综述 |
「阅读→理解→重构」的完整论文工作流:
- 📝 Act 1 理解 —— 摘要 + 关键发现,厘清论文核心
- ⚡ Act 2 碰撞 —— 冲突 + 疑问,与已有知识对话
- 🔄 Act 3 重构 —— 前后对比 + 认知变化,形成新认知
- 📖 全文对照翻译 —— 段落级中英对照,支持两种模式,结果持久化(二次打开免重译)
- ⚡ 快速翻译:1-2 分钟,PyMuPDF 分段 + 并发翻译
- 📐 布局保留:3-5 分钟,PDFMathTranslate 完整排版(公式/图表保留)
💡 布局保留模式依赖 pdf2zh(
pip install ".[pdf]"已含),首次使用会联网下载翻译模型。
你的智能研究助理,自然语言交互搞定一切:
- 💬 SSE 流式对话 —— Claude 风格,实时响应
- 🔧 工具链 —— 搜索/入库/分析/生成/写作自动调度
- ✅ 用户确认机制 —— 重要操作等你点头再执行
- 📜 对话历史持久化 —— 切页面不丢上下文
- 🎯 AI 关键词建议 —— 描述研究方向 → 自动生成搜索词
从收录到精读,全流程自动化:
- 🔄 多源订阅 —— ArXiv 关键词 + CSFeeds 论文源双重抓取
- 🚫 论文去重检测 —— 避免重复处理浪费 token
- 📦 递归抓取 —— 自动延伸更早期论文
- ⚡ 并行处理 —— 粗读/精读/嵌入三管齐下
- 💾 按需下载 PDF —— 入库不下载,精读才拉取
可视化你的研究领域:
- 🌳 引用树 —— 单篇论文引用网络
- 🌐 主题图谱 —— 跨主题引用关系
- 🌉 桥接论文 —— 发现跨领域的核心工作
- 🔬 研究前沿 —— 高被引 + 高引用的热点
- 📊 共引聚类 —— 相关研究自动分组
一键生成领域综述:
- 📖 主题 Wiki —— 输入关键词,输出完整综述
- 📄 论文 Wiki —— 单篇论文深度解读
- 📊 实时进度条 —— 异步生成,自动刷新
- 📜 历史版本 —— 所有生成内容可追溯
发现你研究领域最重要的论文来源:
- 🎯 关键词订阅 —— arXiv 关键词自动追踪
- 📡 论文源订阅 —— 直接订阅 CSFeeds 热门论文
- 📬 邮件推送 —— 新论文自动发送到邮箱
- ⏰ 按主题独立调度 —— 每个主题独立抓取频率
来自顶尖研究机构的写作工具:
- 🌏 中转英 / 英转中 —— 学术级翻译
- ✨ 润色(中/英) —— 更地道的学术表达
- 🤖 去 AI 味 —— 降低 AI 检测率
- 📊 图表推荐 / 标题生成 —— 实验数据可视化建议
专注阅读,AI 随叫随到:
- 📜 连续滚动 —— IntersectionObserver 页码追踪
- 🔍 缩放/全屏/跳转 —— 键盘快捷键支持
- 🌐 arXiv 在线代理 —— 无本地 PDF 也能读
- ✨ 选中即问 —— AI 解释/翻译/总结
保护你的研究资产:
- 🔑 站点密码 —— 简单可靠,适合个人/小团队
- 🎫 JWT Token —— 7 天有效期,自动续期
- 🛡️ 全站保护 —— 所有 API 都需要认证
让 pm CLI、Claude Code / ZCode 等 AI harness 安全访问你的 PaperMind:
- 📱 设备码授权登录 ——
pm login打开浏览器确认设备码,自动签发长期令牌(类似gh auth login) - 🛡️ 细粒度权限 —— read / write scope 按 HTTP 方法强制,网页端随时创建/吊销
- 🩺 pm doctor —— 一条命令体检连通性与认证状态
灵活控制成本,按场景分配模型:
- 📊 多配置管理 —— 支持多个 LLM 提供商配置,默认使用小米 MiMo(文本)+ MiMo(视觉)
- 🔄 一键切换 —— 在设置页面随时激活不同配置
- 🎯 场景映射 —— 粗读/精读/视觉/嵌入各有独立模型配置
- 💰 成本优化 —— 每日预算守卫,自动降级控制成本
- 📈 Token 追踪 —— 所有 API 调用自动记录成本和用量
默认模型配置(小米 MiMo):
- 文本任务(粗读/精读/翻译/写作):mimo-v2-omni / mimo-v2.5-pro
- 视觉任务(图表分析/OCR):mimo-v2.5
- 降级备用:mimo-v2.5-pro
- 嵌入向量:text-embedding-v4(阿里百炼 DashScope)
# macOS / Linux:一键安装(自动识别平台,从 GitHub Releases 下载)
curl -fsSL https://raw.githubusercontent.com/Color2333/PaperMind/main/scripts/install-pm.sh | bash
# Windows(PowerShell):
irm https://raw.githubusercontent.com/Color2333/PaperMind/main/scripts/install-pm.ps1 | iex或到 Releases 手动下载对应平台二进制
(pm-darwin-arm64 / pm-darwin-x86_64 / pm-linux-x86_64 / pm-windows-x86_64.exe),
放到 PATH 目录并 chmod +x。
macOS 首次运行如被 Gatekeeper 拦截:
xattr -d com.apple.quarantine pm
开发者也可以从源码安装:pipx install /path/to/PaperMind,或本地构建单文件二进制
bash scripts/build-pm-cli.sh(输出 dist/pm)。
# 设备码授权(推荐):浏览器确认设备码后自动完成
pm login --server https://pm.your-domain.com
# 兜底:网页「设置 → API 令牌」创建后粘贴(SSH 等无浏览器环境)
pm login --token pmt_xxx
pm whoami # 查看身份与权限
pm doctor # 连通性体检
pm logout # 吊销令牌并清除本地配置配置存于 ~/.config/papermind/config.toml(权限 0600),也可用环境变量 PAPERMIND_SERVER_URL / PAPERMIND_TOKEN 覆盖。
| 凭证 | 来源 | 权限 |
|---|---|---|
| JWT(7 天) | 网页密码登录 | 全部,含令牌管理 |
API 令牌 pmt_ |
网页创建 / 设备码签发 | scope 强制:GET → read,变更操作 → write;仅能吊销自己 |
数据库只存令牌 SHA-256 哈希,明文仅创建时返回一次;令牌管理接口(创建/列表/吊销他人)仅限网页会话。
服务端 /mcp 同时接受静态 MCP_AUTH_TOKEN 与数据库 API 令牌:
# 用 pm login 签发的令牌接入 Claude Code
claude mcp add --transport http papermind https://pm.your-domain.com/mcp \
--header "Authorization: Bearer pmt_xxx"┌─────────────────────────────────────────────────────────────┐
│ Frontend (React 18) │
│ Agent │ Papers │ Wiki │ Graph │ Brief │ Collect │ Writing │
│ 路由懒加载 · Vite 代码分割 · SSE 跨页保活 │
└─────────────────────────┬───────────────────────────────────┘
│ REST + SSE (JWT Auth)
┌─────────────────────────┴───────────────────────────────────┐
│ FastAPI Backend │
├─────────────┬─────────────┬─────────────┬───────────────────┤
│ Agent │ Pipeline │ RAG │ Graph / Wiki / │
│ Service │ Engine │ Service │ Brief / Write │
├─────────────┴─────────────┴─────────────┴───────────────────┤
│ Global TaskTracker (异步任务 + 实时进度) │
│ 右下角悬浮面板 · 分类图标 · 完成历史 │
├─────────────────────────────────────────────────────────────┤
│ Unified LLM Client (连接复用 + TTL 缓存) │
│ Xiaomi(MiMo) │ Zhipu │ OpenAI │ Anthropic │
├─────────────────────────────────────────────────────────────┤
│ SQLite (WAL) │ ArXiv API │ Semantic Scholar API │
└─────────────────────────────────────────────────────────────┘
│
┌────────────┴────────────┐
│ APScheduler Worker │
│ 按主题独立调度 │
│ 每日简报 / 每周图谱 │
└─────────────────────────┘
| 变量 | 说明 | 默认值 |
|---|---|---|
LLM_PROVIDER |
LLM 提供商 (xiaomi/zhipu/openai/anthropic) | xiaomi |
XIAOMI_API_KEY |
小米 MiMo API Key | — |
ZHIPU_API_KEY |
智谱 API Key | — |
OPENAI_API_KEY |
OpenAI API Key | — |
ANTHROPIC_API_KEY |
Anthropic API Key | — |
LLM_MODEL_SKIM |
粗读模型 | mimo-v2-omni |
LLM_MODEL_DEEP |
精读模型 | mimo-v2.5-pro |
LLM_MODEL_VISION |
视觉模型 | mimo-v2.5 |
LLM_MODEL_FALLBACK |
降级备用模型 | mimo-v2.5-pro |
EMBEDDING_MODEL |
Embedding 模型 | text-embedding-v4 |
EMBEDDING_API_KEY |
Embedding API Key(阿里百炼 DashScope) | — |
EMBEDDING_BASE_URL |
Embedding 服务地址 | https://dashscope.aliyuncs.com/compatible-mode/v1 |
EMBEDDING_DIMENSIONS |
Embedding 向量维度 | 1024 |
SITE_URL |
生产域名 | http://localhost:3002 |
AUTH_PASSWORD |
站点密码(留空禁用认证) | — |
AUTH_SECRET_KEY |
JWT 密钥 | — |
COST_GUARD_ENABLED |
成本守卫 | true |
DAILY_BUDGET_USD |
每日预算 | 2.0 |
OPENALEX_EMAIL |
OpenAlex 邮箱(用于 API) | — |
IEEE_API_ENABLED |
启用 IEEE 搜索 | false |
IEEE_API_KEY |
IEEE API Key | — |
SEMANTIC_SCHOLAR_API_KEY |
Semantic Scholar API Key | — |
完整配置见
.env.example
🔐 认证
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /auth/login |
登录获取 JWT Token |
| GET | /auth/status |
查询认证状态 |
🤖 AI Agent
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /agent/chat |
Agent 对话(SSE 流式) |
| POST | /agent/confirm/{id} |
确认工具执行 |
| POST | /agent/reject/{id} |
拒绝工具执行 |
📄 论文管理
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /papers/latest |
论文列表(分页) |
| GET | /papers/{id} |
论文详情 |
| POST | /pipelines/skim/{id} |
粗读 |
| POST | /pipelines/deep/{id} |
精读 |
| POST | /pipelines/embed/{id} |
生成嵌入向量 |
🕸️ 知识图谱
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /graph/citation-tree/{paper_id} |
引文树 |
| GET | /graph/citation-detail/{paper_id} |
引用详情 |
| GET | /graph/overview |
全局概览 |
| GET | /graph/bridges |
桥接论文 |
| GET | /graph/frontier |
研究前沿 |
| GET | /graph/cocitation-clusters |
共引聚类 |
| GET | /graph/timeline |
时间线 + seminal |
| GET | /graph/survey |
领域综述 |
📚 Wiki
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /wiki/paper/{paper_id} |
论文深度解读 |
| GET | /wiki/topic |
获取主题 Wiki |
| POST | /tasks/wiki/topic |
生成主题综述 |
| GET | /generated/list |
已生成内容列表 |
📡 订阅源(CSFeeds)
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /cs/categories |
arXiv CS 分类列表 |
| GET | /cs/feeds |
列表订阅源 |
| POST | /cs/feeds |
订阅论文源 |
| POST | /cs/feeds/{category_code}/fetch |
手动触发抓取 |
| 类别 | 优化策略 |
|---|---|
| 首屏 | KaTeX 字体 CDN + PDF Worker CDN + 重型库懒加载(-2.7MB) |
| 前端 | 路由懒加载 · useMemo/useCallback · React.memo · RAF batching |
| 数据库 | SQLite WAL · 批量聚合查询 · Citation 索引 |
| 图谱 | list_lightweight 轻量加载 · 90% 内存削减 |
| LLM | 连接复用 · 30s TTL 缓存 · 指数退避重试 |
| 任务 | 统一进度回调 · 粒度化进度报告 · 分类图标 |
性能优化
- KaTeX 字体 + PDF Worker 改为 CDN,首屏 -2.7MB
- ForceGraph2D / react-pdf / react-markdown 懒加载
- topic_stats N+1 查询改为批量聚合(401次→4次)
- Citation 字段加索引,图谱查询加速
- graph_service 全量加载改为轻量模式,内存 -90%
- HTTP 客户端复用 + LLM 指数退避重试
- 50+ 处 index-as-key 修复
任务系统重构
- 统一进度回调签名(message, current, total)
- TaskManager 合并到 global_tracker
- fetch / cs_feed / weekly / figure_analysis 进度粒度增强
- GlobalTaskBar 改为右下角悬浮面板(分类图标/颜色/历史)
- ActiveTask 增加 category 字段
其他
- CSFeeds 论文订阅源功能完善
- Agent 对话体验优化
- 前端状态管理优化,减少无效重渲染
新功能
- 🔐 站点密码认证 —— JWT Token 保护所有 API
- 📄 PDF Token 认证 —— 文件访问也安全
- 🔄 SSE 认证 —— Agent 对话等 SSE 请求携带认证
Bug 修复
- 修复 TypeScript 编译失败
- 恢复 GZipMiddleware 响应压缩
- 恢复 logging_setup 统一日志格式
查看历史版本
# 后端 lint
python -m ruff check .
# 前端类型检查
cd frontend && npx tsc --noEmit
# 数据库迁移(详见 infra/migrations/README.md)
alembic revision --autogenerate -m "描述" # 修改模型后生成迁移
alembic upgrade head # 新库建表
alembic stamp head # 现有库纳入管理(不执行 DDL)- awesome-ai-research-writing — 写作助手 Prompt 模板来源
- ArXiv — 开放论文平台
- Semantic Scholar — 引用数据来源
- CSFeeds — 论文源订阅服务
- learn-claude-code — Agent Harness 工程体系启发,s01-s12 渐进式解构:Loop → Tools → Planning → Subagents → Skills → Context → Tasks → Background → Teams → Protocols → Autonomous
- PaperSenseMaking — 论文阅读「阅读→理解→重构」工作流设计灵感