diff --git a/document/01_system_overview.md b/document/01_system_overview.md index 2ba0e47..75be892 100644 --- a/document/01_system_overview.md +++ b/document/01_system_overview.md @@ -17,6 +17,8 @@ | **データ登録** | 文章自動ベクトル化 | 文章とメタデータを入力すると、内部 LLM がベクトルを生成し、保存。 | | **検索** | セマンティック検索 | 自然言語による類似度検索。意味的に近い文書を距離順に抽出。 | | **インターフェース** | MCP Server | SSE プロトコルを用いた JSON-RPC 2.0 インターフェースの提供。 | +| **常駐モード** | システムトレイ | ウィンドウを閉じてもバックグラウンドで MCP サーバーが稼働を継続。 | +| **可視化** | アクティビティログ | MCP 経由のツール呼び出しを UI 上でリアルタイムに表示。 | | **GUI** | 管理コンソール | データベースの閲覧、検索、システムステータスの監視。 | ## 4. システム特性 diff --git a/document/02_architecture_design.md b/document/02_architecture_design.md index 6e57df8..ada0fc3 100644 --- a/document/02_architecture_design.md +++ b/document/02_architecture_design.md @@ -7,14 +7,15 @@ ```mermaid graph TD subgraph "Presentation Layer (Webview2)" - UI[Frontend UI: HTML/CSS/JS] + UI[Glassmorphism UI] + SSE_Monitor[Activity Log / SSE] end subgraph "Application Layer (Rust / Tauri Core)" Tauri[Tauri Backend] + Tray[System Tray / Resident Mode] Axum[Axum MCP Server] Llama[Llama Client / HTTP] - Sidecar[Sidecar Process Manager] end subgraph "Infrastruture Layer" @@ -29,7 +30,8 @@ Axum <--> DB Tauri <--> Llama Llama <-->|HTTP| LS - Sidecar -->|Life Cycle Control| LS + App([Windows App]) -->|Resident| Tray + Tray -->|Show/Hide| UI LS -->|Inference| M ``` @@ -43,14 +45,14 @@ ### 2.2 Application Layer -- **Tauri Core**: アプリのライフサイクル、トレイ、ウィンドウ制御、環境変数の管理。 +- **Tauri Core**: アプリのライフサイクル、システムトレイ、ウィンドウ制御、環境変数の管理。 - **Axum (MCP Server)**: Model Context Protocol (MCP) に準拠した SSE (Server-Sent Events) サーバー。 - **Llama Client**: `reqwest` を使用した API 通信。Sidecar との疎通とリトライを制御。 -- **Sidecar Manager**: `llama-server` バイナリの起動、DLL パス解決、子プロセスの死活監視。 +- **Sidecar Manager**: `llama-server` プロセスの起動(`bin` フォルダ内)、DLL パスの解決、子プロセスの死活監視。 ### 2.3 Infrastructure Layer -- **SQLite**: `SeaORM` を介したリレーショナルデータ管理。 +- **SQLite**: `sqlx` を使用した非同期リレーショナルデータ管理。 - **sqlite-vec**: `vec0` 仮想テーブルによるベクトル検索エンジン(DLL 拡張)。 - **Sidecar (llama-server)**: `llama.cpp` ベースの推論エンジン。 @@ -64,7 +66,7 @@ ## 4. ライフサイクル管理 -1. **Setup**: Tauri 起動時に Sidecar フォルダを特定し、DLL パスを補強。 +1. **Setup**: Tauri 起動時に `bin` フォルダを特定し、DLL パスを補強。 2. **Spawn**: `llama-server` プロセスの起動とヘルスチェック待機。 -3. **Running**: MCP サーバーと UI が連携。 -4. **Shutdown**: アプリケーション終了時に子プロセス (Sidecar) を確実にシグナル通知ののち Kill。 +3. **Running**: MCP サーバーと UI が連携。ウィンドウを閉じてもトレイに常駐。 +4. **Shutdown**: トレイメニューからの「終了」時に子プロセス (Sidecar) を確実にシグナル通知ののち Kill。 diff --git a/document/03_database_specification.md b/document/03_database_specification.md index 2cd26a9..441d193 100644 --- a/document/03_database_specification.md +++ b/document/03_database_specification.md @@ -20,7 +20,7 @@ vec_items { integer id PK "items.id と同一" - blob embedding "768-dim Vector (f32 LE)" + blob embedding "640-dim Vector (f32 LE)" } ``` @@ -42,8 +42,8 @@ - **ID**: `items.id` と同期。 - **ベクトル構成**: - - **次元数**: 768次元 (Gemma 3 300M モデルに準拠) - - **データ型**: `FLOAT[768]` (内部的には BLOB 表現) + - **次元数**: 640次元 (Gemma 3 270M モデル等、使用モデルから自動検知) + - **データ型**: `FLOAT[640]` (内部的には BLOB 表現) - **保存形式**: IEEE 754 32bit Float (Little Endian) バイト列 ## 4. 検索仕様 @@ -72,4 +72,5 @@ ## 5. 整合性制御 - **トランザクション**: アイテム登録時、`items` への登録が成功した後にのみ、関連付けられた ID で `vec_items` への書き込みが行われます。 +- **動的次元検知 & 再作成**: 起動時にモデルの次元数と `vec_items` の定義を比較し、不整合があれば自動で再作成(ヒーリング)を行います。 - **トリガー**: `items` テーブルに `updated_at` 自動更新用の SQLite トリガーを実装。 diff --git a/document/04_mcp_api_specification.md b/document/04_mcp_api_specification.md index f9b1ff2..6991739 100644 --- a/document/04_mcp_api_specification.md +++ b/document/04_mcp_api_specification.md @@ -14,7 +14,7 @@ ## 2. 提供ツール定義 (Tools) > [!NOTE] -> 現在、`search_text` のみが実装・公開されています。その他のツールは順次実装予定です。 +> 検索 (`search_text`) に加え、登録・更新・削除の全 CRUD ツールが実装・公開されています。 ### 2.1 `add_item_text` (登録) diff --git a/document/05_sidecar_integration.md b/document/05_sidecar_integration.md index 1e2ecef..3095fa8 100644 --- a/document/05_sidecar_integration.md +++ b/document/05_sidecar_integration.md @@ -10,14 +10,14 @@ - **名称**: `llama-server` - **アーキテクチャ**: `x86_64-pc-windows-msvc` (Windows 環境時) -- **モデル**: Gemma-3-270m-it (Q4_Q_K_M.gguf) +- **モデル**: Gemma-3-270m-it (Q4_K_M.gguf) - 640次元 ### 2.2 DLL 依存解決 (Windows) Windows 環境での DLL 地獄(Dependency Hell)を回避するため、`build.rs` による自動供給システムを導入しています。 -1. **自動コピー**: ビルド時に `sqlite-vec` 等の依存 DLL を `node_modules` から抽出し、ターゲットディレクトリ(`target/debug/bin`)へ自動配置します。 -2. **ランタイム解決**: `lib.rs` 内で実行ファイルの相対パスから `bin` フォルダを特定し、`vec0.dll` を動的に読み込みます。 +1. **自動コピー**: ビルド時に `sqlite-vec` 等の依存 DLL を `node_modules` から抽出し、ターゲットディレクトリ(`target/release` およびその `deps`)へ自動配置します。 +2. **ランタイム解決**: `lib.rs` 内で実行ファイルの親ディレクトリにある `bin` フォルダを特定し、`vec0.dll` を動的に読み込みます。 ## 3. 推論エンジン設定 diff --git a/document/06_development_guide.md b/document/06_development_guide.md index de030d8..790fca5 100644 --- a/document/06_development_guide.md +++ b/document/06_development_guide.md @@ -29,8 +29,9 @@ - `data/`: データベースファイル (`vector.db`) の永続化レイヤー。 - `logs/`: 開発・診断用のログ出力。 - `resources/`: バンドルされる静的リソース(アイコン等)。 -- `src/backend/src/mcp.rs`: MCP の全ツールロジック。 -- `src/backend/src/db.rs`: スキーマ管理。 +- `src-tauri/src/mcp.rs`: MCP の全ツールロジック。 +- `src-tauri/src/db.rs`: スキーマ管理・非同期 SQLx ロジック。 +- `src-tauri/src/lib.rs`: ライフサイクル・常駐・トレイ制御。 - `test/`: 統合テスト一式。 --- @@ -64,7 +65,6 @@ コアロジック(DB・MCP・LLM連係)のテストです。 ```bash -cd src/backend cargo test ``` @@ -86,10 +86,7 @@ 以下のコマンドを実行すると、新しいリリースブランチ(`release/vX.Y.Z`)が作成され、`package.json`, `tauri.conf.json`, `Cargo.toml` のバージョンが一括更新・コミットされます。 -```bash -bun run release <新バージョン番号> -# 例: bun run release 0.2.0 -``` +バージョンバンプとタグ付けを手動またはツール(今回の v0.2.5 のように)で実施します。 ### 2. インストーラーのビルド