Files
ReadViewSDK/Doc/RDAIReaderView/RDAIReaderView-SPEC.md
T
2026-07-27 21:43:13 +08:00

13 KiB
Raw Blame History

RDAIReaderView 产品与开发规格

文档状态: Draft 0.1
最后更新: 2026-07-25
目标版本: RDAIReaderView 1.0
适用工程: ReadViewSDK

1. 文档目的

本文档锁定 RDAIReaderView 首个商用版本的产品范围、系统兼容策略、功能要求、非功能要求和发布门槛。架构、公共 API、生成式 AI 约束和测试方法分别见同目录其他文档。

2. 背景与现状

ReadViewSDK 已具备以下基础:

  • RDPDFReaderViewPDF 页面、原生文本、Vision OCR、页内文本矩形、跳页与临时朗读高亮。
  • RDEpubReaderViewEPUB 章节、href、CFI、UTF-16 文本范围、搜索与位置恢复。
  • RDSpeechReaderView:基于 Natural Language 的语言识别和分句、系统 TTS、断点续听、后台播放与锁屏控制。
  • 最低部署版本为 iOS 15Demo 使用 iOS 15.6。

当前缺少统一的文档语义索引、可追溯引用、书内问答、章节摘要和人物关系能力。

3. 产品目标

RDAIReaderView 1.0 的目标是提供一个默认本地运行、可选启用 Apple Foundation Models、可被 PDF 和 EPUB 阅读器复用的智能阅读能力层。

首版必须实现:

  1. 对书籍内容建立增量、可恢复的本地索引。
  2. 识别语言、句子、人物、地点、组织和关键词。
  3. 生成当前章节或已读范围摘要。
  4. 回答书内问题,并为事实性陈述提供可跳转的原文引用。
  5. 生成人物卡片和带证据的人物关系。
  6. Foundation Models 不可用时安全降级,不影响阅读、搜索和 TTS。
  7. 所有 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 范围和 CFICFI 不可用时才使用 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 必须区分 deviceNotEligibleappleIntelligenceNotEnabledmodelNotReady、不支持语言和未知错误。
  • 不可用时隐藏生成入口或提供明确说明,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 候选

  • 多模态图片理解。
  • 漫画/图文书内容理解。
  • 经过独立法律和产品评审的云端增强能力。

12. 依赖文档