主题
产品概览
本文档描述 Lampio 的当前产品状态,不是规划文档。 修改时间以
git log -1 -- docs/product.md为准(手写"最后更新"必然漂移,已移除)。🔴 2026-08-29(合仓计划 T4-8)起,本文件是双端产品定位与功能清单的唯一真相源。 移动端此前有一份独立的
rvh/docs/product.md,现已收缩成指回本文件的指针 —— 理由与它当时在说的三条假话见文末「双端产品形态」。
产品定位
把你感兴趣的英文内容,变成你的英语课堂。
以阅读兴趣为驱动力,以智能学习为底层能力。用户的主观体验是"我在读我喜欢的东西",客观上他在一个精心设计的学习系统里。
我们是什么
- 带学习增强层的英文阅读工具
- 用户自带内容(网页、EPUB),我们提供沉浸式学习脚手架
- 基于 Krashen "可理解性输入"理论:最有效的语言习得发生在沉浸于略高于当前水平的真实内容中
我们不是什么
- 不是背单词工具(没有脱离语境的机械记忆)
- 不是通用浏览器(一切功能围绕英语学习增强)
- 不是教育平台(不做内容分级推荐、学习计划、打卡任务)
竞品定位
竞争对手是浏览器 / Kindle 阅读器等阅读工具,不是 Duolingo / 不背单词等教育产品。这些阅读工具都没做好"阅读中学习"这件事。整个互联网就是内容库。
设计原则
- 兴趣驱动 — 不做强制学习机制(无每日任务、无打卡、无学习计划)
- 学习自然发生 — CEFR 高亮、词汇追踪、SRS 复习、阅读统计在底层默默工作
- 感知进步不制造焦虑 — 词汇增长曲线、阅读量统计可见,但不设目标
- 日常工具化 — 多标签浏览优先,让用户真正把它当日常阅读工具
学习闭环:来源 → 阅读 → 复习 → 反思
产品骨架是一条自洽的学习闭环——读得越多,系统越懂你,学得越省力。四环对应"可理解性输入(Krashen)+ 间隔重复 + 反馈续航"的完整链路。
① 来源 — 你读什么 全网通用:访问任何网页、打开 EPUB。主动发现:推荐站点 / RSS 订阅 / 难度匹配的推荐文章。
发现/推荐功能落在 RSS 文章上——RSS 自带结构化文章流,而网页要爬首页 + 正文提取,成本高且脆弱。但这只是发现层的燃料选择:学习不限于 RSS,任何英文内容都能变成课堂,对外永不是"RSS 阅读器"。完整战略论证(30% 站点数据 / newsletter=RSS / TAM 红线)见 project memory
project_rss_discovery_layer_strategy。
② 阅读 — 读的时候学 Reader 模式 / 多标签 / 选区翻译 / TTS。CEFR 高亮把"可理解性输入"可视化,双击查词与短语习语高亮降低理解门槛,生词带语境自动入库。这一层注入任何网页,是核心壁垒。
词卡/词源卡/近义辨析背后的语言学概念(词源·词根·词族·词形 / 词目vs词根 / 一词多义消歧 / 近义·搭配·辨析三关系)统一沉淀在
docs/vocabulary-domain-knowledge.md,做词汇功能前先对齐术语。
③ 复习 — 读完记得住 带语境的生词进 SM-2 间隔复习 + 阅读中微复习,把"读到"变成"记住"。
④ 反思 — 看见成长,自然续读 阅读统计 / 词汇增长曲线 / CEFR 等级 / AI 周报把"学到了什么"温和地映照出来——不设目标、不打卡。它的另一面是反哺前三环:周报"下一步读什么"邀请回到阅读、词汇画像让推荐难度更贴(i+1)、到期生词在复习入口自然浮现。
红线:成果只用来让推荐更准、让进步可见从而内生动机,绝不变成考核 / 催促 / 打卡。这一环是 pull 不是 push——一旦开始督促,就滑向了我们明确拒绝的 Duolingo。
闭环飞轮:来源 → 阅读 → 复习 → 反思反哺 → 回到来源/阅读,真正闭合。系统侧也自转:读得多 → 词库大 → 高亮与难度匹配更准 → 推荐更懂你 → 读得更顺。跨端上桌面端承担"深读"、移动端承担"碎片复习",共享同一套数据(见文末 §双端产品形态)。
当前功能清单
核心阅读
| 功能 | 状态 | 说明 |
|---|---|---|
| 多标签浏览 | ✅ | Multi-webview,标签切换不销毁 |
| EPUB 阅读器 | ✅ | epubjs,支持目录导航 |
| Reader 模式 | ✅ | 提取正文,隐藏广告 |
| 预设导航站点 | ✅ | 24 个英文网站(News/Tech/Learning/Science) |
| RSS 订阅 | ✅ | 订阅 + 文章缓存 |
| 网页书签 | ✅ | URL 去重 |
| 粘贴文本阅读 | ✅ | 第三类阅读来源,编辑 / 阅读两态:⌘⇧V 开编辑器,⌘V 粘进来后可反复整理(不落库),点「开始阅读」才成文(reader 版式);无学习痕迹的文档可回来重新编辑。打开编辑器时预检剪贴板,像英文文本就提示一键填入 |
| 资源历史 | ✅ | 最近打开的 web/epub(粘贴文本记作 web) |
词汇学习
| 功能 | 状态 | 说明 |
|---|---|---|
| 双击查词 | ✅ | Content-script 注入,即时弹窗 |
| CEFR 高亮 | ✅ | A1-C2 颜色分级 |
| 词汇追踪 | ✅ | 自动保存到 learning_entries + 上下文句子 |
| SM-2 复习 | ✅ | 2-button Hard/Easy,序列推导 |
| 微复习 | ✅ | 阅读中弹窗内 Hard/Easy |
| 预装词库 | ✅ | 与移动端 byte-equal 共享 src-tauri/assets/lampio_dict.db(红线 #10)。当前版本看 VOCABULARY_SEED_VERSION(src-tauri/src/db/helpers.rs)—— 别再往这行填绝对数,它每轮 reseed 都会变而没人回写;要数就现查:sqlite3 src-tauri/assets/lampio_dict.db "SELECT COUNT(*), SUM(word NOT LIKE '% %'), SUM(word LIKE '% %') FROM vocabulary;" |
| MDict 导入 | ✅ | 支持第三方词典 |
翻译 & 分析
| 功能 | 状态 | 说明 |
|---|---|---|
| 选区翻译 | ✅ | 选中即译,走服务端 LLM(用户无需填 key) |
| ⛔ 已下线 | 2026-08 退役:整页译文并排会关掉查词/高亮/语境池,产品退化成"带译文的浏览器"。救援职能交给选区翻译 | |
| TTS 朗读 | ✅ | Azure Neural(服务端合成;不可达时自动落系统语音) |
| 句子分析 | ✅ | AI 分析缓存 |
云端 & 同步
| 功能 | 状态 | 说明 |
|---|---|---|
| Supabase Auth | ✅ | 注册/登录/登出/刷新 |
| 同步矩阵 | ✅ | 10 张表 Push/Pull + Merge 策略(其中 6 张与移动端共享,另 4 张桌面端专有)。逐张清单见 CLAUDE.md §3 |
| Soft-delete | ✅ | 跨端删除传播 |
| 自动同步 | ✅ | 60s 间隔 polling |
| 用户切换 | ✅ | 检测并清理数据 |
数据管理
| 功能 | 状态 | 说明 |
|---|---|---|
| CSV 导入/导出 | ✅ | 词汇数据 |
| Anki 导出 | ✅ | 复习卡片 |
| 阅读统计 | ✅ | 统计面板 |
目标用户
核心用户:有英语基础(B1+),日常需要阅读英文内容的知识工作者。
- 程序员(读技术文档、HN、GitHub)
- 研究人员(读论文、英文资料)
- 英语学习者(读新闻、小说、博客)
共同特征:已有阅读英文的需求和能力,但缺少从阅读中系统积累词汇的工具。
双端产品形态
两端是同一个产品的两种入口,不是两个产品:桌面端的入口是浏览器,移动端的入口是相机。 共享同一套数据模型与同一份预装词库(红线 #10 要求两端字节相等)。
| 维度 | 桌面端(src/ + src-tauri/) | 移动端(rvh/) |
|---|---|---|
| 技术栈 | Tauri + React + Rust | Flutter / Dart |
| 平台 | macOS / Windows | iOS / Android |
| 入口 | 浏览器 —— 网页 / EPUB / 粘贴文本 | 相机 —— 拍照 OCR |
| 承担 | 深读:沉浸式阅读 + 查词 | 碎片复习:随手采词 + 卡片 |
| 数据 | 同步矩阵 10 张表 | 其中共享 6 张(无阅读功能,故 4 张桌面端专有的不参与) |
| 算法 | SM-2(Rust + TS) | SM-2(Dart) |
| 预装词库 | src-tauri/assets/lampio_dict.db | rvh/assets/databases/lampio_dict.db(byte-equal,纯消费方) |
移动端功能清单
🔑 移动端不做阅读。 它不是一个手机上的浏览器 —— 纸质书、屏幕、任何看得见的英文, 拍一张就进同一个学习闭环。「读」那一环由桌面端承担,两端在复习环合流。
| 功能 | 状态 | 说明 |
|---|---|---|
| 拍照识词 | ✅ | 相机 / 相册 → Google ML Kit OCR |
| 图像前处理 | ✅ | OpenCV:文档边缘检测 · 透视矫正 · 背景移除 · 文字方向判定 · 质量增强 |
| CEFR 智能过滤 | ✅ | 一页几百个词里只留"跳一跳够得着"的,直接对应设计原则 2 |
| 快速分诊 | ✅ | 滑卡式标「已认识」(known_words),按 CEFR 分级推进,建立个人水平基线 |
| 生词本 + 来源追溯 | ✅ | 按书籍 / 页分组,每个词可回到拍摄原图与词位 |
| SM-2 复习 | ✅ | 卡面正面 = 拍摄原图 + 词位高亮 + 聚光灯;背面 2026-08-26 起 OCR 采的词也有语境范式(取词位所在行,见 CHANGELOG) |
| 查看语境(跨端) | ✅ | WebView 渲染桌面端同步来的快照 HTML —— 手机上也能回到那个词当初出现的网页 |
| 全局查词 | ✅ | 前缀 > 包含排序,带笔记本状态与「已认识」标记 |
| 单词发音 | ✅ | Azure Neural TTS,与桌面端复用同一 edge function 与同一 voice,两端听感一致;不可达时落系统语音 |
| 本地复习提醒 | ✅ | 每日定时本地通知(按设置的时间 + 待复习词数)。服务端推送尚未做,见 backlog §跨端整合尾项 |
| 电子书 / 分享正文导入 | ✅ | 解析 EPUB / 接收分享的正文作为语境来源(复习卡回原文取上下文),不是阅读器 |
| 读书笔记 PDF 导出 | ✅ | 单本笔记导出 |
| 跨端同步 | ✅ | Supabase Auth + 共享 6 张表,与桌面端双向 |
| 多语言界面 | ✅ | lib/l10n/:中 / 英 / 日 |
移动端的规划与 as-built 去哪看(本节只写"现在是什么"):
| 想知道 | 去处 |
|---|---|
| 移动端做过什么、怎么做的 | rvh/CHANGELOG.md |
| 还剩什么没做 | docs/plans/backlog.md · docs/plans/product-iteration-roadmap-2026h2.md |
| 跨端交接 | docs/cross-end/(编号总表在其 README) |
沿革:rvh/docs/product.md 为什么收缩成指针(2026-08-29,合仓计划 T4-8)
移动端此前有一份 14.6KB 的独立产品文档。它不只是"过期",是在说与当前产品相反的话:
| 它写着 | 事实 |
|---|---|
| 产品是「reading_vocab_helper(阅读词汇助手)—— 基于 CEFR 智能过滤的阅读场景词汇习得工具」,目标用户是「备考学生(托福/雅思/GRE)… 通过考试」 | 2026-07 已改名 Lampio;定位是"把你感兴趣的英文内容变成你的英语课堂",且本文件开头明写竞品不是 Duolingo 那类教育产品。按它的框定做需求,会一路做成我们明确拒绝的东西 |
| 「❌ 云端同步(隐私优先)」「所有数据本地存储,不依赖网络」,并把云端同步列为 P3「暂不考虑」/ v2.0.0「可能功能」 | 跨端同步是这个产品的骨架:Supabase Auth + 与桌面端共享 6 张同步表,双端整合是 §双端产品形态 的全部前提 |
| 「❌ 多语言界面(初期专注中英双语)」 | lib/l10n/ 实装了中 / 英 / 日三种 |
外加一整套停在 2025-12 的路线图("2025-12 ← 现在"、v1.0.0 MVP 进行中)、一份与 rvh/CHANGELOG.md 重复的 FEAT 完成记录、和一份没人跟踪的成功指标。
处置:移动端"现在是什么"合进上面那节;规划 / as-built 各归其位(表见上); rvh/docs/product.md 保留为指针文件而不是删除 —— 8 个文件在引用它 (rvh/README.md · rvh/QUICKSTART.md · rvh/CLAUDE.md · rvh/docs/README.md · rvh/docs/architecture.md · rvh/docs/guides/doc-maintenance-guide.md · rvh/.claude/skills/doc-sync-check/SKILL.md · rvh/docs/plans/backlog.md), 删掉就是造一批死链;而指针文件里不留任何产品论断,就不会重新长成第二本账。
🔴 同批订正的还有本文件自己的两处:「预装词库 12,291 条」(真值 18916 = 12172 单词 + 6744 短语,任何口径都对不上,且按 2026-08-28 的口径裁定这里根本不该写绝对数) 与「5 表同步」(真值 10 张,其中 6 张与移动端共享)。 说明同一份文档里"我方"那半边一样会腐烂,别只审对端那半边。