# 软件架构设计文档 | 字段 | 内容 | |------|------| | 产品名称 | BanDu(伴读)— Zotero 插件 | | 中文名 | 伴读 | | 英文名 | BanDu | | 文档版本 | v0.1 | | 状态 | 草案 | | 关联文档 | [PLAN.md](./PLAN.md)、[PRD.md](./PRD.md) | --- ## 1. 架构概述 ### 1.1 架构风格 **Local-first 桌面插件架构**:核心计算与缓存均在用户机器完成;仅将段落文本与用户问题发送至用户配置的 LLM / TTS 服务。无自建后端(一期)。 ### 1.2 设计原则 | 原则 | 说明 | |------|------| | 备课一次、缓存复用 | Lecture 持久化;attachment ID + 文件哈希为缓存键 | | 增量交付 | 摘要 → beats → 逐段 → TTS 分阶段就绪,缩短 Time-to-Listen | | UI / 领域 / 集成 分离 | 降低 Zotero API 变动影响 | | Grounding 优先 | 生成内容必须可追溯到段落 ID | | 优雅降级 | refs 无效、无 timestamps、无 BBT 均有 fallback | ### 1.3 系统上下文 ``` ┌─────────────────┐ │ 用户 │ └────────┬────────┘ │ ┌──────────────▼──────────────┐ │ Zotero 7 (宿主) │ │ ┌────────────────────────┐ │ │ │ BanDu 插件 │ │ │ │ UI │ Engine │ Store │ │ │ └─────────┬──────────────┘ │ └────────────┼────────────────┘ │ ┌─────────────────┼─────────────────┐ │ │ │ ▼ ▼ ▼ ┌───────────┐ ┌────────────┐ ┌─────────────┐ │ MinerU │ │ LLM API │ │ TTS API │ │ (本地子进程)│ │ / Ollama │ │ ElevenLabs等 │ └───────────┘ └────────────┘ └─────────────┘ │ ▼ ┌───────────┐ │ SQLite + │ │ mp3 文件 │ └───────────┘ ``` --- ## 2. 逻辑分层 ``` ┌─────────────────────────────────────────────────────────┐ │ Presentation Layer(表现层) │ │ • BanduPane(Item pane 伴读页) │ │ • LibraryWindow(伴读库) │ │ • SettingsPane(设置) │ │ • PlayerController(播放状态机 +