-
Notifications
You must be signed in to change notification settings - Fork 15
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
- 按功能模块拆分:
repositories(仓库管理)、knowledge(AI 知识库)、sidebar(导航侧栏) - 通过
@tauri-apps/api的invoke调用 Rust 后端命令 - 使用 React Hooks 管理状态,无全局状态库
| 模块 | 文件 | 职责 |
|---|---|---|
| 认证 | auth.rs |
GitHub Token 的 Keychain 读写 |
| GitHub | github.rs |
GitHub API 调用(Stars 同步、README 抓取) |
| 存储 | storage.rs |
SQLite CRUD 操作 |
| 包 | 职责 |
|---|---|
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 文件管理:
- 后端启动时执行完整、幂等的初始化脚本
- 当前阶段不做旧数据库迁移,缺少必需表或字段时直接重建