本システムは、Tauri 2 をホストとしたマルチプロセス・マルチレイヤー・アーキテクチャを採用しています。
graph TD
subgraph "Presentation Layer (Webview2)"
UI["Glassmorphism UI (Vanilla JS)"]
SSE_Monitor["Activity Log / SSE Update"]
end
subgraph "Application Layer (Rust / Tauri 2)"
Tauri["Tauri Core & Command Handlers"]
Tray["System Tray / Resident Mode"]
Axum["Axum (MCP SSE Server)"]
Broadcast["Tokio Broadcast (Internal Bus)"]
end
subgraph "Infrastructure Layer"
DB["SQLite + sqlite-vec"]
LS["Sidecar: llama-server"]
M["Gemma-3 GGUF (640d)"]
end
UI -- "IPC: Invoke" --> Tauri
Tauri -- "IPC: Invoke" --> UI
Axum -- "SSE: Update Events" --> UI
Axum -- "Broadcast Bus" --> Broadcast
Broadcast -- "Broadcast Bus" --> Axum
Tauri -- "SQL" --> DB
DB -- "SQL" --> Tauri
Axum -- "SQL" --> DB
DB -- "SQL" --> Axum
Tauri -- "reqwest" --> LS
Axum -- "reqwest" --> LS
LS -- "Inference" --> M
Tray -- "Control" --> UI
invoke コマンドおよび EventSource (SSE) によるリアルタイム同期。tokio::sync::broadcast を使用し、データ変更やツール呼び出しを UI へリアルタイム通知。items)の管理。llama.cpp ベースの推論サーバー。埋め込み生成 API を提供。| 処理 | 同期/非同期 | 説明 |
|---|---|---|
| データ更新通知 | 非同期 (SSE) | DB 変更時にブロードキャストし、UI を自動リロード。 |
| 埋め込み生成 | 非同期 (HTTP) | llama-server への POST リクエストによるベクトル取得。 |
| 一貫性制御 | 原子性 (Transaction) | items と vec_items を同一トランザクション内でコミット。 |
llama-server を Sidecar として起動し、/health で準備完了を確認。