Lumina — Local AI Reading Companion

Local AI Reading Companion · AI 伴读
让阅读速度提升 5 倍,而理解深度提升 10 倍。

macOS 14+ · Windows 10/11(P0) · Polyform Noncommercial · Latest Release

功能特性 · 界面预览 · 最近更新 · 下载安装 · 开发者

--- ## 功能特性 - **本地优先** — 默认 Ollama 本机跑通导入 → 摘要 → 深聊,书与笔记数据不出机 - **多格式书库** — 电子书 PDF / EPUB / MOBI / AZW / AZW3 / FB2,办公文档 DOCX / ODT / RTF,网页 HTML,以及 Markdown / TXT;也可粘贴公开网址(分号批量)抓成离线书 - **语义分段** — 识别序言/章节角色,不从句中切断;可手动调界或整书重新分段 - **扫描 PDF OCR** — 默认本机 RapidOCR;可在设置中配置 OpenAI 兼容视觉 API,配置完整时云端优先 - **书架详览** — 智能集合(最近 / 摘要进度 / 分段中 / 导入失败 / 阅读进度 / 分类 / 收藏)+ 网格或列表 - **沉浸式阅读** — 顶栏管书、底栏管段列表 / 笔记 / 深聊 / 显示,摘要 ↔ 原文一键切换 - **听文本** — 听总结 / 听详细 / 听原文,迷你条连播;使用系统离线神经语音 - **书内查找** — **⌘F**(Windows:Ctrl+F)搜该书原文,命中后跳段并高亮 - **深度理解** — 古文、外文自动翻译;段级 citation 可溯源;可选联网增强 - **读书记忆** — 跨书笔记 + **⌘K** 全局搜索,随时找回读过的内容 - **资讯** — RSS 同步、结构化简报与精读深聊 - **永不卡住** — 导入、分段、摘要在后台进行;长书导入时仍可开其他书、资讯与设置 - **可扩展** — 可选 OpenAI / OpenRouter / Cursor 兼容 API;整书摘要导出 Markdown - **两档摘要** — 每个 API 资源可分别配置正常/高级模型;点「开始摘要」即正常档,点箭头可选高级(需确认);高级未配置时自动回退正常模型 --- ## 界面预览 macOS 主界面(Windows 功能对等,交互为 WinUI 惯用导航)。 | 书库 | 阅读器 | |:---:|:---:| | 书库:智能集合与书架网格 | 阅读器:段摘要、听与深聊 | | 智能集合 + 网格书架 | 摘要阅读 · 听 · 深聊 | | 资讯 | 设置 | |:---:|:---:| | 资讯:今日简报与精读 | 设置:引擎、听书与 API 资源 | | RSS 简报与精读 | 引擎、听书与 API 资源 | --- ## 最近更新 ### v1.5.1 — 粘贴文本导入 相对 v1.5.0 的主要变化: - **书库**:可以把全文粘贴成一本纯文本,再走现有分段与摘要。书名取第一行(超过 80 字截断);重复正文沿用覆盖 / 跳过询问;空白或超过 15MB 不导入 - **阅读**:已在最后一段时再按段头右箭头或 `→`,阅读区短暂提示「书籍已读完」 - **听**:连播自然走到全书末尾后,再朗读一句「书籍已播完」 - **网址导入**:安装包带上 justext 停用词表,避免抽正文时找不到文件 - **工程治理**:版本同步至 1.5.1 ### v1.5.0 — 从网址导入 相对 v1.4.8 的主要变化: - **书库**:粘贴公开 `http`/`https` 网址导入为离线书;英文分号可一次多条;重复网址沿用覆盖 / 跳过询问 - **正文**:只保存页面可读正文,不登录、不执行脚本、不收下直链文件 - **稳定性**:缺少 trafilatura 配置或 TLS 中途断开时会补齐配置并重试,不再把整次导入标成失败 - **工程治理**:版本同步至 1.5.0 ### v1.4.8 — 非中文按词计字 相对 v1.4.7 的主要变化: - **字数**:英文等空格分词语言按词计 1,汉字、假名、谚文仍逐字;空格和标点不计。分段预算与「约 N 字」不再把英文按字母拆碎。切点仍是 Unicode 码位 - **模型候选**:正常/高级模型可用分号写多个,按顺序尝试后再换下一个资源 - **书架**:智能集合去掉「收藏」;收藏动作和「收藏优先」排序仍在 - **资讯**:每天本地时间 09:00 后台同步 RSS - **工程治理**:切分算法号 17;版本同步至 1.4.8 ### v1.4.7 — 原文搜索命中列表与独立索引 相对 v1.4.6 的主要变化: - **原文搜索**:macOS 先展示命中列表再点选定位;底栏可返回结果 / 上一条 / 下一条;搜完不自动跳第一条 - **检索性能**:独立原文索引后台回填;索引就绪后大书首屏检索更快;启动回填正确注入 DB 连接 - **正式发布仅 macOS**:Windows 安装包与 Release CI 停用(源码仍在 `apps/windows`) - **工程治理**:版本同步至 1.4.7;badcase catalog 同步 ### v1.4.1 — 阅读体验首次流畅版本(重要里程碑) 相对 v1.4.0 的主要变化: - **阅读交互**:段头左右箭头翻段;`↑`/`↓`/`PgUp`/`PgDn` 连续滚动;键盘与触控板路径统一,输入框/弹层避让 - **可配置快捷键(macOS)**:设置可改键、冲突检测、恢复默认;摘要/分段菜单快捷键只打开 popover - **段顶栏信息**:左上 `章名 · 段 N/总 · 标题`;「原文 · 约 N 字」;总结句墙文质量门 - **工程治理**:版本同步至 1.4.1;badcase catalog 同步 ### v1.4 — 性能全方位优化 相对 v1.3 的主要变化: - **阅读器回退简单路径**:macOS 开书一次拉全量 slim catalog + 主区全书 `ForEach`,去掉有界窗口/滞后锚点带来的视口抖动与骨架死锁风险 - **开书与进度**:Windows 开书先恢复本地进度再 around 拉窗,避免夹到最近段写脏进度;开书贴段顶;慢开书 / 慢段列表打耗时告警 - **Cursor 官方 SDK**:按需下载到用户数据目录,不进 sidecar;设置可装 SDK 并探测连通性 - **摘要质量**:加强总结句冗余/混语碎片门禁;UI 分区「主要内容」仅改可见文案 - **工程治理**:badcase catalog 与 never-freeze-ui / summary-ui-label-only 规则同步;版本同步至 1.4.0 ### v1.1 — 阅读进度门闩、摘要衔接与打开方式 相对 v1.0.2 的主要变化: - **阅读进度门闩**:搜索 / 段列表 / citation / 笔记 / ⌘K 跳转不写进度;非阻塞条可返回上次进度或留在此处;不操作则再连续经过 3 个不同段后落库 - **摘要衔接与字数门**:总结句承接最近前文(不串事实);总结合计约 50–200 字,明显偏离自动重生 - **macOS 打开方式**:Finder「打开方式」/ 双击导入支持格式;不支持格式立即提示;已运行时再开文件有响应(ad-hoc 签名便于设为默认) - **图片型 EPUB OCR**:扫描页 EPUB 按 spine 逐图 OCR,不再只导入目录后误报成功 - **分段硬地板**:不足 200 字的空壳/短段可向后合并;目标段长打包仍不得跨章硬凑 - **永不卡住**:摘要续跑与段摘要预取不得饿死 `/health`;大库 catalog 走缓存路径 ### v1.0.2 — 启动不卡死、原文契约与顶栏书名 相对 v1.0.1 的主要变化: - **启动不卡死**:大书库开机时 `recover_on_startup` 不再阻塞 lifespan;`/health` 可先响应,避免客户端超时杀进程后连环 `database is locked` - **段详情契约**:`GET .../segments/{idx}` 的 `bullet_labels` 始终为 JSON 数组(不再把库内 TEXT 原样返回),修复切换原文时「原文加载失败」 - **阅读顶栏书名**:中间显示当前书名(长名单行省略);点击返回书架,与左侧书架入口并存(v1.0 仅 macOS) - **手动调界**:点击只预览新分界,底栏「保存」才落库并重新摘要这两段 ### v1.0.1 — 引导、段列表结构树与分段更稳 相对 v1.0 的主要变化: - **首次引导**:在真实界面上逐项高亮(可跳过),结束后给出使用指南;设置「关于」与 macOS Help 可再打开,不重跑 spotlight - **段列表结构树**:按原文标题层级嵌套(不限层数);分组后段行不再重复章名;无结构则平铺 - **手动调界**:点相邻两段拼接原文中的某一处预览新分界(吸附句末),点「保存」才落库;取消不保存;不再拖动滑块 - **分段**:同一章内每段不少于 200 字,章标题并入本章正文;导入超时按页数/文件体积计算,硬顶 8 小时 - **书架排序**:字段旁可选升序/降序(标题默认 A→Z,其余默认新→旧) - **听摘要**:单击扬声器听简要;听完整必须点始终可见的下拉箭头,不再依赖长按 ### v1.0 — 正式版:听读、查找与永不卡住 首个正式版本。相对 v0.10 的主要变化: - **听文本**:阅读器顶栏听总结 / 听详细 / 听原文,迷你条连播与倍速;音色用系统已安装的神经语音(设置里可打开系统下载页),不走云端 TTS - **书内原文搜索**:顶栏 / ⌘F 只搜该书原文,命中后切到原文模式并高亮;与 ⌘K 跨书搜索分开 - **阅读顶底栏**:点空白同步显隐顶栏(书架、摘要/原文、听、搜索、摘要、分段、导出、导入)与底栏(段列表、深聊、笔记、显示);正文不位移。五档字号 + 四色纸只涂阅读面 - **永不卡住**:大 TXT / 扫描件的分段放到 sidecar 子进程;导入显示字数或页进度,超时会失败并写明原因;一本分段中仍能打开其他已就绪的书 - **结构分段**:章界硬切、未超限的自然段不劈开;装饰线粘连的章名也能切开;导入可选正常/高级分段 - **摘要更稳**:原文自称「我」时摘要保留第一人称;输出跟目标语言,不串假名/西里尔/英语整句;点「开始摘要」即正常档,点旁边箭头才展开高级 - **书架**:摘要维增加「分段中」「导入失败」;支持无 DRM 的 AZW / AZW3;卡片封面与阅读进度排序 - **引擎**:退出应用会关掉 `lumina-core`;设置始终可查看状态并停止 / 重启 ### v0.10 — 阅读进度、摘要队列与操作更稳 - **阅读进度**:退出或切书后停在离开时那一段的开头;书架显示「在读 · n/m 段」;两本进度互不串味 - **阅读操作**:点翻段 / 复制 / 重新摘要不再误开关工具栏;翻段按钮钉在最右侧;工具栏「段列表」会钉住侧栏 - **摘要队列**:全书索引不再抢段摘要槽位;阅读面也能看到进行中 / 排队,不再出现「0 进行中 · n 排队」 - **书架**:右键即可整书重新分段;打开书不再弹出笔记 cancelled;周期性按钮 tooltip 已去掉 - v0.10.1:release 固定 CPython 3.11;修复 Windows 设置页缺分号 - v0.10.2:Lumina.app 体积上限与 sidecar 对齐(520MB);修复 WinUI 阅读器编译(翻段快捷键 / 调界滑块) ### v0.9 — 语义分段、书架与阅读更稳 - **语义结构分段**:序言与正文分开,短序不再并进第一章;在句末切开,不从句子中间截断 - **书架详览**:智能集合 + 网格/列表;阅读中侧栏只保留最近打开,整理与沉浸阅读分开 - **手动调界 / 重新分段**:拖动相邻段分界只重摘要这两段;整书可按 200–8000 字重新分段 - **两档摘要 + 分层索引**:正常/高级模型;摘要质检避免把原文「我」写成阅读助手;深聊用分层 rollup - **更多格式与编码**:FB2 / DOCX / ODT / RTF / HTML / Markdown;GB18030 TXT;Identity-H CID PDF 正确抽中文 - **阅读进度**:跨段即时保存,退出不丢;按视口恢复;未读完不标已读完;布局抖动不跳回首页 - **引擎身份**:升级后自动换掉旧 sidecar,不再因切分版本相同而复用旧进程;OCR / 联网搜索设置重启后保留 ### v0.8 — Windows 与 macOS 功能对等 - Windows 补齐资讯、Ctrl+K、笔记、Markdown 导出、完整设置与任务管理 - 阅读器结构化摘要、笔记抽屉、选区提问、深聊 token / 耗时 / TPS - WinUI 惯用 NavigationView / 工具栏 / 抽屉,不复刻 Mac 顶底浮栏 - v0.8.1:修复 EPUB spine 解析 ### v0.7 — Windows P0 与阅读器滚动修复 - WinUI 自包含发布(ZIP)与跨平台 `lumina-core` 适配 - 修复 macOS 阅读器跳转在滚动抑制期间丢失 ### v0.6 — 更高可用的伴读体验 - **SQLite 跨线程串行化**,导入写入与 API 读不再竞态报错 - 摘要 **默认不自动开始**(设置可开),导入只分段,后台更可控 - 阅读器 **命中区域收窄**、书库侧栏可见性策略,误触更少 - 深聊 **token / 耗时 / TPS** 归因展示,云端与本地调用更可观测 - 可配置 Prompt、书库批量摘要启停(承接 v0.5 后的管控能力) ### v0.5 — 云端摘要、多书并发与阅读体验升级 - **OpenRouter / OpenAI 兼容**云端摘要,设置热更新与 JSON 解析更鲁棒 - **多书并发槽位等待**,Ollama 满负载时排队而非误切云端;摘要进度 Banner 实时展示 - 段列表**瘦 API + 按需 hydrate**,大书 reopen 更快;选区**发送到深聊** - 书库**分类筛选**、导出重构(系统保存面板 + 中文文件名);OCR 发布校验增强 --- ## 普通用户 · 下载即用 > 你**不需要**安装 Python、uv、Xcode 或任何命令行工具。下载安装包,拖进「应用程序」即可。 ### 下载 | 平台 | 要求 | 下载 | |------|------|------| | macOS 14+(Apple Silicon / Intel) | 约 250 MB 安装包(安装后约 500 MB)+ 首次 AI 模型 ~3 GB | **[GitHub Releases 下载 DMG](https://github.com/hezhenghui7338/Lumina/releases/latest)** | Release 页提供 **Lumina-*-macOS.dmg** / **Lumina-*-macOS.zip**(GitHub Actions 构建)。Windows 安装包当前不发布(源码仍在 `apps/windows`,发布链路已停用)。 ### 安装(两步) 1. 打开下载的 **`.dmg`**,将 **Lumina** 拖入 **Applications(应用程序)** 文件夹 2. 从启动台或应用程序文件夹打开 **Lumina** ### 首次打开:「无法验证 / 可能危害 Mac」 这是 **正常现象**。当前 Release 由 GitHub Actions 自动构建,尚未经过 Apple 付费开发者签名与公证,macOS 会对**任何**未公证的本机应用显示此提示,**不代表有病毒**。 任选一种方式即可打开(只需操作一次): **方法 1(推荐)** 1. 在「应用程序」里找到 **Lumina** 2. **按住 Control 键点击**(或右键)→ 选 **「打开」** 3. 弹窗中再点 **「打开」** **方法 2** 1. 先双击 Lumina(会被拦截) 2. 打开 **系统设置 → 隐私与安全性** 3. 向下滚动,找到 **「已阻止使用 Lumina」** 或类似提示 4. 点 **「仍要打开」** **方法 3(熟悉终端时)** ```bash xattr -cr /Applications/Lumina.app ``` 然后照常双击打开。 > 后续版本若加入 Apple 开发者签名与公证,此提示将不再出现。 ### 首次使用 打开 App 后按屏幕引导操作即可: 1. **Lumina 引擎** — 自动启动,无需配置 2. **本地 AI(Ollama)** — 一键打开 [ollama.com/download](https://ollama.com/download) 安装;安装后在 Ollama 里搜索并下载 **qwen3.5:4b**(约 3.4 GB,仅首次) 3. **导入书籍** — 点「导入」,选择文件即可 当前支持的导入格式: | 类型 | 扩展名 | |------|--------| | 电子书 | `.pdf` `.epub` `.mobi` `.azw` `.azw3` `.fb2` | | 办公文档 | `.docx` `.odt` `.rtf` | | 网页 | `.html` `.htm` `.xhtml` | | 文本 | `.txt` `.text` `.md` `.markdown` `.mdown` `.mkd` `.log` | > **说明**:Ollama 是免费的本机 AI 运行时(类似本地版 ChatGPT 引擎)。Lumina 已内置阅读引擎,Ollama 仅负责 AI 摘要与对话,数据不出本机。 > > 扫描 PDF 默认使用本地 OCR。若在「设置 → 文档识别」同时填写 OpenAI 兼容 Base URL、视觉模型和 API Key,Lumina 会优先逐页上传到该服务识别;云端不可用时改用本机 RapidOCR,导入不会因此中断。 ### 日常使用 | 操作 | 方法 | |------|------| | 导入书 | 书库 → **导入**(亦可拖入书架) | | 浏览书架 | 左侧智能集合 + 右侧网格/列表;点书进入阅读 | | 阅读 / 深聊 | 打开书后点空白显隐顶栏与底栏;底栏打开段列表 / 笔记 / 深聊 / 显示(字号与纸色) | | 听总结 / 听原文 | 阅读器顶栏 **听**;播放中用迷你条暂停、倍速、上下段 | | 书内原文搜索 | 阅读器顶栏搜索或 **⌘F**(Windows:**Ctrl+F**) | | 跨书笔记 | 书库 → **全部笔记** | | 跨书搜索 | **⌘K** | | 资讯 | 顶部 **资讯** Tab → **同步 RSS** | | 导出摘要 | 阅读器 → **导出** | | 任务管理 | **设置** Tab → 查看 / 取消进行中的导入与摘要 | | 设置 | **设置** Tab(引擎启停、听书音色、语言、联网 provider、深色模式) | > **说明**:**Cursor** 预设资源走 OpenAI 兼容 HTTP 路径(`POST /v1/chat/completions`),需在设置中配置代理 Base URL 与 API Key(Cursor 官方暂无原生 chat/completions endpoint)。默认亦支持 Ollama、OpenAI、OpenRouter 等。 ### 数据在哪 全部在本机: ``` macOS: ~/Library/Application Support/Lumina/ ``` ### 常见问题 **提示「Apple 无法验证 Lumina…」?** 见上方 [首次打开](#首次打开无法验证--可能危害-mac) 三种方法;推荐右键 → **打开**。 **打不开 / 提示损坏?** 系统设置 → 隐私与安全性 → 仍要打开;或右键 Lumina → 打开。 **导入失败?** 确认 Ollama 已安装且在运行(菜单栏有 Llama 图标),并已下载 `qwen3.5:4b` 模型。 **内存较小?** 在 Ollama 中改用 `qwen3.5:2b` 或 `qwen3.5:0.8b`,并在 Lumina **设置** 中调整(若已配置模型)。 **升级后云端 API Key 失效?** 旧版曾把密钥存在 macOS 钥匙串;新版改由本机 `~/Library/Application Support/Lumina/secrets.json` 保存。若升级后联网或云端模型不可用,请在 **设置** 中重新输入 API Key 并保存一次。 **第一段摘要较慢?** 首次把模型载入内存需 30 秒~2 分钟,属正常现象。 **想加快整书摘要?** 在 **设置 → API 资源** 中编辑 Ollama 资源,将「并发」调到 2–3(默认 2)。同时为本机 Ollama 设置 `OLLAMA_NUM_PARALLEL`(建议与并发一致),例如 Homebrew: ```bash # ~/Library/LaunchAgents/homebrew.mxcl.ollama.plist 的 EnvironmentVariables 中加入 # OLLAMA_NUM_PARALLEL=2 # 然后重启 ollama serve ``` 内存吃紧或单段延迟变差时调回 1。 --- ## 开发者 面向贡献者与从源码构建的同学。普通用户请只看上一节。 ### 环境 - macOS 14+(SwiftUI)或 Windows 10/11(WinUI 3) - macOS:[Xcode 15+](https://developer.apple.com/xcode/) - Windows:[.NET 8 SDK](https://dotnet.microsoft.com/download) + Visual Studio 2022(Windows 应用开发工作负载) - [uv](https://docs.astral.sh/uv/)(Python **3.11+**) - [Ollama](https://ollama.com) + `qwen3.5:4b` ### 本地开发 ```bash git clone && cd Lumina # 安装 Python 依赖 just install # 终端 A:Sidecar just core # macOS — Xcode:打开 apps/macos/Lumina.xcodeproj → ⌘R # 或在 Scheme 中设置 LUMINA_CORE_DIR=$PWD/packages/lumina-core # Windows — 见 apps/windows/README.md # $env:LUMINA_CORE_DIR = "$PWD\packages\lumina-core" # dotnet run --project apps/windows/Lumina/Lumina.csproj -p:Platform=x64 ``` ### 测试 ```bash just test # 单元 + e2e(Mock LLM) just test-live # 完整长文 live_chunk(需本机 Ollama,人工审阅用) just test-release # 发布门禁:纯 mock 并行(~20s,与 PR 等价) ``` ### 打开发布包(给普通用户) **推荐:GitHub Actions(无需本机 Xcode)** 1. 打开仓库 **Actions → Release → Run workflow** 2. 输入版本号(如 `1.1.0`)运行 3. 在 Artifacts 或 tag Release 中下载 DMG **本机构建(需与 macOS 版本匹配的 Xcode)** macOS 15 用户:**不要**从 App Store 装最新 Xcode(可能要求 macOS 26+)。请从 [Apple 开发者下载页](https://developer.apple.com/download/all/) 安装 **Xcode 16.x**(支持 macOS 15)。 ```bash ./scripts/build-release.sh # 会先跑 just test-release 等价测试,通过后才打包 # 产出:dist/Lumina-1.1.0-macOS.dmg 与 .zip ``` 打 tag 推送后会自动构建并上传到 Release: ```bash git tag v1.1.0 && git push origin v1.1.0 ``` ### 文档 - [PRD](docs/PRD.md) · [TDD](docs/TDD.md) - [Sidecar API](packages/lumina-core/README.md) --- ## 许可证 [Polyform Noncommercial 1.0.0](LICENSE)。 个人研究、学习、爱好项目等非商业用途可以免费使用、修改和分享。把本软件用于经营,或据此提供付费产品、服务,需要版权人另行许可。 依赖库仍适用它们各自的许可证。