Reader
macOS 原生 AI 阅读工作区(PDF/EPUB/TXT + AI 对话与标注)
项目简介
Reader 是一款开源的 macOS 原生 AI 阅读工作区,将书籍阅读、AI 对话、笔记标注和网页研究整合在同一界面中。用户导入 PDF、EPUB 或纯文本文件后,在原生 macOS 界面中阅读、做高亮和笔记,随时唤起 AI 对话当前选中段落、当前页面、阅读进度或全书内容,支持内联改写功能将复杂段落用简洁语言重写。数据本地优先存储,书籍、阅读进度、高亮和对话记录均保存在本地 SQLite 数据库中;可选配置 Supabase + Vercel 后端实现跨设备同步。
核心功能
-
多格式原生阅读:支持 PDF、EPUB 和纯文本文件,在 SwiftUI 构建的原生 macOS 界面中展示,PDF 使用 PDFKit 渲染,EPUB/TXT 使用自定义解析器配合 WebKit 实现流畅的电子书式阅读体验。
-
上下文 AI 对话:选中任意段落或页面后,可向 AI 提问关于该选段、当前页面、阅读进度或全书内容的问题,AI 基于实际阅读位置提供有上下文的回答,而非泛泛的总结。
-
内联段落改写:在阅读界面中直接对难以理解的段落进行改写,用清晰易懂的语言重新表达,无需切换到其他 AI 对话窗口。
-
高亮与笔记系统:在阅读过程中添加高亮标注,笔记与高亮内容以及当时的阅读上下文一并保存,形成完整的阅读记录。
-
多窗口并列布局:支持将书籍、AI 对话、词典或浏览器面板并列排布,在同一工作区内同时查看文本和 AI 分析结果,无需在应用间切换。
-
本地优先存储:书籍、进度、搜索记录、高亮和对话均存储在本地 SQLite 数据库中,即使在离线状态或后端服务不可用时,所有核心阅读功能(打开、阅读、搜索、高亮、标注)均不受影响。
-
可选私密云同步:配置自建的 Supabase 和 Vercel 后端后,可将阅读进度、标注和书籍上下文同步至私有云,数据完全由用户掌控,不经过任何第三方服务器。
技术实现
Reader 的技术架构分为三层:
Reader Core(核心层): Reader Core 是应用的核心共享模块,负责搜索、定位器、选区、标注、阅读进度和功能能力判断。所有格式适配器都在此层之上构建,核心定义了统一的接口规范,由具体格式适配器转换为对应的渲染原语。
格式适配器层:
- PDF 适配器:将 Reader Core 的操作请求翻译为 PDFKit 的固定页面渲染能力
- 流式适配器(EPUB/TXT):使用自定义 EPUB 解析器和加固版 WKWebView 实现流畅的重排版电子书阅读体验
SwiftUI 表现层: 最顶层是基于 SwiftUI 构建的原生 macOS 界面,通过 macOS 15+ 的系统特性实现沉浸式阅读体验。
数据持久化: 本地存储使用 GRDB(SQLite wrapper),所有书籍副本、进度、高亮和对话记录均以 SQLite 记录形式存储,不依赖任何第三方数据服务。
构建方式:
项目使用 XcodeGen 生成 Xcode 项目文件(已提交 .xcodeproj 文件),开发者也可自行通过 xcodegen generate 重新生成。构建命令:xcodebuild -project Reader.xcodeproj -scheme Reader -destination platform=macOS build test,需要 macOS 15+ 和 Xcode 16+。
后端架构: 可选的后端基于 Hono 框架构建,部署在 Vercel 上,数据存储使用 Supabase。AI 功能需要配置支持 OpenAI 兼容接口的 AI 服务商 API Key。
快速上手
第一步:环境准备
确保本地安装 Xcode 16+ 和 macOS 15+ 设备。
第二步:获取源码并构建
git clone https://github.com/Marvy101/reader-source.git
cd reader-source
# 使用 XcodeGen 生成项目文件(可选,已包含 .xcodeproj)
xcodegen generate
# 构建应用
xcodebuild
-project Reader.xcodeproj
-scheme Reader
-destination 'platform=macOS'
CODE_SIGNING_ALLOWED=NO
build
第三步:配置可选后端(仅当需要云同步和 AI 功能时)
参考项目根目录的 SETUP.md 创建自己的 Supabase 和 Vercel 项目,配置完成后运行:
make setup
make backend-link
make backend-dev
第四步:导入书籍并开始阅读
在应用内导入 PDF、EPUB 或 TXT 文件,选择书籍开始阅读。高亮文本后点击「Ask AI」与 AI 对话,或使用内联改写功能。
适用人群
- 学术研究者和学生:需要阅读大量 PDF 论文并与 AI 讨论研究内容,Reader 提供精准的上下文对话而非泛泛摘要。
- 技术写作者:阅读技术文档时遇到难以理解的内容,可直接在内联改写功能辅助下快速消化。
- 电子书爱好者:偏好原生 macOS 阅读体验,同时希望获得 AI 辅助阅读功能的 EPUB 和 PDF 读者。
- 隐私敏感读者:不希望阅读记录和笔记被第三方服务收集,本地优先存储模式满足隐私需求。
官方链接
- GitHub 仓库:https://github.com/Marvy101/reader-source
- 项目文档:SETUP.md(本地构建指南)、AGENT_SETUP.md(AI 辅助配置指南)、CONTRIBUTING.md
评论与建议
登录 后参与评论或提建议