Paper-Agent 2.0 是相对旧版 1.x 的一次全新重写。它保留了旧版「检索 → 阅读 → 分析 → 写作」的多智能体核心思路,但在工程实现上做了全面升级:
- 前端改为 Vue 3 + TypeScript + Vite,交互更现代、响应更快;
- 包管理统一使用
uv,一条命令即可完成 Python 依赖安装; - 论文来源从单一 arXiv 扩展到 arXiv、OpenAlex、Semantic Scholar 三源检索;
- 会话持久化改用 SQLite + 文件系统,浏览器刷新后历史线程不丢失;
- 异常重启恢复会在服务启动时对账孤儿后台任务,解除永久运行锁并保留中断审计事件;
- 实时进度基于 SSE 推送到工作台,从检索到写作每一步都可观察。
输入研究主题,实时追踪检索 → 阅读 → 分析 → 大纲 → 写作全流程进度
在浏览器中可视化配置模型 Provider 与 Agent 档位,一键测试连通性
做学术调研时,你一定经历过这些:
| 场景 | 传统方式 | Paper-Agent |
|---|---|---|
| 初步了解陌生研究方向 | 手动搜索多个来源,逐个打开论文判断相关度,耗时费力 | 从 arXiv / OpenAlex / Semantic Scholar 自动检索,按主题和约束去重、筛选、整理 |
| 论文阅读与资料积累 | 读完一篇记一篇笔记,资料散落在各处,容易丢失和重复 | 先读摘要判断相关性,再按条件下载全文、解析、切分,建立本地可检索资料 |
| 撰写领域综述 | 边读边写,反复调整结构,常常写到一半推倒重来 | 从子主题分析和全局分析生成结构化大纲,再逐节按证据写作 |
| 管理长流程任务 | 每跑一步都担心进度、状态和重启后丢失,不敢中途停下 | 会话、运行状态、阶段产物和实时进度都在工作台可见,可随时保存与恢复 |
| 控制模型成本 | 全程用一个模型档位,不清楚每个环节花了多少 token | 不同阶段使用不同模型档位,并展示实际 token 用量 |
Paper-Agent 不只是论文摘要工具,而是一个完整的 AI 研究助理——它找得到论文、读得懂全文、理得清脉络、写得出综述。
| 特性 | 一句话说明 | |
|---|---|---|
| 🔍 | 多来源论文检索 | 内置 arXiv、OpenAlex、Semantic Scholar 连接器,统一为 PaperDocument,按年份、来源、数量和排除词筛选并去重评分 |
| 📖 | 从摘要到全文的渐进式阅读 | 先读摘要判断相关性,满足条件的论文走下载 → PDF 转 Markdown → 分块 → 抽取 → 写入本地向量库;依赖不可用时保存恢复现场 |
| 🔬 | 分层研究分析 | AnalyseAgent 先按子主题逐篇分析,再做全局综合,形成研究现状、共识、争议、空白、时间演化与展望等结构化内容 |
| ✍️ | 证据约束下的综述写作 | WritingOutlineAgent 生成大纲与证据映射,WritingAgent 逐节写作、证据不足时检索补充、完成后审查并限次修改 |
| 📡 | 实时会话工作台 | SSE 实时推送检索、阅读、分析、大纲与逐节写作进度,SQLite + 文件系统持久化,刷新后历史可恢复 |
| 🎛️ | 可视化模型配置 | 在浏览器中管理 Provider 协议、API 地址、密钥与三个 Agent 档位、embedding 参数,一键测试连通性,保存即生效 |
flowchart LR
U[研究主题] --> S[SearchAgent\n生成检索计划]
S --> R[多来源检索\narXiv / OpenAlex / Semantic Scholar]
R --> RA[ReadAgent\n摘要阅读与相关性判断]
RA --> FT[全文处理\n下载 / Markdown / 分块 / 向量索引]
FT --> A[AnalyseAgent\n子主题分析与全局分析]
A --> O[WritingOutlineAgent\n生成章节与证据映射]
O --> W[WritingAgent\n逐节写作与审查]
W --> P[会话产物\n综述正文与引用]
FT -. 依赖不可用 .-> C[保存恢复现场]
C -. 修复配置后继续 .-> RA
| 层级 | 技术选型 |
|---|---|
| 运行时 | Python 3.12+、uv、Uvicorn |
| 后端 API | FastAPI、REST、Server-Sent Events(SSE) |
| 工作流 | LangGraph、TypedDict 共享状态 |
| Agent | Search、Read、Analyse、Writing Outline、Writing |
| LLM 适配 | OpenAI 兼容协议、Anthropic Messages 协议 |
| 论文来源 | arXiv、OpenAlex、Semantic Scholar |
| 全文处理 | pypdf、Markdown 转换、文本分块 |
| 向量检索 | ChromaDB |
| 会话存储 | SQLite + 本地 JSON/Markdown/向量文件 |
| 前端 | Vue 3、TypeScript、Vite、Vue Router、Lucide |
Paper-Agent/
├── main.py # FastAPI 本地启动入口
├── pyproject.toml # Python 项目元数据与依赖
├── package.json # 根目录前端快捷命令
├── config/
│ ├── model.json # 本地模型配置,不提交
│ ├── settings.example.json # 模型配置示例
│ └── system.yaml # 系统默认参数
├── front/ # Vue 3 + TypeScript 前端
│ ├── src/api/ # 会话与设置 API 客户端
│ ├── src/components/ # 工作台、状态和会话组件
│ ├── src/views/ # 会话工作台、系统设置页
│ └── vite.config.ts # 开发服务器、代理和端口配置
├── src/
│ ├── agents/ # Agent 定义、模型调用和写作工具
│ ├── api/ # FastAPI 应用与路由
│ ├── graph/ # LangGraph 主流程和各阶段节点
│ ├── llm/ # Provider 适配、配置解析和统一响应
│ ├── models/ # 会话、协议和阅读领域模型
│ ├── paper_retrieval/ # 论文模型、检索服务和来源连接器
│ ├── repositories/ # SQLite、JSON、Chroma 与阶段产物持久化
│ ├── services/ # 会话、运行、设置和工作流服务
│ └── utils/ # 日志、缓存、全文解析和分块工具
├── data/ # 本地数据库、论文缓存、会话和向量数据
├── logs/ # 运行日志
└── test/ # unittest 测试与联调辅助代码
在项目根目录执行:
uv init
uv venv --python 3.12
uv sync
npm run front:install如果你已经有可用的 Python 3.12 虚拟环境,也可以直接执行 uv sync 和 npm run front:install。
推荐通过 Web 工作台的「系统设置」页面修改和测试配置。也可以手动拷贝 config/model.example.json 为 config/model.json,至少确认:
providers中存在一个可用 Provider,并填写api_base;api_key或api_key_env能提供有效密钥;agents.default_agent已配置;embedding_profiles.default_embedding已指向可用的 embedding Provider。
uv run python main.py后端默认监听 127.0.0.1:8000,开发模式自动重载。API 文档:http://127.0.0.1:8000/docs
npm run front:dev打开 http://127.0.0.1:5173/,先进入「模型设置」测试模型,再进入会话工作台创建研究任务。
前端默认只监听本机,并代理 /api、/webui 请求到 127.0.0.1:8000。如需局域网其他设备访问:
npm run front:dev:network系统支持多模型 Provider 配置,每个 Agent 可独立指定模型档位:
- 配置主文件:
config/model.json(含密钥,不入库),示例见config/settings.example.json,系统参数见config/system.yaml
| Agent | 默认档位 | 主要职责 |
|---|---|---|
SearchAgent |
luna_agent |
从研究主题生成关键词、子主题和检索约束 |
ReadAgent |
default_agent |
阅读摘要,判断相关性并整理笔记 |
AnalyseAgent |
solar_agent |
分析子主题,并综合研究现状与趋势 |
WritingOutlineAgent |
default_agent |
生成正文大纲和证据映射 |
WritingAgent |
default_agent |
逐节写作、调用资料工具和审查修改 |
没有配置 luna_agent / solar_agent 时回退到必需的 default_agent;default_agent 缺失时配置无法工作。
支持 backend 类型:openai、openai_compat、anthropic、anthropic_compat。示例:
{
"providers": {
"my_provider": {
"backend": "openai_compat",
"api_key_env": "OPENAI_API_KEY",
"api_base": "https://api.openai.com/v1",
"extra_headers": {},
"extra_body": {}
}
}
}api_key 与 api_key_env 二选一即可。使用兼容网关时通常需要同时填写 backend、api_base 和模型名称。
config/system.yaml 主要影响阅读节点:缓存目录、连接/下载超时、最大文件大小、文本分块、向量库路径与集合名等参数均可在此调整。
加入 Paper-Agent 用户交流群,获取最新动态、使用技巧与技术讨论:
感谢 @GreatZack 对 Paper-Agent 的持续投入与核心贡献:
欢迎提交 Issue 和 Pull Request。建议贡献前先完成:
- 在
test/中补充或更新对应行为的测试; - 运行
uv run python -m unittest discover -s test -v; - 运行
npm run front:build,确保前端类型检查和构建通过; - 在 PR 描述中说明改动范围、配置影响和复现步骤。
项目地址:https://github.com/Tswoen/Paper-Agent
让论文检索更快,让研究脉络更清楚。
