Architecture

分层清楚, 数据留在它该在的地方。

StudyPulse Desktop 用 React 和 TypeScript 呈现界面,用 Tauri 连接桌面能力,再由 Rust Core 负责 Workspace、数据读写、备份、Agent 运行时和模型提供商连接。

The shape of the client

每一层都只承担 自己应该承担的事情。

UI 不直接管理文件和凭据,模型能力也不会把本地 Workspace 变成云端数据库。边界清楚,才更容易解释和维护。

01

React UI

页面、国际化、Markdown 渲染、状态查询和用户确认界面。

02

Tauri Host

命令边界、文件对话框、深链回调、系统凭据存取和窗口宿主。

03

Rust Core

Workspace、Agent、备份、工具注册表、模型客户端与跨平台业务逻辑。

04

Local Workspace

用户选择的目录,保存学习记录、资料、媒体、Notebook、产物和恢复点。

05

Providers

StudyPulse Cloud AI 或 OpenAI-compatible BYOK,只在需要 AI 的路径参与。

Data flow

一条命令, 如何抵达正确的边界。

前端只请求能力,宿主负责桌面边界,Core 才真正触碰 Workspace、Agent 和 provider。

01React action用户创建 Workspace、导出备份、运行 Agent 或保存学习记录。
02Tauri invoke调用经过 Tauri command 边界,文件路径、深链和凭据不会由浏览器页面直接处理。
03Rust CoreCore 校验路径、读写本地数据、派发工具,或在 AI 功能需要时调用选定 provider。
04Observable result结果、事件、错误和待确认状态以可见状态返回界面,用户可以继续、拒绝或补充输入。
A readable workspace

目录结构也是 产品的一部分。

Workspace 的路径、资料、数据、Agent 运行和恢复点都有明确位置。它可以被检查、备份、迁移,也可以在需要时离开应用单独理解。

  • React + TypeScript
  • Tauri 2
  • Rust 2024
  • Workspace Core
  • Agent Runtime
  • Backup / Recovery
StudyPulseWorkspace/local
Documents/       # source material
Notes/           # searchable notes
Data/            # tasks, exams, sessions
Media/           # images, audio
Agent/
  runs/         # event histories
  artifacts/    # generated files
  memory/       # workspace memory
  notebooks/    # scoped context
.studypulse/      # metadata and recovery
What stays out

架构的价值, 也在于知道什么不该进入。

桌面应用不依赖 Electron,也不对外提供浏览器 localhost 服务。生产应用的能力通过 Tauri 和 Rust Core 进入。

Boundary

浏览器预览不是桌面应用

npm run dev 只提供 Vite 前端预览,无法验证 Workspace、文件对话框、系统凭据、深链或 Agent command。

Compatibility

跨平台共享结构

macOS 与 Windows 复用同一套 React 前端、Tauri 宿主和 Rust Core;平台差异集中在安装器、系统凭据和文件打开方式。

Next boundary

再看看数据与权限如何被保护。