diff --git a/README.md b/README.md index 8ad1b78..609c0ee 100644 --- a/README.md +++ b/README.md @@ -16,25 +16,39 @@ ## ✨ 主な機能 -### 1. 常駐型バックエンド +### 1. Tauri v2 + Rust による軽量な基盤 -Rust で実装されており、システムトレイに常駐して MCP プロトコルのリクエストに応答します。 +- バックエンドを Rust で構築しており、OS 標準の WebView を利用するため、アプリケーションの実行サイズとメモリ使用量を低減しています。 +- システムトレイに常駐し、バックグラウンドで動作し続けることが可能です。 -### 2. SQLite によるベクトル検索 +### 2. SQLite + sqlite-vec 拡張による統合データ探索 -`sqlite-vec` 拡張を利用しており、SQLite 上で効率的なベクトル検索を行うことができます。 +- リレーショナルデータとベクトルデータを一つの SQLite ファイルで管理できます。 +- `sqlite-vec` を利用した高速なベクトル近傍検索(`MATCH` 演算子)に対応しています。 -### 3. サイドカープロセスの管理 +### 3. MCP (Model Context Protocol) 準拠 -`llama-server` を外部プロセスとして管理し、アプリケーションの起動に合わせて自動的に Embedding エンジンを準備します。 +- SSE (Server-Sent Events) をベースにした MCP プロトコルを実装しており、Claude Desktop などの外部エージェントからツールとして呼び出すことができます。 -### 4. データベース管理 +### 4. Sidecar 方式による内蔵 LLM サーバー -SeaORM を利用し、メタデータや更新日時の管理を自動化しています。 +- `llama.cpp` の `llama-server` をアプリケーション内に内蔵(Sidecar)しています。 +- 外部 API に依存せず、ローカル環境のみでテキストのベクトル変換(Embedding)や文章生成(Completion)を行えます。 -### 5. ロギング +### 5. 自動化されたデータ管理 -動作ログを適切に記録し、一定のサイズに達すると自動でローテーションを行います。 +- SeaORM を採用し、データベーススキーマの型安全な操作を実現しています。 +- `created_at` や `updated_at` の自動付与、トリガーによる更新日時の管理、WAL モードの有効化などを内部で自動処理します。 + +### 6. 運用・診断機能 + +- `tauri-plugin-log` を利用したログ記録(標準出力、および OS 標準のログディレクトリへの出力)。 +- ログファイルのサイズローテーション(10MB × 5世代)に対応しています。 + +### 7. 簡略化された開発環境構築 + +- `bun setup` を実行するだけで、必要なサイドカーバイナリや LLM モデルを自動的に収集・配置します。 +- 環境変数を `.env` ファイルで柔軟にカスタマイズ可能です。 --- @@ -62,27 +76,37 @@ ## 🏗️ システム構造 +本システムは、高い分離性と連携性を両立したアーキテクチャを採用しています。詳細な設計については [document/architecture.md](document/architecture.md) を参照してください。 + ```mermaid graph TD - subgraph "Frontend" - UI["UI (JS)"] + subgraph "Frontend Layer (WebView2)" + UI["Status UI (JS/HTML)"] end - subgraph "Backend (Rust)" - Axum["MCP Server"] - SeaORM["DB Access"] - Sidecar["Sidecar Manager"] + subgraph "Tauri Backend Layer (Rust)" + Axum["MCP Server (SSE/JSON-RPC)"] + Tray["System Tray Manager"] + Sidecar["Sidecar Manager (tokio::process)"] + ORM["SeaORM Layer"] + Llama["Llama API Client (reqwest)"] end - subgraph "External" - LS["llama-server"] - DB["SQLite"] + subgraph "External Process Layer" + LS["llama-server.exe (Sidecar)"] end - UI <--> Axum - Axum <--> SeaORM - SeaORM <--> DB - Sidecar --> LS + subgraph "Data Layer" + DB[("SQLite + sqlite-vec")] + Model["Gemma 3 300M (GGUF)"] + end + + UI <-->|Tauri Commands| Tray + Axum <--> ORM + ORM <--> DB + Llama <-->|HTTP/JSON| LS + Sidecar -->|Process Control| LS + LS -->|Memory Map| Model ``` --- @@ -91,7 +115,7 @@ ### 1. セットアップ -依存関係のインストールとバイナリのダウンロードを行います。 +プロジェクトの実行に必要なアセットを一括で準備します。環境構築の詳細は [document/development_guide.md](document/development_guide.md) に記載されています。 ```bash bun install @@ -115,6 +139,8 @@ ## 🛠️ MCP ツール +利用可能なツールとプロトコルの詳細は [document/mcp_specification.md](document/mcp_specification.md) を参照してください。 + | ツール名 | 用途 | | :--- | :--- | | `add_item_text` | 文書の追加とベクトル化 | @@ -125,13 +151,15 @@ --- -## 📘 詳細情報 +## 📘 詳細ドキュメント -詳細は `document/` 配下のファイルを参照してください。 +`document/` フォルダには、システムの理解を深めるための詳細な資料を整備しています。 -- [アーキテクチャ](document/architecture.md) -- [セットアップ詳細](document/sidecar_integration.md) -- [データベース設計](document/database.md) +- **[📖 アーキテクチャ詳細](document/architecture.md)**: 内部モジュールの責務、データフロー、ディレクトリ設計の解説。 +- **[⚙️ サイドカー統合](document/sidecar_integration.md)**: `llama.cpp` の外部プロセス実行、DLL の探索パス解決、Vulkan 対応についての詳細。 +- **[🗄️ データベース設計](document/database.md)**: スキーマ定義、`sqlite-vec` による仮想テーブル、自動更新トリガーの仕組み。 +- **[💻 開発ガイド](document/development_guide.md)**: 新機能追加の手順、テストの実行方法、リリースフロー。 +- **[🔗 MCP 仕様](document/mcp_specification.md)**: 提供するツールの詳細なスキーマ定義。 ---