内容: - 四大模块总览(Search, File Prep, Admin, File Mgmt) - 每个模块的详细分析(组件、API、数据流、数据库) - 模块间交互关系和依赖关系 - 已知问题和改进建议 - API 调用链示例 - 技术栈总结 四大模块: 1. Search - 多模式搜索 + 历史管理 2. File Prep/Processing - Pipeline 处理 + 状态追踪 3. Admin - 系统监控 + 配置管理 4. File Management - 文件上传/下载/移动 关键问题: - 双 API 架构复杂度 - 状态同步不一致 - 缩略图缓存无淘汰策略 - Pipeline 进度轮询效率低 - Admin 配置无验证 改进建议: - 短期: WebSocket 状态推送、LRU Cache、批量查询 - 中期: 统一 API Gateway、Resumable Upload - 长期: IndexedDB、离线模式、插件系统
14 KiB
14 KiB
Momentry Studio Tauri GUI 架构文档
生成时间: 2026-10-10 版本: v1.0.0
1. 四大模块总览
┌─────────────────────────────────────────────────────────────────────┐
│ Momentry Studio GUI │
│ (Vue 3 + TypeScript + Vite) │
└────────────────────────────┬────────────────────────────────────────┘
│
┌────────────────────┼────────────────────┐
│ │ │
▼ ▼ ▼
┌───────────────┐ ┌───────────────┐ ┌───────────────┐ ┌──────────────┐
│ Search Module │ │ File Prep/ │ │ Admin Module │ │ File Mgmt │
│ │ │ Processing │ │ │ │ Module │
│ SearchView │ │ LibraryView │ │ AdminView │ │ ClientView │
└───────┬───────┘ └───────┬───────┘ └───────┬───────┘ └──────┬───────┘
│ │ │ │
└──────────────────┼──────────────────┼──────────────────┘
│ │
┌──────────┴──────────┐ │
│ │ │
▼ ▼ ▼
┌───────────────┐ ┌──────────────┐ ┌──────────────┐
│ Core API │ │ MarkBase API │ │ Local SQLite │
│ (localhost: │ │ (localhost: │ │ (demo.sqlite)│
│ 3002) │ │ 11438) │ │ │
└───────┬───────┘ └───────┬──────┘ └──────────────┘
│ │
│ /api/v1/* │ /api/v2/*
│ (Momentry Core) │ (MarkBase Core)
│ │
└────────────────────┼────────────────────┐
│ │
┌──────────┴──────────┐ │
│ Studio Proxy │ │
│ (localhost:8888) │ │
│ - v1/v2 gateway │ │
│ - API key inject │ │
│ - Face thumbnail │ │
│ - Search history │ │
│ - Bookmarks │ │
└─────────────────────┘ │
│
┌──────────────────────────────┘
│
┌───────────┴────────────┐
│ Tauri IPC Commands │
│ (19 Rust commands) │
│ - search_llm_smart │
│ - get_files │
│ - get_people │
│ - register_file │
│ - process_file │
│ - update_identity │
│ - get_thumbnail │
│ - etc. │
└────────────────────────┘
2. 模块详解
2.1 Search 模块
职责: 提供多模式搜索功能(Keyword, Semantic, Visual, Agent, People)
前端组件:
SearchView.vue- 主搜索界面VideoPlayer.vue- 搜索结果播放useSearchHistory.ts- 搜索历史管理useBookmarks.ts- 书签管理
API 端点:
// v1 端点 (Momentry Core API)
/api/v1/search/keyword // 关键字搜索
/api/v1/search/semantic // 语义搜索
/api/v1/search/llm-smart // LLM 智能搜索
/api/v1/search/people // 人物搜索
/api/v1/agents/search // Agent 搜索
/api/v1/search/vlm/scenes // Scene VLM 搜索
/api/v1/search/vlm/traces // Trace VLM 搜索
// v1 端点 (本地处理)
/api/v1/search-history // 搜索历史
/api/v1/bookmarks // 书签
数据流:
用户输入 → SearchView → apiCall() → Core API
↓
返回结果 → mergeResults() → 结果卡片
↓
History/Bookmarks → SQLite (demo.sqlite)
数据库:
search_history(SQLite) - 搜索历史bookmarks(SQLite) - 书签
关键特性:
- 多模式搜索: Keyword, Semantic, Visual, Agent, People 五种模式
- OCR 合并: 相似文本自动合并,减少重复
- 搜索历史: SQLite 持久化,支持 Pin/Rename/Delete
- 书签系统: 快速访问常用搜索
2.2 文件准备/处理模块
职责: 管理原始档案的处理流程,从注册到完成
前端组件:
LibraryView.vue- 文件列表和处理控制PeopleView.vue- 人物管理PersonDetailView.vue- 人物详情
API 端点:
// v1 端点
/api/v1/files/register // 注册文件
/api/v1/file/{uuid}/process // 处理文件
/api/v1/unregister // 注销文件
/api/v1/file/{uuid}/sync-status // 同步状态
/api/v1/progress/{uuid} // 处理进度
/api/v1/stats/pipeline/{uuid} // Pipeline 统计
/api/v1/stats/file/{uuid} // 文件统计
/api/v1/file/{uuid}/processor-counts // 处理器统计
/api/v1/re-scan // 重新扫描
处理 Pipeline:
Rule 1 Ingestion → Face Tracing → Face Dedup →
TKG Nodes → TKG Edges → Rule 2 Ingestion →
VLM Summary → Scene VLM
状态机:
registered → scanning → keyword_ready →
semantic_ready → face_mgmt_ready → agent_ready
数据库:
videos(PostgreSQL) - 文件注册表monitor_jobs(PostgreSQL) - 处理任务processor_status(PostgreSQL) - 处理器状态
关键特性:
- 状态追踪: 6 个状态,实时更新
- 进度监控: Pipeline 进度 + 系统资源
- 批量操作: 批量注册、扫描、注销
- 处理器控制: 单独重跑 ASR/OCR/Face 等
2.3 Admin 监控及参数模块
职责: 系统监控、配置管理、服务控制
前端组件:
AdminView.vue- 管理界面
API 端点:
// v1 端点
/api/v1/health // 健康检查
/api/v1/system-stats/validate // 系统验证
/api/v1/admin/config // 系统配置
// v2 端点
/api/v2/admin/system-stats // 系统统计
/api/v2/admin/users // 用户列表
/api/v2/admin/shares // 共享列表
/api/v2/service/start // 启动服务
/api/v2/service/stop // 停止服务
配置文件:
// admin_config.json
{
"vlm_prompts": {...},
"llm_config": {...},
"processor_config": {...},
"filter_config": {...},
"search": {...}
}
关键特性:
- 系统监控: CPU、内存、GPU、ANE 实时监控
- 服务管理: Core API、MarkBase、MBE、Proxy 启停
- 配置编辑: VLM Prompts、LLM、Processor、Filter 配置
- 语言包管理: 多语言支持
2.4 File Management 模块
职责: 原始档案的上传、下载、移动、删除
前端组件:
ClientView.vue- 文件浏览器
API 端点:
// v2 端点
/api/v2/myfiles/{user}/folders // 文件夹列表
/api/v2/myfiles/{user}/files // 文件列表
/api/v2/upload-unlimited/{user} // 上传文件
/api/v2/myfiles/{user}/preview/{filename} // 文件预览
/api/v2/myfiles/{user}/move // 移动文件
/api/v2/myfiles/{user}/tags // 标签管理
数据库:
files(MarkBase PostgreSQL) - 文件元数据folders(MarkBase PostgreSQL) - 文件夹结构
关键特性:
- 文件浏览器: 文件夹导航、搜索、排序
- 上传管理: 多文件上传、进度显示
- 文件操作: 重命名、移动、删除
- 预览功能: 多格式预览
- 拖拽支持: 文件拖拽移动
3. 数据流图
3.1 搜索数据流
User Query → SearchView → apiCall()
↓
Core API (PostgreSQL + Qdrant + MongoDB)
↓
Results → VideoPlayer
↓
History/Bookmarks → SQLite
3.2 文件处理数据流
File Selection → register_file()
↓
videos (PostgreSQL) → Pipeline
↓
Processor Output (*.json) → Ingestion
↓
Status Update → LibraryView
3.3 Admin 配置数据流
Admin Edit → admin_config.json
↓
Service Control (MarkBase API)
Config Reload (Core API)
4. 模块间交互
4.1 依赖关系
Search Module
├──> File Management (缩略图、视频流)
├──> Admin Module (VLM 配置)
└──> Core API (搜索数据)
File Prep/Processing
├──> File Management (原始文件)
├──> Admin Module (处理器配置)
└──> Core API (Pipeline)
Admin Module
├──> Core API (配置)
├──> MarkBase API (服务控制)
└──> File Management (上传路径)
File Management
├──> Admin Module (用户权限)
└──> MarkBase API (文件存储)
4.2 数据共享
-
全局 Store:
store.tsfilesCache- 文件列表thumbnailsCache- 缩略图profilesCache- 人物头像pipelineStatsCache- 处理进度
-
SQLite 共享:
search_history- Search 模块bookmarks- Search 模块app_users- Admin + File Management
5. 技术栈
| 层次 | 技术 | 用途 |
|---|---|---|
| 前端框架 | Vue 3 + TypeScript + Vite | 响应式 UI |
| 桌面框架 | Tauri 2 | 原生桌面应用 |
| 路由 | Vue Router | SPA 路由 |
| 状态管理 | Pinia-like (store.ts) | 全局状态 |
| API 层 | Dual-mode (IPC + HTTP) | 桌面/浏览器双模式 |
| 代理层 | Axum (Rust) | API Gateway |
| 数据库 | PostgreSQL + Qdrant + MongoDB | Core 数据存储 |
| 缓存 | Redis | 任务队列 |
| 本地存储 | SQLite (rusqlite) | 历史和书签 |
6. 已知问题
6.1 双 API 架构复杂度
- 问题:
/api/v1/*→ Core API,/api/v2/*→ MarkBase API,易混淆 - 影响: 文档维护成本高,开发者需要记住命名空间
- 优先级: 中
6.2 状态同步不一致
- 问题:
fileStatusCache前端和 Core API 状态不同步 - 影响: 用户看到的处理状态滞后
- 优先级: 高
6.3 缩略图缓存无淘汰策略
- 问题: 缩略图缓存无 LRU 淘汰,内存占用持续增长
- 影响: 长时间使用后内存占用过高
- 优先级: 中
6.4 Pipeline 进度轮询效率低
- 问题: 每个文件独立轮询,并发处理时 API 压力大
- 影响: 系统负载高
- 优先级: 高
6.5 搜索历史功能受限
- 问题: 限制 30 条,无全文搜索
- 影响: 用户无法按时间/模式过滤历史
- 优先级: 低
6.6 VideoPlayer 性能问题
- 问题: 大视频加载慢,Seek 卡顿
- 影响: 用户体验差
- 优先级: 中
6.7 Admin 配置无验证
- 问题:
admin_config.json编辑无前端验证 - 影响: 可能保存错误配置导致服务崩溃
- 优先级: 高
6.8 文件上传无断点续传
- 问题: 大文件上传失败需重头开始
- 影响: 网络不稳定时体验极差
- 优先级: 中
7. 改进建议
7.1 短期(1-2 周)
- ✅ 实现 WebSocket 状态推送,替代轮询
- ✅ 增加 LRU Cache 用于缩略图
- ✅ 增加批量状态查询 API
- ✅ 实现 Admin 配置前端验证
7.2 中期(1-2 月)
- 统一 API Gateway,简化双 API
- 实现 Resumable Upload
- 增强搜索历史功能
- VideoPlayer 性能优化
7.3 长期(3-6 月)
- 迁移到 IndexedDB 持久化
- 实现离线模式
- 增加插件系统
- 实现多租户架构
8. API 调用链示例
8.1 搜索场景
用户输入 "find red car"
↓
apiCall('search_llm_smart', {query: 'find red car'})
↓
[Tauri] invoke('search_llm_smart')
[Browser] httpCall → Proxy :8888 → Core API :3002
↓
Core API 查询 PostgreSQL + Qdrant
↓
返回 20 条结果
↓
前端加载缩略图 → 显示卡片
8.2 文件处理场景
用户选择文件 → register_file()
↓
Core API 创建 videos 记录 + monitor_job
↓
process_file() → 触发 Pipeline
↓
pollPipelineProgress() → 显示进度条
↓
Pipeline 完成 → 状态更新为 'agent_ready'
9. 总结
Momentry Studio 是一个复杂的 Tauri GUI 应用,集成了四大核心模块:
- Search - 多模式搜索 + 历史管理
- File Prep/Processing - Pipeline 处理 + 状态追踪
- Admin - 系统监控 + 配置管理
- File Management - 文件上传/下载/移动
通过双 API 架构(Core API + MarkBase API)实现了功能解耦,但也增加了维护成本。当前主要问题集中在状态同步、性能优化和用户体验改进。
最后更新: 2026-10-10 维护者: Momentry Studio Team