PaperScholar
在 VSCode 里读论文,顺便和 AI 聊聊。
Paper + Code,深度集成,开箱即用。
功能 ·
快速开始 ·
架构
缘起
这个项目的灵感来自朋友做的一款论文阅读工具,以及社区中其他优秀的同类工具。它们让我看到「AI + 论文阅读」的可能性,但作为 VSCode 重度用户,我更希望这一切发生在我最熟悉的编辑器里——不用切换窗口,不用打开浏览器。
于是有了 PaperScholar:按照自己的使用习惯重新设计,以 VSCode 插件的形式落地。 它不追求面面俱到,只做好我真正需要的几件事。
功能
|
|
| PDF 阅读 |
连续滚动、高 DPI 渲染、文本选择、高亮与批注 |
| AI 助手 |
侧边栏对话,自动读取论文全文(含页面图片),多模型支持 |
| 三层笔记 |
批注 → PDF 内高亮;论文笔记 → 关联论文的 .md;独立笔记 → 跨论文知识沉淀 |
| 标签管理 |
三层嵌套标签树,论文可属于多个标签 |
| 代码关联 |
远程仓库自动 clone(支持 SSH/HTTPS/DevOps),本地路径符号链接 |
| 灵活导入 |
arXiv / DOI / URL / 本地文件(PDF、Markdown、HTML、TXT) |
快速开始
git clone <repo>
cd paper-scholar
npm install
npm run build # 编译 + 复制 sql-wasm.wasm
# F5 启动 Extension Development Host
AI 默认使用 Claude Code CLI(本地环境,无需 API Key)。
也支持 Claude API、OpenAI 兼容接口、Ollama,在设置中切换。
配置
在 VSCode 设置中搜索 paperScholar:
paperScholar.ai.provider — AI 提供商(claude-code / claude-api / openai / ollama)
paperScholar.ai.model — 模型名称
paperScholar.ai.apiKey — API Key(仅 claude-api / openai 需要)
架构
src/
├── extension.ts # 入口:命令注册、消息路由
├── db/index.ts # sql.js SQLite,数据存于 globalStorage
├── services/
│ ├── ai.service.ts # AI 提供商抽象层
│ ├── paper.service.ts # 论文 / 笔记 / 标签 / 代码
│ ├── import.service.ts # arXiv / DOI / URL 导入
│ └── vision.service.ts # PDF → 图片(视觉模型转换)
├── views/
│ └── UnifiedTreeView.ts # 侧边栏:标签 → 论文 → 笔记 / 代码
├── webview/
│ ├── PdfViewer.ts # PDF 阅读器(Webview)
│ └── AiSidebarView.ts # AI 聊天(WebviewView)
├── commands/ # 命令处理(导入、搜索)
└── utils/
├── paper-helpers.ts # 工具函数
├── pdf-extract.ts # PDF 文本提取 + multimodal 解析
└── nonce.ts # Webview CSP nonce
测试
npm test # 全部测试(317 tests)
npx jest db # 仅数据库测试
npx jest integration # 仅集成测试
开发方式
这个项目完全使用 vibe coding 方式完成,通过 mimo-v2.5 和 qwen3.7 协作开发。
致谢
感谢那些让「AI 辅助论文阅读」成为可能的先行者们。这个项目站在你们的肩膀上,只是换了一个更顺手的外壳。