Newer
Older
TelosDB / document / 02_architecture_design.md

アーキテクチャ設計仕様書 (Architecture Design Specification)

1. 全体構造

本システムは、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

2. 各層の定義

2.1 Presentation Layer

  • 技術: Vanilla HTML, CSS, JavaScript (Vite 5+)
  • 役割: システムステータスの可視化、セマンティック検索 GUI、MCP アクティビティ監視。
  • 通信: invoke コマンドおよび EventSource (SSE) によるリアルタイム同期。

2.2 Application Layer

  • Tauri Core: プロセスのライフサイクル管理、システムトレイ、サイドカー制御。
  • Axum (MCP Server): ポート 3001 で稼働する MCP SSE サーバー。セッション管理と JSON-RPC ディスパッチを担当。
  • Data Bus: tokio::sync::broadcast を使用し、データ変更やツール呼び出しを UI へリアルタイム通知。

2.3 Infrastructure Layer

  • SQLite: メタデータ(items)の管理。
  • sqlite-vec (vec0): 仮想テーブルによるベクトル検索。動的な次元検知(640次元)に対応。
  • Sidecar (llama-server): llama.cpp ベースの推論サーバー。埋め込み生成 API を提供。

3. プロセス同期モデル

処理 同期/非同期 説明
データ更新通知 非同期 (SSE) DB 変更時にブロードキャストし、UI を自動リロード。
埋め込み生成 非同期 (HTTP) llama-server への POST リクエストによるベクトル取得。
一貫性制御 原子性 (Transaction) itemsvec_items を同一トランザクション内でコミット。

4. ライフサイクル管理

  1. Setup: 起動時にモデル・DLL・DB パスを確定。
  2. Spawn: llama-server を Sidecar として起動し、/health で準備完了を確認。
  3. Sync: DB のベクトル不整合(欠落や次元違い)をチェックし、必要に応じて自動修復。
  4. Running: MCP サーバーが外部接続を待機。トレイ常駐によるバックグラウンド動作。
  5. Shutdown: トレイメニューからの終了時、全子プロセスをクリーンに停止。