# ChatPapers 双模式集成需求规格说明书 | 字段 | 内容 | |------|------| | 文档名称 | 双模式集成 PRD(方案 A) | | 插件名称 | ChatPapers for Zotero | | 新增模式 | BanDu(伴读) | | 文档版本 | v0.1 | | 状态 | 草案 | | 目标平台 | Zotero 9(macOS / Windows) | | 关联文档 | [ChatPapers 需求](../requirements.md)、[BanDu 策划](./PLAN.md)、[BanDu PRD](./PRD.md)、[BanDu 架构](./ARCHITECTURE.md) | > **本文档定位**:在**不拆分、不 fork** 的前提下,将 BanDu(伴读)作为 ChatPapers 插件的**第二种工作模式**纳入同一产品。 > 原有 ChatPapers 对话模式的需求以 [requirements.md](../requirements.md) 为准,本文仅描述**集成策略、共享边界、伴读模式增量需求**。 --- ## 1. 产品概述 ### 1.1 一句话定位 **ChatPapers** = Zotero 内的 AI 论文助手:**对话模式**用于即时问答与总结,**伴读模式**用于 AI 老师式音频授课与知识沉淀——同一插件、同一论文库、两种互补工作流。 ### 1.2 双模式心智模型 ``` ┌─────────────────────────────────┐ │ ChatPapers for Zotero │ │ (一个插件 · 一套 Zotero 集成) │ └───────────────┬─────────────────┘ │ ┌─────────────────────┴─────────────────────┐ │ │ ▼ ▼ ┌──────────────────────┐ ┌──────────────────────┐ │ 模式 A:对话 Chat │ │ 模式 B:伴读 BanDu │ │ 「我现在想问什么」 │ │ 「请老师先备课再讲」 │ ├──────────────────────┤ ├──────────────────────┤ │ 即时问答 / 一键总结 │ │ 备课 → 听课 → 报告 │ │ 文字流式回复 │ │ 整体讲解 / 逐段精读 │ │ 选区提问 │ │ TTS 音频 + 播放器 │ │ 会话 JSON 持久化 │ │ Lecture SQLite 缓存 │ └──────────────────────┘ └──────────────────────┘ │ │ └─────────────────────┬─────────────────────┘ ▼ 共享:PDF 附件 · LLM 配置 · 子笔记 · BibTeX ``` ### 1.3 为什么采用双模式(方案 A) | 考量 | 说明 | |------|------| | 用户价值互补 | Chat 适合「带着问题读」;伴读适合「先听一遍再精读」 | | 工程复用 | LLM 客户端、PDF 附件解析、笔记回写、引用导出、设置页已在 Chat 模式实现 | | 安装成本 | 用户只装一个插件,不重复配置 Provider / API Key | | 数据闭环 | 伴读报告与 Chat 笔记均写入同一 Zotero Item,写作时可统一检索 | | 品牌演进 | 短期保留 ChatPapers 主品牌;伴读作为子品牌「BanDu」在 UI 内露出 | ### 1.4 产品目标(伴读模式增量) | 目标 | 说明 | |------|------| | G-B1 降低读论文门槛 | 10–20 分钟整体讲解把握论文核心 | | G-B2 支持深度精读 | 逐段三层讲解 + 按需逐句解释 | | G-B3 闭环沉淀知识 | 伴读报告、问答、重点标记写入 Zotero 子笔记 | | G-B4 零迁移成本 | 论文库沿用 Zotero,PDF 不出本地 | ### 1.5 成功指标(伴读 MVP 验证期) | 指标 | 目标 | |------|------| | 整体讲解完成率 | ≥ 60% 启动后听完 | | 单篇备课可听时间 | 摘要 + beats 生成后 ≤ 2 min 可开听 | | 问答首字延迟 | ≤ 3 s(文字) | | 解析可用率 | 典型 8 页 NLP 论文 ≥ 90% 段落无需手动修正 | | 模式切换无摩擦 | 同一 Item 可在 Chat / 伴读 pane 间切换,互不丢状态 | --- ## 2. 范围定义 ### 2.1 一期包含(伴读模式 MVP) - 在现有 ChatPapers 插件内新增 Item pane **「伴读」** 标签页(与现有 **「ChatPapers」** 标签页并存) - 读取 Zotero PDF 附件 → 本地结构化解析 → 段落树 - 备课流水线:全文摘要 + 整体讲解 beats + 逐段三层讲解;增量备课 - TTS 合成 + 本地 mp3 缓存 - 播放器:整体讲解 / 逐段精读、跳播、语速、文字面板高亮、PDF 页跳转 - 文字提问(锚定 beat / 段落 / 句子 / 全局)→ 文字 + 语音回答 - 伴读报告 + 参考文献卡片 → Zotero 子笔记 - 伴读专属设置项(TTS、教师风格);LLM 设置与 Chat 模式**共享** - 断点续播、本地 Lecture 缓存 ### 2.2 一期明确不包含 | 功能 | 计划版本 | 备注 | |------|----------|------| | 语音输入(ASR)、barge-in | v1.1 | 两模式均不涉及 | | 章节边界软提示、难点句清单 | v1.1 | 伴读专属 | | PDF viewer 内段落级高亮 | v1.1 | 伴读专属 | | 检验模式(老师考读者) | v2 | 伴读专属 | | Chat 模式重构或合并 UI | — | Chat 保持独立 pane | | 独立 BanDu 插件安装包 | — | 不 fork | ### 2.3 共享能力边界(不重复建设) 以下能力由 ChatPapers 基座提供,伴读模式**直接复用**,不在伴读 MVP 中重写: | 共享模块 | 现有实现 | 伴读用法 | |----------|----------|----------| | Item pane 注册机制 | `readerPane.ts` | 注册第二个 section | | PDF 附件定位 | `extractor.findPdfAttachment` | 获取路径;伴读另需 file hash | | LLM 流式客户端 | `llm/client.ts` | 备课 + 问答 | | Provider 预设 | `llm/providers.ts` | 共享同一套 LLM 配置 | | 子笔记创建 | `zotero/notes.ts` | 伴读报告写入 | | BibTeX / 引用导出 | `zotero/citeExport.ts` | 参考文献卡片 | | PDF 选区读取 | `pdf/selection.ts` | 「解释这句」入口 | | 偏好设置框架 | `ui/prefs.ts` | 扩展 TTS / 教师风格分组 | | Markdown 渲染 | `utils/markdown.ts` | 报告预览(可选) | ### 2.4 模式专属能力(伴读新建) | 模块 | 说明 | 代码归属(建议) | |------|------|------------------| | 结构化 PDF 解析 | MinerU → 段落树 | `src/modules/bandu/infrastructure/pdf/` | | 备课流水线 | 摘要 / beats / 三层讲解 | `src/modules/bandu/application/` | | TTS 客户端 | mp3 + timestamps | `src/modules/bandu/infrastructure/tts/` | | SQLite 存储 | Lecture / 进度 / Q&A | `src/modules/bandu/infrastructure/storage/` | | RAG 检索 | FTS5 段落检索 | `src/modules/bandu/infrastructure/rag/` | | 播放器 UI | `