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

288 lines
13 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 必须区分 `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 候选
- 多模态图片理解。
- 漫画/图文书内容理解。
- 经过独立法律和产品评审的云端增强能力。
## 12. 依赖文档
- [RDAIReaderView-ARCHITECTURE.md](RDAIReaderView-ARCHITECTURE.md)
- [RDAIReaderView-API.md](RDAIReaderView-API.md)
- [RDAIReaderView-AI-SPEC.md](RDAIReaderView-AI-SPEC.md)
- [RDAIReaderView-TEST-PLAN.md](RDAIReaderView-TEST-PLAN.md)