プロジェクト名を sqlitevector から TelosDB に変更する。これに伴い、設定ファイル、ドキュメント、およびルートフォルダ名の更新を行う。
package.json の name フィールドの変更。tauri.conf.json の productName, identifier, title の変更。README.md のタイトルおよび説明文の更新。move).graph TD
Root["sqlitevector/"]
Root --> PKG["package.json (name: sqlitevector)"]
Root --> README["README.md (Title: SQLite Vector)"]
Root --> Backend["src/backend/"]
Backend --> Tauri["tauri.conf.json (productName: sqlitevector)"]
graph TD
Root["TelosDB/"]
Root --> PKG["package.json (name: telosdb)"]
Root --> README["README.md (Title: TelosDB)"]
Root --> Backend["src/backend/"]
Backend --> Tauri["tauri.conf.json (productName: TelosDB)"]
implementation_plan.md の作成 (完了)package.json の変更tauri.conf.json の変更README.md の更新lint および test の実行ルートフォルダの変更は、エージェントが動作しているパスに影響するため慎重に行う必要がある。 プログラム内部で sqlitevector という文字列をハードコードしている箇所がないか再度確認する。
日時: 2026-02-12 21:06 対象: src-backend/.cargo/config.toml
フォルダ構成変更(src-tauri → src-backend)後、tauri dev ビルドが失敗。
resource path `..\..\bin\llama-server-x86_64-pc-windows-msvc.exe` doesn't exist
graph TD
A["src-backend/.cargo/config.toml"] -->|"target-dir = ../../target"| B["%DEV_ROOT%/target ❌"]
A -->|"target-dir = ../target"| C["%PROJECT_ROOT%/target ✅"]
D["tauri.conf.json externalBin"] -->|"../bin/llama-server"| E["パス解決が target-dir 基準でずれる"]
E --> F["../../bin/llama-server として解決 ❌"]
| ファイル | 変更前 | 変更後 |
|---|---|---|
src-backend/.cargo/config.toml |
target-dir = "../../target" |
target-dir = "../target" |
cargo check: ✅ 成功(Exit code: 0)cargo clippy: ✅ 成功(既存のwarning 6件のみ、エラーなし)日時: 2026-02-12 21:18 対象: src-frontend/index.html, src-backend/src/lib.rs
ユーザーがGUI上でSQLiteのテーブル構成(スキーマ)や登録内容(データ)を直接確認できるように、左サイドバーとテーブルビューを追加する。
get_table_list: sqlite_masterからテーブル一覧を取得。get_table_schema: PRAGMA table_infoから定義を取得。get_table_data: ページネーション対応のレコード取得(SQLインジェクション対策済み)。analyze_nesting.jsの指摘に基づき、diagnose_environment関数のネストをガード条件を用いて解消。graph LR
subgraph Frontend
Sidebar["サイドバー (テーブル選択)"]
Tabs["メイン (Data/Schema)"]
end
subgraph Backend
CmdList["get_table_list"]
CmdData["get_table_data"]
CmdSchema["get_table_schema"]
end
subgraph Data
DB[("SQLite (items, vec_items)")]
end
Sidebar --> CmdList
Tabs --> CmdSchema
Tabs --> CmdData
CmdList & CmdSchema & CmdData --> DB
cargo check: ✅ 成功cargo clippy: ✅ 成功 (既存警告のみ)analyze_nesting.js: lib.rs の最大ネストが 5 -> 4 に改善。tauri dev: GUI上で全テーブルの表示、ページネーション、タブ切替が正常に動作することを確認。日時: 2026-02-12 21:40 対象: src-backend/src/db.rs, src-backend/src/lib.rs, src-backend/src/mcp/handlers.rs, src-backend/src/entities/items.rs
ベクトル検索エンジンを Alex Garcia 版 (sqlite-vec) から sqliteai 版 (sqlite-vector) へ移行した。 これにより、仮想テーブルを使用しない BLOB カラム方式への統合と、より安定した API (vector_quantize_scan) の利用が可能になった。
vec_items 仮想テーブルを廃止。items テーブルに embedding BLOB カラムを追加。vector_init を実行してカラムをベクトルとして認識させる。MATCH 句から vector_quantize_scan による JOIN 方式に変更。@sqliteai/sqlite-vector-win32-x86_64 から vector.dll を取得し bin/ に配置。vector.dll および新パッケージ構成に対応。graph LR
subgraph "Before"
items[items table]
vec_items[vec_items virtual table]
items -- JOIN -- vec_items
end
subgraph "After"
items_new[items table + embedding BLOB]
end
cargo check 時、handlers.rs で embedding_bytes 変数が未定義のまま使用されていた問題を修正。lib.rs の resolve_extension_path において不要な可変変数 mut 警告を解消。cargo check: Passlib.rs で Level 5 (既存ロジック由来) を確認したが、移行ロジック自体は平易。count_lines: 各ファイルとも許容範囲内。sqlite-vec (Alex Garcia版) から sqlite-vector (sqliteai/sqlite-vector版) への移行に伴い、SQLite拡張機能 (vector.dll) が正常にロードできず、アプリケーションがランタイムでクラッシュ(Panic)する問題を調査した。
sqlite-vector (BLOB保存方式) への移行を決定。db.rs で load_extension を実行した際、「指定されたモジュールが見つかりません」というエラー(Windowsエラーコード 0x7E)が発生。libgcc_s_seh-1.dll などの外部ランタイムに依存しており、標準的な環境ではロードに失敗しやすい。sqliteai/sqlite-vector の公式リポジトリを tmp/sqlite-vector にクローン。zig cc (Clang) を用いたビルドを試みたが、AVX2命令の定数初期化や MSVC ABI 固有の関数衝突でコンパイルエラーが発生。distance-avx2.c: popcount_lut の初期化をインライン化。libs/fp16/bitcasts.h: Clangビルド時の MSVC 組み込み関数使用を回避し Union 方式にフォールバック。sqlite-vector.c: strcasecmp マクロを Windows 用に定義。-static 指定ビルドした vector.dll を bin/ に生成したが、依然として SQLite 側からロードした際に「モジュールが見つからない」と判定される。sqlite3_... 関数の実体を見つけられていない。sqlx のワーカースレッド内で落ちるため、詳細なエラーメッセージの取得が困難。tauri dev 実行時のカレントディレクトリと DLL サーチパスの一致。sqlite-vector は CREATE VIRTUAL TABLE ではなく、通常のテーブルに BLOB 型で保存する。sqlite3_vector_init である必要がある(自動認識されない場合は明示が必要)。bin/vector.dll に自前ビルド版、node_modules にプリビルド版がある。sqlite3.dll を bin/ に配置し、拡張機能がリンクできるようにする。db.rs でのロードパスを、環境変数などを利用した堅牢な絶対パス指定に変更する。dumpbin /IMPORTS 等で、生成した DLL が何を外部に求めているか最終確認する。graph TD
A[App Start] --> B[Initialize DB]
B --> C{Load extension}
C -- Failed --> D[Runtime Panic]
C -- Target --> E[vector.dll]
E -- depends on --> F[sqlite3.dll]
E -- depends on --> G[VCRuntime]
F -- Missing? --> D
vector.dll ロード不具合の解決策と、Windows 環境特有のビルド・配置手順を公式ドキュメントおよび README に記録した。
docs/sqlite-vector-build.md を作成。
libgcc 等)の課題を記述。sqlite3.dll を自前ビルドしてリンクする解決策を詳述。zig cc を使用したビルドコマンドを記録。PATH を更新する実装意図を解説。bin/ フォルダの重要性とビルドドキュメントへのリンクを明記。graph TD
subgraph "Development"
Src["sqlite-vector Source"] -- "zig cc + link sqlite3.dll" --> VectorDLL["vector.dll"]
SqliteSrc["sqlite3.c"] -- "zig cc" --> SqliteDLL["sqlite3.dll"]
end
subgraph "Runtime (TelosDB)"
App["TelosDB.exe"] -- "Add bin/ to PATH" --> Env["Runtime Environment"]
Env -- "load_extension" --> VectorDLL
VectorDLL -- "symbol lookup" --> SqliteDLL
end
将来の保守担当者が、なぜ bin/ に sqlite3.dll が存在するのか、また DLL を更新する際にどのような手順が必要なのかを容易に把握できるようになった。