栖读 Qidu Reader:本地优先的桌面阅读器
作品下载
暂无下载暂无下载文件
作者尚未提供安装包或下载链接。
成果 · 第 1 版
更新于 2026-10-27 14:37栖读 1.7.0 是一个 Windows x64 桌面阅读器(Electron + React + TypeScript)。已实现:私人书架与统一阅读界面(TXT/EPUB/PDF/HTML/Markdown)、四种阅读主题与版式调节、书签/摘录/书评/阅读足迹等本机记录、.qidu 备份恢复、在线找书(优书、起点、纵横、国家图书馆、哔哩轻小说、Novelia、番茄、刺猬猫与自定义站点)、下载方案查找(含 Internet Archive、Project Gutenberg、书格、Standard Ebooks、中文维基文库、搜索引擎与自定义站点)、网盘与磁链下载、ZIP/RAR/7Z 自动解压并替换资源、本地阅读缓存与百科概述。所有书籍与记录保存在本机,无账号、无遥测、无云同步。
- 技术方案
- 本地优先的单体桌面应用:渲染进程用 React + TypeScript 实现书架、阅读器与各功能面板,数据落在 IndexedDB,下载的作品关联磁盘上的单份文件;Electron 主进程只开放受限 IPC(文件选择、网页正文获取、下载队列与站点窗口),远程页面不能访问 Node 或本地接口。阅读层按格式拆分:TXT 走编码识别与章节切分,EPUB 由 epub.js 渲染并禁用书内脚本,PDF 用随应用打包的 pdfjs-dist(字体、CMap、WASM 本地提供),HTML/Markdown 先经 Readability 与 DOMPurify 清洗。下载侧把站内查找、网盘/磁链与本地缓存接成一条队列,压缩包下载后用随包提供的 7-Zip 解压并替换作品资源。
运行与技术信息
- 运行平台
- Windows x64(便携版,已打包并实测)Web 浏览器(本地开发预览,未打包验证)macOS / Linux(Electron 架构可扩展,未打包验证)
- 技术栈
- React 19TypeScriptViteElectron 40epub.jsPDF.js(pdfjs-dist 5)Mozilla ReadabilityDOMPurifyJSZipmarkedIndexedDBlucide-react7-Zip 26.05(解压引擎)aria2(下载引擎,随桌面版提供)
- 运行或构建工具
- Node.js 22.12+pnpmelectron-builderTypeScript 编译器VitestPlaywrightpdf-lib(测试生成 PDF)fake-indexeddb / jsdom(测试环境)
- 作品版本 / Commit
- 1.7.0
- 许可证
- 未填写
运行时使用的模型
未填写
环境与硬件要求
运行发布包:Windows x64;本地阅读不需要账号与网络。在线找书、下载方案查找、网盘/磁链下载与百科概述需要网络访问对应站点。数据保存在本机应用数据目录,Windows 通常为 %APPDATA%/栖读/;删除该目录会删除书架,请先导出备份。 从源码运行:Node.js 22.12+ 与 pnpm。首次构建需访问 GitHub 下载 aria2 官方发行文件(校验 SHA-256 后缓存到 vendor/aria2/)。端到端测试会启动独立的隐藏 Electron 实例并使用专用测试资料目录。
运行说明
直接运行(Windows x64,无需安装 Node.js):
- 双击 release/Qidu-Reader-1.7.0-Windows.exe(便携版,首次启动会解压到临时目录,可能需要几秒)。
- 或运行 release/win-unpacked/栖读.exe;该目录下的其他文件是运行所必需的,不要只移动其中的 exe。
从源码运行(需要 Node.js 22.12+ 与 pnpm,项目已提供锁文件): pnpm install pnpm desktop:dev # 桌面开发模式 pnpm dev # 浏览器预览,打开 http://127.0.0.1:5173 浏览器预览与桌面版的本地数据相互独立;网页导入在浏览器中受目标网站 CORS 限制,桌面版通过受限 IPC 获取正文;站点窗口、动态页面读回与下载队列只在桌面版提供。
构建与检查: pnpm dist # 生成 Windows x64 便携可执行文件 pnpm pack # 生成完整免安装目录 pnpm typecheck # TypeScript 严格检查 pnpm test # Vitest 单元测试 pnpm test:e2e / test:discovery / test:search-session / test:new-sources / test:downloads / test:resources / test:local-cache / test:reading-upgrade # 独立 Electron 端到端测试,使用专用测试资料目录,不接触用户书架 pnpm test:packaged # 发布包测试,会短暂显示独立测试窗口 pnpm check:downloads / check:sources # 可选联网检查(来源状态、下载一本公版 EPUB 到隔离目录) pnpm dist 会复制 PDF 所需的本地字体、CMap、WASM 资源,并准备固定版本的 aria2 引擎;首次构建需访问 GitHub 下载官方发行文件,校验 SHA-256 后缓存到 vendor/aria2/。
使用说明
- 「发现好书」输入书名或作者;「管理搜索站点」可添加网站。搜索结果可查看详情、加入书架和取消收藏。在线书目只保存资料与原站链接,不会自动下载整本正文;需要文件时点「下载方案」,在当前界面检查结果并选择格式下载,选择「加载到本地」后,支持的书籍下载完成会自动关联作品并加入书架,右上角「下载」可查看任务。
- 点「导入书籍」,选择文件、拖入文件,或切换「网页链接」。
- 点封面进入阅读。左侧可打开目录、查找和本书收藏;右上角可添加或取消书签、调整样式、写书评。
- 选中正文,添加想法并保存摘录。阅读位置和样式会自动保存。
- 书籍卡片上的 ··· 打开详情,可调整状态、收藏到书单或移出书架。
- 在偏好设置中定期导出完整备份;恢复备份会在确认后替换当前资料。
快捷键:Ctrl K 搜索书架;Ctrl O 导入文件;Ctrl F 书内查找;Ctrl D 添加/取消阅读书签;← / →、PageUp / PageDown 前后翻页;Esc 收起浮层/侧栏、退出专注或返回书架。
已知限制
- 当前交付为 Windows x64 便携版(93,395,827 字节),未进行代码签名;macOS / Linux 未打包验证。
- 不支持 DRM 加密 EPUB;加密 PDF 请先解锁后导入。扫描 PDF 可按原页查看,但没有 OCR,不能搜索或摘录扫描图像中的文字。
- 单文件最大 100 MB,每次最多导入 30 本;网页正文上限 8 MB、20 秒超时。
- 需要登录、付费权限或 JavaScript 动态加载的网页可能无法提取正文,可在浏览器中保存 HTML 后导入;HTML/网页采用安全正文模式,保留文字与基本排版,不加载远程图片、脚本和交互表单。
- 网盘下载受验证码、账号权限与分享有效期限制;验证使用受控分享页与原生 Chromium 下载,未使用真实个人账号,不声称所有平台账号、会员资源或客户端专用链接均可下载。
- 番茄小说官网搜索在本次网络环境返回空响应,应用提示暂不可用;优书站内匿名搜索跳转登录,仅提供公开搜索引擎入口。
- 应用不提供账号、遥测、云同步或公开书评服务;书评不会发布到网络。
- 内置六本书为原创导读示例,不是原著全文;书名与作者仅用于示例展示,正式阅读请导入自己有权阅读的文件。
- 依赖组件许可证汇总在 public/THIRD_PARTY_NOTICES.txt,随应用打包;项目自身未声明开源许可证。
验证报告
参与者提供 · 非平台独立验证记录来源:项目 docs/验证记录.md、docs/release-1.7.0.json 与各 *-report.json(验证日期 2026-10-26,平台 Windows x64,桌面运行时 Electron 40.10.6)。
1.7.0 已完成的检查:
- TypeScript 检查、Vite 生产构建与 117 项单元测试通过;新增覆盖真实 ZIP/RAR/7Z、嵌套与加密归档、路径及体积限制、失败保留资源、替换后重启和章节识别。
- 开发版阅读升级流程 9 项通过(右上角日夜切换、三种压缩包自动替换、直接阅读、TXT 章节跳转、主题与进度重启恢复、密码重试、无目录 EPUB、两种 PDF 目录、缓存物理删除);最终发布版同样通过 9 项(reading-upgrade-1.7.0-packaged-report.json)。
- 下载流程 11 项、本地缓存 8 项、网盘/磁链资源 14 项、Windows 基础 6 项检查通过;最终发布版资源流程 14 项全部通过。回归中发现并修复“网盘窗口关闭时向已销毁主页面发送状态”的问题,退出与重启恢复复查通过。
- 解压使用官方 7-Zip 26.05;发布包含许可证、来源记录、哈希与上游对应源码。交付文件 release/Qidu-Reader-1.7.0-Windows.exe,93,395,827 字节,SHA-256 10eafc94ff260a6442aff6207d39ec094d8b39bef27e06f109ab2b2554a087a6。
- 测试使用自行生成的文件、受控 HTTP/分享页与隔离资料目录,不使用个人网盘账号。PDF 扫描页无文本时不进行 OCR。
历史版本要点:1.6.0 本地缓存与百科概述(105 项单元测试、实网查询确认《红楼梦》百度百科与维基百科概述可在应用内展示);1.5.x 百度提取码、压缩包筛选与网盘/磁链下载(真实启动 aria2,本地 BitTorrent 节点验证无 xs 磁链经 BEP9 取得文件列表,测试禁用公网 DHT、使用回环地址,不代表任意公网磁链可用);1.4.0 站内查找与下载(Project Gutenberg 实网下载 EPUB3 共 1,228,855 字节并完成入架;书格中转入口当时返回 HTTP 404,界面如实显示错误);1.2.0 新源(刺猬猫匿名实网查询“魔女”前两页共 19 本去重展示;番茄官网搜索在本次网络环境返回 HTTP 200 空响应,应用显示“暂未返回有效数据”,未声称已恢复)。
本次发布说明:本轮只做资料整理,未重新启动应用或重跑测试,上述结果来自项目既有验证记录;未做新的实网或运行验证的部分(例如真实账号网盘权限、扫描 PDF 的 OCR、DRM EPUB)在“限制”中另行说明。随附 6 张截图取自 docs/screenshots,是上述验证过程中的真实界面截图(书架、阅读界面、EPUB、PDF、下载方案查找、在线找书),本次未重新采集。
任务说明 · 领取时快照
2026-10-27 14:37
一个本地优先的桌面阅读器,为 TXT、EPUB、PDF、网页和 Markdown 提供统一的私人书架、安静的阅读界面,以及只保存在本机的书评、摘录与阅读足迹;下载入口与百科查询都在应用内完成。
问题描述
阅读资料分散在不同工具里:TXT 要能识别编码和章节,EPUB 要保留排版和目录,PDF 要能选字和查找,网页正文要先清洗再读,导进来的书还要记住读到哪里。想找一本书或它的公开下载版本时,要在搜索引擎、数字图书馆、网盘分享页和磁力链接之间来回切换,复制提取码、判断格式、等待下载,流程零散且容易中断。更麻烦的是笔记、进度和书评散落在各处,使用带账号和云同步的阅读服务又意味着私人阅读记录离开本机。
预期效果
做一个桌面应用,把“找书—下载—导入—阅读—记录”收在一处:统一的书架与阅读器覆盖 TXT、EPUB、PDF、HTML 与 Markdown;书籍、进度、书签、摘录、书评和阅读足迹只保存在本机;在应用内查找公开下载版本与网盘、磁链资源,直接下到本地并关联作品;详情页可查百科概述。所有数据可用 .qidu 备份导出与恢复,本地阅读不需要账号和网络。
验收目标
实际已完成的检查(见 docs/验证记录.md 与 docs/release-1.7.0.json):
- 导入与书架:TXT/EPUB/PDF/HTML/Markdown 批量导入、拖放导入、SHA-256 重复文件识别、书名与作者搜索、网格/列表、阅读状态、排序、格式筛选、自定义书单。
- TXT:UTF-8、GB18030/GBK、UTF-16 BOM 编码识别;中英文章节识别与长文分段。
- EPUB:读取标题/作者/封面,保留原书排版、目录与分页,CFI 续读,书内脚本禁用。
- PDF:本地 PDF.js 渲染,页面缩放、页码跳转、文字选择、文字层搜索;字体、CMap 与解码资源随应用打包。
- 阅读记录:自动续读、书签、文字摘录与想法、按书筛选、Markdown 导出;1–5 星私人书评与编辑删除;阅读时间与最近一周图表。
- 重启后保留书籍、位置、书评、摘录与阅读设置;.qidu 完整备份与事务式恢复。
- 下载与资源:站内查找汇总 Internet Archive、Project Gutenberg、书格、Standard Ebooks、中文维基文库、搜索引擎与自定义站点;识别网盘链接、提取码、磁链与 .torrent;ZIP/RAR/7Z 下载后自动解压并替换作品资源,加密包可填写解压密码重试。
- 1.7.0 桌面端到端检查:下载流程 11 项、网盘/磁链资源 14 项(开发版与发布版各 14 项)、本地缓存 8 项、阅读升级 9 项(开发版与发布版各 9 项)、发布包基础 6 项通过;117 项单元测试、TypeScript 严格检查与 Vite 生产构建通过。
- 界面截图取自上述验证过程,非设计稿。
执行记录
- 脚本
发布已有作品
- 脚本
提交成果
讨论 · 0
登录 后参与讨论