Skip to content

Architecture

xingranya edited this page Jul 9, 2026 · 1 revision

架构设计

技术栈

层级 技术 职责
前端 React 19 + TypeScript + Tailwind CSS 4 用户界面和交互
UI 组件 Radix UI + shadcn/ui 可访问的 UI 组件库
桌面框架 Tauri 2 原生桌面能力、安全沙箱
后端 Rust GitHub Token 安全存储、SQLite 操作、系统调用
数据库 SQLite 本地数据持久化
包管理 pnpm Monorepo 跨包依赖管理

数据流

┌─────────────────────────────────────────────────────┐
│                    React 前端                        │
│  ┌──────────┐  ┌──────────┐  ┌──────────────────┐  │
│  │ 仓库列表  │  │ AI 搜索   │  │ 知识画像 / 标签  │  │
│  └────┬─────┘  └────┬─────┘  └────────┬─────────┘  │
│       │              │                 │             │
│       └──────────────┼─────────────────┘             │
│                      │ invoke()                      │
├──────────────────────┼───────────────────────────────┤
│                 Tauri 命令层(Rust)                   │
│  ┌──────────┐  ┌──────────┐  ┌──────────────────┐  │
│  │ auth.rs  │  │github.rs │  │   storage.rs     │  │
│  │ Keychain │  │ GitHub   │  │   SQLite CRUD    │  │
│  │ 读写     │  │ API 调用  │  │                  │  │
│  └──────────┘  └──────────┘  └──────────────────┘  │
├─────────────────────────────────────────────────────┤
│              共享包(TypeScript)                      │
│  domain · storage · github · ai · search · worker    │
├─────────────────────────────────────────────────────┤
│                  本地 SQLite                          │
└─────────────────────────────────────────────────────┘
         ↕                         ↕
    GitHub API                 AI Provider

模块职责

前端 (apps/desktop/src/)

  • 按功能模块拆分:repositories(仓库管理)、knowledge(AI 知识库)、sidebar(导航侧栏)
  • 通过 @tauri-apps/apiinvoke 调用 Rust 后端命令
  • 使用 React Hooks 管理状态,无全局状态库

Tauri 命令层 (apps/desktop/src-tauri/src/)

模块 文件 职责
认证 auth.rs GitHub Token 的 Keychain 读写
GitHub github.rs GitHub API 调用(Stars 同步、README 抓取)
存储 storage.rs SQLite CRUD 操作

共享包 (packages/)

职责
domain 领领域类型定义(RepositoryFacts、RepositoryAnnotation 等)
storage SQLite Schema 定义和迁移脚本
github GitHub API 接入边界
ai AI Provider 抽象层(支持多服务商切换)
search 搜索 DSL 和查询结构
worker 同步、README 缓存和 AI 摘要任务编排

关键领域模型

模型 说明
RepositoryFacts GitHub 仓库元信息(owner、name、stars、topics、syncStatus)
RepositoryAnnotation 用户注解(tags、notes、readStatus)
ReadmeDocument README 原始 Markdown 与缓存元信息
AiRepositoryDocument AI 生成的中文摘要、关键词、建议标签
RepoQuery 统一查询结构,支持 keyword / natural_language / hybrid 模式

数据库

SQLite Schema 由 packages/storage/migrations/ 下的 SQL 文件管理:

  • 后端启动时执行完整、幂等的初始化脚本
  • 当前阶段不做旧数据库迁移,缺少必需表或字段时直接重建

Clone this wiki locally