13 KiB
13 KiB
RDAIReaderView 产品与开发规格
文档状态: Draft 0.1
最后更新: 2026-07-25
目标版本: RDAIReaderView 1.0
适用工程: ReadViewSDK
1. 文档目的
本文档锁定 RDAIReaderView 首个商用版本的产品范围、系统兼容策略、功能要求、非功能要求和发布门槛。架构、公共 API、生成式 AI 约束和测试方法分别见同目录其他文档。
2. 背景与现状
ReadViewSDK 已具备以下基础:
- RDPDFReaderView:PDF 页面、原生文本、Vision OCR、页内文本矩形、跳页与临时朗读高亮。
- RDEpubReaderView:EPUB 章节、
href、CFI、UTF-16 文本范围、搜索与位置恢复。 - RDSpeechReaderView:基于 Natural Language 的语言识别和分句、系统 TTS、断点续听、后台播放与锁屏控制。
- 最低部署版本为 iOS 15,Demo 使用 iOS 15.6。
当前缺少统一的文档语义索引、可追溯引用、书内问答、章节摘要和人物关系能力。
3. 产品目标
RDAIReaderView 1.0 的目标是提供一个默认本地运行、可选启用 Apple Foundation Models、可被 PDF 和 EPUB 阅读器复用的智能阅读能力层。
首版必须实现:
- 对书籍内容建立增量、可恢复的本地索引。
- 识别语言、句子、人物、地点、组织和关键词。
- 生成当前章节或已读范围摘要。
- 回答书内问题,并为事实性陈述提供可跳转的原文引用。
- 生成人物卡片和带证据的人物关系。
- Foundation Models 不可用时安全降级,不影响阅读、搜索和 TTS。
- 所有 AI 结果默认限制在用户已读内容,避免剧透。
4. 非目标
RDAIReaderView 1.0 不包含:
- 互联网百科、新闻或通用知识问答。
- 无来源的文学评价、复杂逻辑推理或事实推断。
- 自动改写、续写或批量导出版权书籍内容。
- 云端上传书籍全文。
- 自训练 Foundation Models Adapter。
- 自动替用户发布内容、发送消息或执行购买行为。
- 对 CBZ、漫画图片内容进行视觉剧情理解。
- 对 DRM 内容绕过访问控制或持久化超出宿主授权范围的文本。
上述能力必须在后续版本单独评审产品价值、版权、隐私和审核风险。
5. 用户价值与首版场景
5.1 阅读回顾
用户重新打开书籍时,可请求:
- 上次阅读内容的 3 句回顾。
- 当前章节摘要。
- 已读部分的关键人物变化。
输入范围默认从最近一个自然章节边界到当前阅读位置,不得包含未读段落。
5.2 书内问答
用户可以询问当前书籍,例如:
- “这一章发生了什么?”
- “张三为什么离开?”
- “这里提到的组织是什么?”
系统先检索相关段落,再基于检索结果生成答案。答案中的事实性结论必须关联一个或多个 RDAICitation。没有充分证据时必须明确拒答,而不是依赖模型常识补全。
5.3 人物与关系
人物卡片包含:
- 标准显示名和已发现的别名。
- 首次出现位置。
- 仅基于已读内容的简短介绍。
- 关键行为及证据。
- 与其他人物的关系边及证据。
关系状态分为:
confirmed:原文明确表达。possible:模型推断但证据不充分,UI 必须显示“可能”。conflicting:不同段落给出冲突信息,UI 展示冲突而非自动覆盖。
5.4 与阅读器联动
- 点击引用跳转到 PDF 页面或 EPUB CFI。
- 跳转后高亮对应原文范围。
- 摘要、答案和人物卡片可交给 RDSpeechReaderView 朗读。
- 用户调整字体、页面尺寸或翻页方式后,EPUB 引用仍应通过 CFI/文本范围恢复。
6. 功能要求
FR-001 文档导入
- AI 层只能通过
RDAIContentProvider读取宿主已授权的文本快照。 - 不直接读取宿主数据库或下载接口。
- 支持取消导入、增量恢复和内容变更检测。
FR-002 稳定定位
- PDF:使用文档 ID、页索引、页内 UTF-16 范围和归一化矩形。
- EPUB:使用文档 ID、规范化
href、UTF-16 范围和 CFI;CFI 不可用时才使用 progression 兜底。 - 所有引用必须保存源文本哈希,恢复时验证引用是否仍指向相同内容。
FR-003 文本分析
- 使用
NLLanguageRecognizer识别资源或段落语言。 - 使用
NLTokenizer切分句子,保持原始 UTF-16 偏移。 - 使用
NLTagger生成人名、地点、组织候选。 - 实体候选必须保留每次出现的原文位置,不能只保存名称。
- Natural Language 不支持或质量不足的语言,降级为字符/标点分段和关键词检索。
FR-004 分块与索引
- 中文片段建议 600-900 个字符;拉丁文字建议 300-600 词。
- 优先在章节、段落和句子边界切分,不截断组合字符。
- 相邻片段保留 1-2 句重叠,便于跨边界检索。
- 每个片段保存内容哈希、语言、顺序、定位和索引版本。
- 索引任务在后台执行,并按当前章节、相邻章节、其余内容的优先级处理。
FR-005 检索
- 首版采用关键词/BM25 风格评分与 Natural Language 语义相似度融合。
- 结果必须经过文档 ID、已读范围和访问范围过滤。
- 默认返回 3-4 个片段,最大不超过 5 个。
- 检索结果必须包含分数、匹配原因和稳定定位。
FR-006 Foundation Models 可用性
- 编译期使用可选子模块,不提高 Core 的 iOS 15 最低版本。
- 运行时检查系统版本、设备资格、Apple Intelligence 开关、模型准备状态和语言支持。
- UI 必须区分
deviceNotEligible、appleIntelligenceNotEnabled、modelNotReady、不支持语言和未知错误。 - 不可用时隐藏生成入口或提供明确说明,Natural Language 索引、搜索和 TTS 保持可用。
FR-007 结构化生成
- 摘要、答案、实体和关系均使用
@Generable结构化输出。 - 输出不得依赖字符串正则解析。
- 每个事实项必须携带检索片段 ID;生成后由代码验证 ID 是否真实存在。
- 无效引用、越权引用或未读范围引用必须删除;删除后答案无证据则转为拒答。
FR-008 防剧透
- 默认分析范围为“当前位置及之前”。
- 用户主动切换到整本书模式时必须进行一次明确确认。
- 缓存键包含阅读范围;已读摘要不得复用整本书摘要。
- 人物关系图默认只展示已读范围内已出现的人物和关系。
FR-009 缓存与恢复
- 索引、实体、摘要和问答缓存均存储在应用沙盒。
- 缓存键包含文档内容哈希、索引版本、Prompt 版本、模型版本和阅读范围。
- 内容哈希变化时,失效受影响资源,不强制删除整本书其他有效索引。
- 提供按书删除、删除全部 AI 数据和存储空间统计接口。
FR-010 用户控制
- 所有长任务支持取消。
- UI 展示索引或生成状态,不伪造确定进度。
- 用户可关闭 AI、清除 AI 缓存、选择“仅本地处理”。
- 生成失败不得阻塞翻页、搜索、标注或 TTS。
7. 系统兼容矩阵
| 环境 | 必须提供的能力 |
|---|---|
| iOS 15+ | 语言识别、分句、实体候选、关键词索引、基础检索 |
| iOS 17+ | 可选 contextual embedding;资源不存在时允许下载或降级 |
| iOS 26+ 且模型可用 | 摘要、问答、人物关系、结构化笔记 |
| 不支持 Apple Intelligence | Natural Language 能力完整可用,生成式入口降级 |
| 离线 | 已下载模型与本地索引可用;不得要求联网 |
| 扫描 PDF | 使用现有 Vision OCR;OCR 失败的页面明确标记不可分析 |
8. 非功能要求
8.1 性能
- 索引不得在主线程执行文本分析、向量计算或数据库批量写入。
- 当前章节索引优先完成,目标 P95 不超过 2 秒;具体阈值以目标真机基线校准。
- 10 万中文字的基础索引目标 P95 不超过 30 秒,允许后台增量完成。
- 索引期间阅读页面滚动/翻页帧率不得出现持续性下降。
- 单次 Foundation Models 响应首个可展示结果目标 P95 不超过 5 秒。
- AI 模块空闲 30 秒后应释放 contextual embedding 和不必要的内存缓存。
8.2 稳定性
- AI 相关 crash-free session 不低于 99.9%。
- Foundation Models 不可用或生成失败时降级成功率为 100%。
- 强制退出后索引可从最后一个已提交资源恢复。
- 数据库迁移失败时保留原数据库备份,并允许重建索引。
8.3 准确性
- 引用定位有效率不低于 99%。
- 事实性陈述有原文支持的比例不低于 98%。
- 无答案问题正确拒答率不低于 95%。
- 人物关系证据覆盖率为 100%。
- 结构化输出通过本地校验的比例不低于 99.5%。
8.4 隐私与安全
- 默认不上传书籍文本、查询、摘要、人物关系和阅读历史。
- 日志不得包含原文、用户问题全文或模型完整输出。
- 调试日志必须经过显式编译配置才能包含脱敏片段。
- AI 数据遵循宿主账户登出、删书和清除缓存生命周期。
- 文件保护等级、备份策略和共享容器由宿主配置,SDK 提供明确接口和文档。
8.5 可访问性
- 所有 AI 控件支持 VoiceOver、Dynamic Type 和 Reduce Motion。
- 状态变化使用可访问性公告,但不得连续播报索引细节。
- “AI 生成”“可能关系”“无原文证据”等状态不能只靠颜色表达。
9. 商用验收门槛
以下条件全部满足后才可发布 1.0:
- Core、NaturalLanguage、FoundationModels、PDF Adapter、EPUB Adapter 均有单元测试。
- 关键用户流有 UI 自动化测试。
- 完成至少 100 条人工标注的产品评测集。
- 所有准确性指标达到第 8.3 节门槛。
- 在最低支持系统、主流支持设备和至少两代 Apple Intelligence 设备上完成真机验证。
- 完成模型不可用、未下载、语言不支持、上下文溢出和生成取消测试。
- 完成隐私清单、App Store 隐私申报和 AI 功能说明审核。
- TestFlight 灰度无 P0/P1 缺陷,AI 相关 crash-free session 达标。
- 现有 PDF、EPUB、搜索、标注和 TTS 回归全部通过。
10. 实施路线
以下排期按 2 名 iOS 工程师、1 名测试工程师、产品/内容评测兼职参与估算,总周期 12-14 周。单人开发建议按 18-22 周估算。
| 周期 | 阶段 | 主要交付 | 退出条件 |
|---|---|---|---|
| 第 1 周 | 合同与工程骨架 | 五份开发文档、Podspec、目录、CI Scheme、ADR | 文档评审通过,空库支持 iOS 15 编译 |
| 第 2-3 周 | Core 与存储 | 公共模型、SQLite Schema、迁移、Job/Checkpoint、删除接口 | 崩溃恢复和增量失效单测通过 |
| 第 4-5 周 | Natural Language | 分句、语言、实体候选、词法/语义检索 | 基础检索评测达标,TTS 范围无漂移 |
| 第 6 周 | PDF Adapter | 原生文本/OCR 快照、Locator、引用跳转和高亮 | PDF 引用恢复率达到门槛 |
| 第 7 周 | EPUB Adapter | href/CFI/rangeCFI 快照、Locator、跳转和高亮 | 重排后引用恢复率达到门槛 |
| 第 8-9 周 | Foundation Models | 可用性、摘要、问答、结构化输出、引用校验 | 不可用降级与 AI 评测通过 |
| 第 10 周 | 人物关系 | 人物、别名、关系、冲突和证据合并 | 人物/关系指标达到门槛 |
| 第 11 周 | 商用 UI | AI 面板、状态、取消、引用、防剧透、无障碍 | 核心 UI 自动化通过 |
| 第 12 周 | 性能与隐私 | 内存、耗电、数据库、日志、清除数据、隐私说明 | 无 P0/P1,性能与隐私门禁通过 |
| 第 13-14 周 | TestFlight 灰度 | 5%→25%→100% 分阶段发布 | Crash-free 和质量反馈持续达标 |
每阶段要求:
- 功能代码、单元测试和文档同一阶段完成。
- 公共 API 变更必须先更新 API 文档。
- Prompt 变更必须增加版本并跑 AI 回归集。
- 阶段退出条件未满足时不得把未验证能力带入下一阶段默认开启。
11. 版本范围
1.0
- 本地索引。
- 章节摘要。
- 带引用的书内问答。
- 人物卡片和基础人物关系。
- PDF/EPUB 引用跳转。
- 防剧透和完整降级。
1.1 候选
- 关系时间线与冲突关系展示。
- 用户划线/笔记参与问答。
- 多本书对照,仅限用户主动选择的本地书籍。
- 可选 Core ML/MLX 或云端 Provider。
2.0 候选
- 多模态图片理解。
- 漫画/图文书内容理解。
- 经过独立法律和产品评审的云端增强能力。