reader3
让 AI 陪你一起读 EPUB 的轻量级本地阅读器
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
让 AI 陪你一起读 EPUB 的轻量级本地阅读器
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一个场景:深夜,你下载了一本.epub 电子书,想和 AI 一起读。但文件动辄几百页,全选复制粘贴给 AI?那画面太美不敢看。karpathy/reader3 正是为这个场景而生的。
这个项目来自 AI 领域传奇人物 Andrej Karpathy——特斯拉 Autopilot 前负责人、李飞飞的学生、GPT-2 论文合著者之一。他在 X 上分享了如何用 LLM 一起读书的想法,随即引发了大量关注。这个 Reader3 便是那次分享的具体实现。
Karpathy 本人毫不掩饰地说:这个项目 90% 是 vibe coding(凭直觉写的),他不会提供任何支持,代码是临时的,库已死("libraries are over"),让 AI 去改就行了。这种洒脱背后,是一种新的编程哲学——在 AI 时代,代码不再需要完美,只需要表达意图。
reader3 的功能简洁到极致:本地 EPUB 阅读器,以章节为单位,界面左侧是目录导航,右侧是阅读区域,每章文字都可以一键复制粘贴到任意 LLM 对话窗口。
具体流程:
uv run reader3.py book.epub,自动解析并生成 _data 数据目录uv run server.py,启动本地 Web 服务localhost:8123,进入个人书库书库界面会列出所有已导入的书籍,显示书名、作者、章节数。点击书籍即可开始逐章阅读,章节切换流畅,排版基于 HTML 保留原始格式。
整个项目代码量极小(约 300 行核心逻辑),技术选型一目了然:
| 组件 | 技术 | 作用 |
|---|---|---|
| 核心解析 | ebooklib + BeautifulSoup4 | 解析 epub 结构、提取章节内容 |
| Web 框架 | FastAPI | 提供 REST API + 静态文件服务 |
| 模板引擎 | Jinja2 | 渲染书库和阅读界面 |
| 数据持久化 | Python pickle | 将解析后的书籍序列化为二进制缓存 |
| 包管理 | uv | 快速环境搭建(替代 pip) |
解析逻辑非常精妙:EPUB 本质是一个 zip 包,内含 HTML/XHTML 文件和资源图片。reader3 用 ebooklib 解析元数据(书名、作者、出版日期),用 BeautifulSoup 清洗 HTML(去掉脚本、注释、样式干扰),最后构建「书脊(Spine)」——即线性阅读顺序。
适合的场景:
局限性:
_data 目录reader3 的出现,折射出一个趋势:在 AI 时代,「读书」这件事正在被重新定义。过去我们需要完整读完一本书才能与他人讨论;现在,你可以带着 AI 一起读,AI 帮你提炼每章要点,你来决定深入哪些部分。这不是偷懒,而是人机协作阅读的新范式。
Karpathy 用 300 行代码告诉我们:工具不需要复杂,只需要恰好解决问题。