技术参考

Luma 多端架构

一套 React 界面通过 Repository 与 Platform Adapter 覆盖 macOS、Windows、iOS 和 Android。

从产品仓库自动生成 源文档更新于 2026-07-31 在 GitHub 查看源文档 ↗

Luma 多端架构#

Luma 使用一套 React/Vite 界面,通过 Tauri 2 交付 macOS、Windows、iOS 和 Android。平台差异必须留在适配层,不能复制四份阅读器组件。

目标结构#

apps/
  web/           共享 React UI;浏览器开发入口
  luma/          Tauri 2 原生壳与平台配置
  api/           当前 Node 本地服务;迁移期间保留
  sync-server/   远端操作日志与 provider 服务

packages/        后续逐步抽离的纯 TypeScript 业务包
  reader-core/   正文、翻译块、阅读状态
  data-core/     Repository 接口、模型与迁移
  sync-core/     HLC、字段时钟、冲突合并

不可破坏的边界#

  1. apps/web 不直接判断 macOS、Windows、iOS 或 Android;只调用平台接口。
  2. UI 不直接依赖 better-sqlite3,也不直接持有文件系统路径。
  3. API Key、同步 token 使用系统安全存储,不进入 SQLite 或前端构建产物。
  4. 每台设备保留自己的 SQLite;服务器只交换操作和可选的大对象。
  5. 正文、媒体、翻译与向量索引默认按设备缓存,不强制同步。
  6. 桌面、平板和手机共用组件,只允许响应式布局和平台能力有差异。

迁移阶段#

Stage 1:原生壳与平台边界#

  • Tauri 2 壳复用 apps/web 的 Vite 输出。
  • 保留浏览器模式和当前 Node API,确保现有功能不回退。
  • 建立 platform 接口,统一 API transport、外链、剪贴板和平台识别。
  • 增加桌面、平板、手机的安全区和输入方式适配。

Stage 2:本地 Repository#

  • 将 feed、item、knowledge、sync 的 SQL 从 Hono handler 中抽到 Repository。
  • 浏览器开发模式使用 HTTP Repository。
  • Tauri 使用原生 SQLite Repository。
  • 数据库 schema 和迁移由共享版本号管理。

Stage 3:后台与系统能力#

  • 桌面端支持常驻抓取、菜单、快捷键、自动更新。
  • iOS/Android 使用系统允许的后台刷新,不假设进程永久存活。
  • 接入系统分享、通知、文件选择和安全密钥存储。

Stage 4:发布#

  • macOS 为第一发布目标,随后 Windows。
  • iPad 先完成双栏和键盘/触控,再覆盖 iPhone。
  • Android 与 iPhone 共用移动布局,只保留系统返回、分享和文件入口差异。

功能可用性#

能力 Web 开发 macOS Windows iOS/iPadOS Android
共享阅读 UI
本地 SQLite 当前由 API 提供 原生 原生 原生 原生
离线阅读 部分
后台持续抓取 浏览器限制 系统调度 系统调度
Obsidian 目录双向同步 本机 API 文件授权后 文档授权后
Luma Sync